我想检查我是否在Matlab的串口上收到一个点('。')。为此我运行循环10次,我检查是否得到了'。'在串口上然后显示"接收到一个点"否则显示收到的任何内容。但在收到'。'在串口上它没有显示"点被接收"。这是我的代码: -
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
.
.
.
.
.
.
.
.
.
.
所以,请告诉我错误在哪里。
答案 0 :(得分:2)
您可以使用deblank
(删除所有空白字符)或strtrim
(仅删除前导空格和尾随空格)来删除不需要的字符:
a = sprintf('.\r\n');
disp(a)
.
strcmp(a,'.')
ans =
0
strcmp(strtrim(a),'.')
ans =
1
此外,您正在使用fscanf
从串口检索数据,请尝试使用fgetl
。 fgetl
获取一行并丢弃终结符,因此只应检索.
(理论上)。