I am attempting a running the following program and am getting strange results. After opening the serial port, the Arduino sends a "Ready" command to matlab. Then it sends a uint16 (2 bytes) value of 500 to the arduino. The arduino simply echoes what was received back to matlab in HEX.
When I run this I expect readData to equal 0x01F4, but I get 0xC0F4. Any suggestions?
Arduino CODE:
byte incomingByte1;
void setup(){
pinMode(2,OUTPUT);
Serial.begin(115200);
Serial.println("Ready");
} void loop() {
digitalWrite(2,LOW); //turn off LED
delay(500);if (Serial.available() > 0) {
digitalWrite(2,HIGH); //flash LED everytime data is available
delay(500);
incomingByte1 = Serial.read(); //read incoming data
Serial.println(incomingByte1,HEX); //print data
}
}
Matlab CODE:
clear
clc
s=serial('COM7','BaudRate',115200);
fopen(s);readData=fscanf(s) %reads "Ready" writedata=uint16(500); %0x01F4 fwrite(s,writedata,'uint16') %write data
for i=1:2 %read 2 lines of data readData=fscanf(s) end
fclose(s); delete(s);
OUTPUT:
readData =
Ready
readData =
F4
readData =
C0
No products are associated with this question.
0 Comments