Reading from serial port

8 visualizaciones (últimos 30 días)
Akash
Akash el 3 de Feb. de 2011
Hi, I need to interface MATLAB with a COM port to read data from sensors. Here is my MATLAB code.
s = serial('COM5');
s.BaudRate = 115200;
fopen(s);
tic
for i = 1:25
an = fscanf(s,'%c');
end
toc
fclose(s);
I have used "tic" "toc" for measuring execution time to read 25 values and its almost 5 seconds. This is pretty slow. 115200 is the max Baud Rate.
Is there a better/faster way to read from a serial port???
Thanks all

Respuestas (1)

Ankit Desai
Ankit Desai el 9 de Feb. de 2011
Akash,
You might be getting the data slowly. The delay might be caused by fscanf waiting for data to be available. As listed in the documentation - fscanf waits for data to be available until a timeout occurs.
You can confirm the same by checking that there 50 bytes available (25 bytes for character values + 25 bytes for terminator values) before you call the fscanf(s) in the for loop.
You can do so by checking the BytesAvailable field of the object.
s.BytesAvailable
I tried the same and was able to do so in < 1 second.
Hope this helps,
-Ankit

Categorías

Más información sobre Startup and Shutdown en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by