首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QextSerialPort (Qt/C++)中的字符编码问题

QextSerialPort (Qt/C++)中的字符编码问题
EN

Stack Overflow用户
提问于 2011-03-30 10:12:33
回答 2查看 1.5K关注 0票数 1

我正在用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使用以下参数建立了连接:

  • 波特率: 9600
  • 数据位:8
  • 奇偶校验位:0
  • 停止位:1
  • 流量控制:硬件

我的程序使用相同的参数来设置串口。HyperTerminal起作用,我的程序不起作用。

我从qextserialport.sourceforge.net开始使用qextserialport.sourceforge.net 1.1,然后尝试使用来自谷歌代码上的QextSerialPort的最新源代码,问题仍然存在。

是什么导致了错误的字符编码?

我要做什么才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-13 12:18:56

最后,我意识到我没有正确配置串口,按梅加德法官的建议。我没有在设备手册中找到这些信息,而是在为该设备开发的软件产品手册中找到了这些信息。

设置连接到Mark IV控制器的串口的正确方法是设置

  • 波特率: 9600
  • 数据位:7
  • 均等:偶数
  • 停止位:2位
  • 流量控制:硬件

然而,我仍然在想,为什么HyperTerminal会在错误的配置下正确地显示字符。

票数 0
EN

Stack Overflow用户

发布于 2011-03-30 11:39:53

48比-80闻起来像一个符号字符与无符号字符错配我。尝试使用显式无符号字符*而不是char*。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5484938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档