我对Matlab串行组件中的终结者有疑问。
% Open a port
port = serial (comPort, 'Baudrate', 38400, 'Flowcontrol', 'none' ...
,'Parity', 'none', 'StopBits', 1, 'DataBits', 8 ...
,'Terminator', {'CR/LF', 'CR'}...
);
fopen (port);
initCmd = '/1ZR';
% initialize pump
fprintf(port, '%s\n', initCmd);
reply = fscanf(port)
我的泵的通讯协议要求发送回车并回复回车和换行(我希望我在示例代码中正确定义。
当我现在发送初始化命令时,泵启动正常并发送以下reply
:
>> reply =
ÿ/0@
>> int8(reply)
ans =
127 47 48 64 3 13 10
但即使回复包含CR/LF
:
Warning: Unsuccessful read: A timeout occurred before the Terminator was reached.
除了reply
之外,127
是正确的。根据手册,我不希望这样。 MATLAB是否完全解释了答案错误?
问题出在哪里?数字13 10
的最后一个表示终结符,但MATLAB无法检测到它?