• 7001阅读
  • 5回复

[提问]qt串口通信 [复制链接]

上一主题 下一主题
离线zhangda425
 
只看楼主 倒序阅读 楼主  发表于: 2011-08-02
运行环境 qt4.7.4,win7 64位
希望实现通过串口接收16进制,并把它以10进制显示在textBrowser上,问题是(我是通过串口助手发送的)发送一个FF,软件能正常显示"255 ”,如果发送FF FF(类似的还有00 64,064),显示"66535 0",我用单步调试来看,b的值是"66535",没问题,可是一显示出来就多个0?但是只发两位数的话(如FF,11, 6A。。。。)不会有0给出来。请问如何解决?把多余的0给去掉。部分代码:

int i=0;
    QByteArray temphex=temp.toHex();//在这段前面是读取串口缓冲区的所有数据给临时变量temp

          char *pp=temphex.data();
          char qq[500];
         while((qq=*pp)!='\0')
          {i++;
           pp++;
          }
          long n = strtol(qq,NULL,16);
          QString b=QString::number(n);
          ui->textBrowser->insertPlainText(b+" "); //将串口的数据显示在窗口文本浏览器中

离线lkf_sk
只看该作者 1楼 发表于: 2011-09-18
我想是编码方式的问题吧?
怎么设置缓冲区啊?怎么清除缓冲区?请问你用的是QextSerialBase和Win_QextSerialPort这两个第三方类吗?
离线20091001753

只看该作者 2楼 发表于: 2011-09-18
引用第1楼lkf_sk于2011-09-18 01:23发表的  :
我想是编码方式的问题吧?
怎么设置缓冲区啊?怎么清除缓冲区?请问你用的是QextSerialBase和Win_QextSerialPort这两个第三方类吗?

写串口就这个第三方库了,貌似官方没有提供。
不过唯一让我惊讶的是,QT提供了Quick的三维库。它甚至直接提供了导入3DS文件的方法!
要知道QT导入3DS,这代码我写了很久。如果当时能从小道消息得知QT官方会提供,我就不用这么费力写了。
不过现在也无所谓啦,反正有自己的也不是坏事。


我想说的是,说不定以后官方也会提供串口库的。QT毕竟在嵌入式里面应用比较广,集成串口是必然趋势。
(づ ̄ 3 ̄)づ
离线20091001753

只看该作者 3楼 发表于: 2011-09-18



这个是我正在写的串口调试软件。
不支持中文,界面也很丑。
现在还只是只有一些基础的功能。
(づ ̄ 3 ̄)づ
离线isaacedvr
只看该作者 4楼 发表于: 2012-04-05
好像是:就不能用中文做啊。。。  有做出来的,分享下你怎么做。谢谢了
离线ffii4455

只看该作者 5楼 发表于: 2012-04-05
回 2楼(20091001753) 的帖子
能把你读取3DS文件的方法发给我一份么。我想学习一下。
快速回复
限100 字节
 
上一个 下一个