How to read data every second in serial communications using matlab

2 次查看(过去 30 天)
Hello, I would like to read data every one second from the device but i am unable to do it. I have tried with the following code. Here is the code...
s=serial('COM1','BAU',9600,'parity','none','databits',8,'stopbits',1,'terminator','CR/LF')
fopen(s)
fid2=fopen('pressure1.txt','w')
fprintf(fid2,'%s\t\t\t %s\n','time','pressure')
fprintf(s,'%s\r\n','PR1')
while true
out2=fscanf(s)
sr2=datestr(clock,0)
if ~isempty(out2)
fprintf(fid2,'%s: %s\n',sr2,out2)
pause(1)
end
end
fclose(fid2)

回答(1 个)

Walter Roberson
Walter Roberson 2015-8-31
fprintf(s,'PR1')
The default format is '%s\n' . Each \n is replaced with the terminator you configured so you do not need to specifically send \r\n when you have configured CR/LF as the terminator. Notice you did not specifically send \r\n in your later fprintf
  2 个评论
sushma gunde
sushma gunde 2015-8-31
编辑:sushma gunde 2015-8-31
@walter I tried using this also but i dont find any result. whenever i restart my device i will get the output like this:
time pressure measuremnt1
26-Aug-2015 16:51:19 0, 7.5800E-05,5, 2.0000E-02
and when i dont restart my device then my ouput looks like this :
warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
out2 =
''
sr2 =
31-Aug-2015 16:22:26
sushma gunde
sushma gunde 2015-8-31
@walter can you suggest me some ways how to get the output every second. for example:
26-Aug-2015 16:51:19 0, 7.5800E-05,5, 2.0000E-02
26-Aug-2015 16:51:20 0, 7.5800E-05,5, 2.0000E-02
26-Aug-2015 16:51:21 0, 7.5800E-05,5, 2.0000E-02

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by