无法在Matlab中打印串口上收到的字符值

时间:2014-12-30 09:03:42

标签: matlab serial-port

我正在尝试从串口接收char并在Matlab的命令窗口中打印它。为此我写了这段代码: -

serialOne=serial('COM6', 'BaudRate', 19200);
fopen(serialOne);
while 1>0
recv = fread(serialOne, 1 ,'uint8');
recv
end
fclose(serialOne);

为了测试这个应用程序,我实际上是从teraterm发送一些数据并试图在matlab中正确接收它。

我的输出是这样的: -

在从Teraterm发送char'1'时,我应该在Matlab上收到char'1',但是: -

recv =

     49

在从Teraterm发送char'2'时,我应该在Matlab上收到char'2',但是: -

recv =

    50

我发现我正在接收终端发送的每个字符的ASCII(十进制)。所以我的问题是如何直接获取字符而不是十进制ASCII值?

1 个答案:

答案 0 :(得分:0)

fread函数将字符作为数字返回,即ASCII码。要将其转换为char类型,您可以在收到字符后使用recv = char(recv)

另一种可能性是使用recv = fscanf(serialOne,'%c',1),它将直接在char类型中返回一个字符。