How to read data from a serial device

2 次查看(过去 30 天)
Hello, a MATLAB beginner here. I have a weather station which can communicate serial. I tried to communicate with it by Tera Term and it works. I referred to the manual for commands; when I type in C, it gives me the temperature. The device uses the following settings: BAUD: 9600,4800,2400, 1200, 600 or 300 Data Bits: 7 Parity: Even Stop Bits: 2 Flow Control: Hardware
I used 1,200 in Tera Term and it worked. The problem is: how do I do this in MATLAB?
Here's the code I've made so far, I tried it out but I didn't get any output.
Here's my program
%----------------------------------------
s = serial('COM1');
set(s,'BaudRate',1200); %set BAUD
%set(s,'DataBits',7,'Name','WStation')
set(s,'DataBits',7)
set(s,'Parity','none') %set parity to none
set(s,'StopBits',2) %set stop bits to 2
set(s,'FlowControl','Hardware')
set(s,'Terminator','LF') %set the terminator to LF
fopen(s)
%Honestly I have no idea what to put here next.
%I want to read the temperature in every 3 mins or so and to be
%able to plot it against time. Does anyone know which syntax I will %use? Thanks
fclose(s)
clear s
Thanks in advance!

回答(1 个)

Nuno Martins
Nuno Martins 2011-9-26
Hello, Before you open the serial device you should create a log file:
logFile = fopen(logFileName, 'wt');
The command to read from a serial device is:
serial_string = fscanf(SerialObj);
date_string = datestr(now);
fprintf(logFile,[date_string ' - ' serial_string]);
If you want to read the data each 3 minutes I would recommend you to use a timer ( http://www.mathworks.com/help/techdoc/ref/timer.html )
Hope it helps.

类别

Help CenterFile Exchange 中查找有关 Data Acquisition Toolbox Supported Hardware 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by