1

我正嘗試在Matlab中構建一個串行端口設備。我有2個設備'COM1'和'COM2'。 'COM1'ASYNCHROUNOUSLY將數據寫入串口'COM2'。我有關於「COM1」和「COM2」替代名稱,如下所示:使用Matlab中的字節可用函數在串行端口之間讀取

global serialcom 
serialcom=serial('COM1'); %Serial Communication portal COM 1 
global testdummy 
testdummy=serial('COM2'); %Serial Communication portal COM 2 

字節在testdummy這觸發testdummyfunction是2的輸入緩衝器的數量,並且這是使用testdummy指定。 BytesAvailableFcnCount字段(belo)。

testdummy.BytesAvailableFcnMode = 'Byte'; 
testdummy.BytesAvailableFcnCount = 2; 
testdummy.BytesAvailableFcn = @testdummycomfunction; 

我有在其上使用Matlab.The結構中的信息bytesAvailable回調財產引發的testdummy側的功能「testdummyfunction」的這一功能如下:

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個字節)異步地輸出到serialcom端的testdummy端。雖然我知道testdummyfunction在testdummy的輸入緩衝區中有2個字節時觸發,那麼data_string也會包含一個2字節長的字符串。 如果不是,我怎樣才能確保它只讀取2個字節的數據?

回答

1

您可以添加額外的大小參數來FSCANF:

fscanf(serialcom,'%c',2); 

使用doc serial.fscanf得到完整的一套功能可選參數。

+0

謝謝!正是我需要的。 –

相關問題