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

如何通过Matlab正确读取串行数据,matlab,serial-port,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'); se

我正在使用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
请告诉我我做错了什么,这样我才能得到正确的心音。
谢谢

您可以将波特率降低到更标准的水平,如115200

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

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

fopen(serialOne);

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

fclose(serialOne);
fopen(serialOne);
fprintf(serialOne,'textFile.txt');你能调整微控制器的波特率吗?如果是的话,你能试着降低波特率吗?921600相当高。可能是115200?还有,你试过终端程序吗?当然,我会试试。实际上,这个算法要求我的UART速度非常高,这就是为什么我把它设置为921600。你说的终端程序是什么意思?我不知道。你能解释一下吗?我意识到我没有写免费终端程序的名字。是的,以备将来的访客需要。