我正在用QtCreator开发一个Qt/C++程序,它使用QextSerialPort读写串口。我的程序将命令发送给Rhino控制器,并且必须读取这些命令的响应(以防它们产生任何响应)。我的开发和部署平台是。
当Mark IV向命令发送响应时,我的程序从串口缓冲区读取响应时,数据没有正确编码;我的程序似乎没有获得普通的ASCII数据。例如,当Mark发送ASCII "0“(小数点48)和回车(小数13)时,我的缓冲区(**char ***)得到-80和13。字符没有正确编码,但回车确实是正确的。我尝试使用read (char *data, qint64 maxSize)和readAll ()。
I一直在使用两个监视器监视串口流量,用于解释ASCII数据并显示相应的字符、和以这两种方式发送的数据似乎都正确编码了(它们实际上显示正确)。考虑到QByteArray不解释任何字符编码,并且我尝试使用read (char *data, qint64 maxSize)和readAll (),我已经放弃了这个问题可能是由Qt引起的。但是,我不确定这个问题是否是由QextSerialPort引起的,因为我的程序发送(写)数据是正确的,但是没有读取正确的字节。
我还试着用HyperTerminal与Mark控制器进行手工对话,通信也是正确的。我使用HyperTerminal使用以下参数建立了连接:
我的程序使用相同的参数来设置串口。HyperTerminal起作用,我的程序不起作用。
我从qextserialport.sourceforge.net开始使用qextserialport.sourceforge.net 1.1,然后尝试使用来自谷歌代码上的QextSerialPort的最新源代码,问题仍然存在。
是什么导致了错误的字符编码?
我要做什么才能解决这个问题?
发布于 2011-04-13 12:18:56
最后,我意识到我没有正确配置串口,按梅加德法官的建议。我没有在设备手册中找到这些信息,而是在为该设备开发的软件产品手册中找到了这些信息。
设置连接到Mark IV控制器的串口的正确方法是设置
然而,我仍然在想,为什么HyperTerminal会在错误的配置下正确地显示字符。
发布于 2011-03-30 11:39:53
48比-80闻起来像一个符号字符与无符号字符错配我。尝试使用显式无符号字符*而不是char*。
https://stackoverflow.com/questions/5484938
复制相似问题