我正在尝试从串口接收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值?
答案 0 :(得分:0)
fread
函数将字符作为数字返回,即ASCII码。要将其转换为char
类型,您可以在收到字符后使用recv = char(recv)
。
另一种可能性是使用recv = fscanf(serialOne,'%c',1)
,它将直接在char
类型中返回一个字符。