• 6762阅读
  • 5回复

串口接收到的数据包怎么分成一个字节一个字节 [复制链接]

上一主题 下一主题
离线zyppjq
 

只看楼主 倒序阅读 楼主  发表于: 2011-07-22
我现在利用QT串口从单片机中采回数据包,数据包格式如:BB 01 02 03 04 AD EE。。。现在我需要对每个数据进行处理,所以需要把采回来的数据分成一个一个的单字节。麻烦各位路过的大侠帮忙指点指点。。。
离线sapphirezzz
只看该作者 1楼 发表于: 2011-07-22
用 QByteArray 。我也是这样做的。
        QByteArray temp = myCom->readAll();
然后对temp进行处理,有很多方法,很方便。如remove(),mid()之类的。
离线zyppjq

只看该作者 2楼 发表于: 2011-07-23
回 1楼(sapphirezzz) 的帖子
好滴,谢谢你的回复,俺去试试先
离线zyppjq

只看该作者 3楼 发表于: 2011-07-26
问题已经解决了,贴下代码:
void SerialThread::run()
{
    while(1){
       usleep(500);                                                                    //delay 50ms
       QByteArray temp = myCom->readAll();                                        //读取串口缓冲区的所有数据给临时变量temp
       QDataStream out(&temp,QIODevice::ReadWrite);                         //用QDataStream将字节数组读入
       while(!out.atEnd())
       {
           qint8 outChar = 0;
           out>>outChar;                                                                             //每一字节填充一次,直到结束
           QString str = QString("%1 ").arg(outChar&0xFF, 2, 16, QLatin1Char('0'));              //在这里转十六进制数
           emit this->serialFinished(str.toAscii());
    }
   }
}

其实经过这样转换成16进制后,str就已经是一个一个字节了,自己再建一个缓存数组就行了吧,反正我是这样解决的。
离线gzcgjy
只看该作者 4楼 发表于: 2011-09-05
恭喜楼主解决了。
离线luxiaolai

只看该作者 5楼 发表于: 2011-09-25
不错的解决办法,收了。
快速回复
限100 字节
 
上一个 下一个