如何通过Matlab正确读取串行数据

时间:2013-01-09 10:40:56

标签: matlab serial-port

我正在使用Matlab从通过微处理器的串口读取数据。数据采用十六进制格式,每个样本为4个字节(32位)。当我读取这些数据时,我会得到一些与传输数据不匹配的随机数字序列。以下是我的代码

s = serial('COM16'); %assigns the object s to serial port

set(s, 'InputBufferSize', 128); %number of bytes in inout buffer
set(s, 'FlowControl', 'none');
set(s, 'BaudRate', 921600);
set(s, 'Parity', 'none');
set(s, 'DataBits', 8);
set(s, 'StopBit', 1);
set(s, 'Timeout',100);
%clc;

disp(get(s,'Name'));
prop(1)=(get(s,'BaudRate'));
prop(2)=(get(s,'DataBits'));
prop(3)=(get(s, 'StopBit'));
prop(4)=(get(s, 'InputBufferSize'));

disp([num2str(prop)]);

fopen(s);           %opens the serial port

data = fscanf(s);

fclose(s); %close the serial port

请告诉我我做错了什么,我能得到正确的心音。 感谢

2 个答案:

答案 0 :(得分:3)

您可以将波特率降低到更标准的值,例如115200.

您也可以尝试使用终端程序。

答案 1 :(得分:0)

serialOne=serial('COM1', 'BaudRate', 9600);

fopen(serialOne);

fprintf(serialOne,'textFile.txt'); <<<---this is for write  (for read, use fscanf)

fclose(serialOne);