Timeout problem in matlab

44 views (last 30 days)
Jim
Jim on 24 May 2013
Hi,
I am trying to read data through serial communication in matlab
I am reading 2 bytes of data
First byte is zero for most of the times and 2nd byte contains information.
I am getting timeout error Is there any command to read data starting with zeros Warning: Unsuccessful read: A timeout occurred.
Code:
nexys = serial('COM1', 'BaudRate', 9600, 'Parity', 'odd', 'Terminator', '', 'Timeout', 1);
fopen(nexys);
myNum = 4563;
%fprintf(nexys, 'd1539'); %Fungerar
%fprintf(nexys, 'd%4d', myNum); %Fungerar
for i=1:2
fprintf(nexys, 's');
scan_s1 = fscanf(nexys,'%s')-0;
fprintf(nexys, 't');
scan_s2 = fscanf(nexys,'%s')-0;
end
Can anybody suggest something about this
Thanks Jim
  2 Comments
Jim
Jim on 24 May 2013
Hi Matt kindig,
Thanks for ur reply. Even when I am using LF as terminator I am getting the same error: Yes, I think matlab does not recognizes the data I am sending Is this because 1st byte contains 00000000? Is there any command to recognize zeros in matlab
Thanks in advance

Sign in to comment.

Accepted Answer

Jan
Jan on 25 May 2013
You try to read a string but do not define a terminator. Even the the LF terminator, the string might not be terminated, when no LF appears in the data stream. So are you sure, that FSCANF for a string is what you want?
FREAD read all values, while the import of a string might be impeded by a zero byte, because they terminate strings in C.
  2 Comments
Jan
Jan on 26 May 2013
@Jim: Subtracting 0 from a CHAR array converts the type to DOUBLE:
c = '123'
d = c + 0
class(d)
Alternative, which is less funky:
d = double(c);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!