无法在Matlab中检查串口上的接收值

时间:2014-12-22 10:51:33

标签: matlab serial-port char usart

我想检查我是否在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
.

.

.

.

.

.

.

.

.

.

所以,请告诉我错误在哪里。

1 个答案:

答案 0 :(得分:2)

您可以使用deblank(删除所有空白字符)或strtrim(仅删除前导空格和尾随空格)来删除不需要的字符:

a = sprintf('.\r\n');
disp(a)
.

strcmp(a,'.')
ans =

     0
strcmp(strtrim(a),'.')
ans =

     1

此外,您正在使用fscanf从串口检索数据,请尝试使用fgetlfgetl获取一行并丢弃终结符,因此只应检索.(理论上)。