• 7102阅读
  • 7回复

[提问]qt串口接收数据的处理 [复制链接]

上一主题 下一主题
离线lgqrs
 
只看楼主 倒序阅读 楼主  发表于: 2012-06-01
串口接收的数据:1001,38,1001,44
void Widget::readMyCom()
{
        QByteArray temp= myCom->readAll();
        QString byte=QString(temp);
        QString a=byte.left(4);
       QString b=byte.mid(5,2);
       QString c=byte.mid(13,2);
       int d=b.toInt();
      int e=c.toInt();
      int f=e+d;
      QString h=QString::number(f,10);
        ui->textBrowser->insertPlainText(a);
ui->textBrowser_2->insertPlainText(h);
}
信号和槽的配置如下:
        readTimer=new QTimer(this);
        readTimer->start(100);
        connect(readTimer,SIGNAL(timeout()),this,SLOT(readMyCom()));

为什么在ARM上运行,串口没有数据输入时就在textBrowser_2上显示一串0,并且一直不断的重复显示。
当有数据输入时,textBrowser_2上只是暂时性出现82,接着又重复显示0.      而textBrowser上的显示是正确的1001。

难道不能在这里对数据进行处理?高手赐教~~~~跪求解答

离线lgqrs
只看该作者 1楼 发表于: 2012-06-03
有知道原因的吗??
或者赐教下其它好用的串口接收数据处理然后将数据显示出来的办法....感激ing
离线loopolike

只看该作者 2楼 发表于: 2012-06-03
ARM上跑的是linux吗
离线loopolike

只看该作者 3楼 发表于: 2012-06-03
linux下的串口调试助手,我试过是没有问题的,我用的是yafeilinux的串口通信,你仔细检查你的基本数据,包括显示的变量
离线lgqrs
只看该作者 4楼 发表于: 2012-06-12
回 1楼(lgqrs) 的帖子
跑的是LINUX,前几天没有时间看这块,多谢了 我再试试吧
离线0xffffh

只看该作者 5楼 发表于: 2012-06-12
呵呵兄弟!没有对接收到的数据的个数进行判断,所以即使没有接收到数据,每一次Timeout后都会往textBrowsers是中插入一次数据,ByteArray是空的,QString在转换失败后会返回0的,所以textBrowser2会出现不正常,textBrowser1正常是因为没有数据时他是空的所以插入后你看不到变化。


离线lgqrs
只看该作者 6楼 发表于: 2012-06-12
回 5楼(0xffffh) 的帖子
非常感谢
离线lacuss
只看该作者 7楼 发表于: 2013-01-26
回 5楼(0xffffh) 的帖子
那为什么textBrowser上的显示是正确的1001,而且在没有数据时,也没有被空的QByteArray temp覆盖掉呢?
快速回复
限100 字节
 
上一个 下一个