• 5428阅读
  • 2回复

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+" "); //将串口的数据显示在窗口文本浏览器中
离线lexus
只看该作者 2楼 发表于: 2011-08-04
既然b是66535 那就很奇怪啊。。  可能是ui->textBrowser->insertPlainText(b+" ");  的问题吧
离线tangxunmin

只看该作者 1楼 发表于: 2011-08-03
while((qq=*pp)!='\0')
这一句有问题  qq是指针 *pp是个值
快速回复
限100 字节
 
上一个 下一个