我正在研究从我的uart线出来的数据; 我有一个与uart连接的PSoC 4,它发送得很好(所有时间,每个数据之间有20ms的延迟),然后我有matlab接收数据。
我正在使用fscanf(s, '%d')
函数,它返回uart发送的大约3个数字,例如下面的例子:
s = serial('COM3'); %assigns the object s to serial port
set(s, 'InputBufferSize', 1024); %number of bytes in inout buffer
set(s, 'FlowControl', 'hardware');
set(s, 'BaudRate', 115200);
set(s, 'Parity', 'none');
set(s, 'DataBits', 8);
set(s, 'StopBit', 1);
set(s, 'Timeout',0.5);
%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(['Port Setup Done!!',num2str(prop)]);
%opens the serial port
disp('Running');
fopen(s);
b = fscanf(s, '%d')
-------------------------------------------------------------------------------------------
Matlab terminal:
b =
-213
-205
-215
该程序获取3个数字,我只想获取第一个(-213) 顺便说一下,这个数字可以是16000到-16000之间的任何数字
祝你好运
答案 0 :(得分:0)
您可以使用fread读取特定数量的字节,而不是使用fscanf。
https://uk.mathworks.com/help/matlab/ref/serial.fread.html
在s = serial('COM3')的情况下,要写入一个字节,你会写:
b = fread(s, 1, 'uchar');
其中参数为:obj,size,'precision'
P.S。完成后不要忘记fclose(s)
串口,这样你可以再次运行程序而不会出现“Obj已被打开”错误:))
一切顺利......