1
我想檢查一下,如果我在Matlab中的串口上收到一個點('。')。爲此,我運行了10次循環,檢查是否得到了'。'。在串口上顯示「A dot is received」,否則顯示接收的內容。但收到'。'後,在串行端口上,它不顯示「點被允許」。這裏是我的代碼: -無法在Matlab中檢查串行端口上收到的值
s=serial('COM5', 'BaudRate',9600);%, 'DataBits',8, 'Terminator','');
fopen(s);
disp('Port succefully Opened');
count=0;
checkdot = '.';
for x = 1:10
recv= fscanf(s);
z = char(recv);
if (z== '.')
disp('A dot is received');
else
disp(z);
end
end
fclose(s);
這裏是我的命令窗口輸出: -
>> Serialcomm
Port succefully Opened
.
.
.
.
.
.
.
.
.
.
那麼,請告訴我哪裏是錯誤的。
也許嘗試使用'strcmp':if strcmp(z,'。')。可能還會收到其他一些您無法看到的字符,例如回車或換行符。 – am304
am304:我試過了,但它不起作用 –
您還需要檢查回車符(''\ r'')和換行符(''\ n'')。 '如果strcmp(z,'。\ r \ n')'。實際上,查看'disp'的輸出,看起來你可能有兩個新的行字符:'如果strcmp(z,'。\ r \ n \ n')'。你需要進行實驗,直到找到正確的字符集,而不僅僅是點。 – am304