How can I read the whole input buffer of a serial port object?
29 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Valentino Tomasic
am 22 Jun. 2015
Kommentiert: Walter Roberson
am 22 Jun. 2015
I am communicating with a device via rs-232 and I would like to read the whole iput buffer of the serial object at once.
What I already tried was:
s = serial('com1');
fopen(s);
fscanf(s,'%f',s.bytesavailable);
So when I run the code I only get the last value instead of the whole input buffer.
Do you have a clue what the issue could be?
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 22 Jun. 2015
s = serial('com1');
fopen(s);
data = char(fread(s, s.bytesavailable));
sscanf(data,'%f');
Are you certain that you want to try to read floating point text numbers when the buffer might happen to end in the middle of a number?? For text you normally want to work line-by-line (fgetl() or fgets()) or else fscanf() without a count (allowing the scanning to pause for more characters to be received)
0 Kommentare
Weitere Antworten (1)
Valentino Tomasic
am 22 Jun. 2015
1 Kommentar
Walter Roberson
am 22 Jun. 2015
Is the input terminated somehow? linefeed? Or even just a comma between entries? If so then you should be programming a bytesavailablefcn callback. That callback can grab values from the serial port and store them away for a later run of the processing loop. For example you could keep a circular buffer, such as is shown blog or file exchange
Siehe auch
Kategorien
Mehr zu Instrument Connection and Communication finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!