如何通过Matlab正确读取串行数据
我正在使用Matlab从一个串行端口通过微处理器读取数据。数据为十六进制格式,每个样本为4字节(32位)。当我读取这些数据时,我会得到一些与传输数据不匹配的随机数字序列。下面是我的代码如何通过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
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。你说的终端程序是什么意思?我不知道。你能解释一下吗?我意识到我没有写免费终端程序的名字。是的,以备将来的访客需要。