필터 지우기
필터 지우기

How to read data from a serial device

조회 수: 2 (최근 30일)
eventhorizon01
eventhorizon01 2011년 9월 26일
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