Timeout problem in matlab
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Matt Kindig
il 24 Mag 2013
On what line is the timeout error thrown? Have you verified that the scan_s1 and scan_s2 are incorrect?
It looks like you are setting the 'Terminator' to empty. In my experience, a timeout error can arise when the device does not send a specified terminator string that Matlab recognizes. I'm not sure how it would respond with an empty terminator specified.
Risposta accettata
Jan
il 25 Mag 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 Commenti
Jan
il 26 Mag 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);
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Data Import and Analysis in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!