我正在尝试在 Matlab 中构建一个串口设备。我有 2 个设备“COM1”和“COM2”。“COM1”异步将数据写入串行端口“COM2”。我有“COM1”和“COM2”的替代名称,如下所示:
global serialcom
serialcom=serial('COM1'); %Serial Communication portal COM 1
global testdummy
testdummy=serial('COM2'); %Serial Communication portal COM 2
触发 testdummy 函数的testdummy的输入缓冲区中的字节数为 2,这是使用 testdummy.BytesAvailableFcnCount 字段 (belo) 指定的。
testdummy.BytesAvailableFcnMode = 'Byte';
testdummy.BytesAvailableFcnCount = 2;
testdummy.BytesAvailableFcn = @testdummycomfunction;
我在testdummy端有一个函数“testdummyfunction” ,它是使用 Matlab 中的 BytesAvailable 回调属性触发的。这个函数的结构如下:
function testdummyfunction(testdummy,BytesAvailable)
% TESTDUMMYFUNCTION(testdummy,...BytesAvailable)
% INPUTS:
% TESTDUMMY:refers to the serial port testdummy
% BYTESAVAILABLE:Refers to the callback function 'BytesAvailablefunction'
global serialcom;
data_string=fscanf(serialcom); %Reads the data sent form serialcom
end
现在,假设我将一个长度大于 2 个字节(比如 10 个字节)的字符串从串行通信端异步打印到 testdummy 端。虽然我知道当 testdummy 的输入缓冲区中有 2 个字节时会触发 testdummyfunction,但data_string是否也会包含一个 2 字节长的字符串?如果没有,如何确保它只读取 2 个字节的数据?