• 5920阅读
  • 2回复

急!!!!Qt串口接收数据很慢....!请各位帮忙下 [复制链接]

上一主题 下一主题
离线linekey
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-16
如题,我是用信号和槽的机制  connect(&serial,SIGNAL(readyRead()),this,SLOT(recv_data()));

部分代码如下
void Life_Label::recv_data()
{
       qint64 bn = serial.bytesAvailable();
       // qDebug()<< "read:"<<bn<<"bytes";
       if(bn==-1)
       qDebug()<<serial.errorString();
       if(bn>=18)
       {
            //读取串口缓冲区的所有数据给临时变量temp
            QByteArray temp =serial.read(25);
            //QByteArray temp = serial.readAll();
            if(temp.isEmpty())  return;
            //unsigned char c=(unsigned char)temp.at(0);
             unsigned char* buf=(unsigned char*)temp.data();
             int x,y;
            if(buf[5]==10)
            {
                x=(buf[13]*16*16+buf[12])/4*10;
                y=(buf[15]*16*16+buf[14])/4*10;
                qDebug()<<buf[12]<<buf[13]<<buf[14]<<buf[15];
                qDebug()<<x<<y;
                ui->tab->update_point(x,y);
            }

             if(buf[5]==124)//A节点数据
             {
                 qDebug()<<buf[0]<<buf[1]<<buf[2]<<buf[3]<<buf[4]<<buf[5]<<buf[6]<<buf[7]<<buf[8]
                         <<buf[9]<<buf[10]<<buf[11]<<buf[12]<<buf[13]<<buf[14]<<buf[15]<<buf[16]<<buf[17]
                 <<buf[18]<<buf[19]<<buf[20]<<buf[21]<<buf[22]<<buf[23]<<buf[24];
                 update_Adata(buf[15],buf[16],buf[17]);
             }
             if(buf[5]==217)//B节点数据
             {
                 qDebug()<<buf[0]<<buf[1]<<buf[2]<<buf[3]<<buf[4]<<buf[5]<<buf[6]<<buf[7]<<buf[8]
                         <<buf[9]<<buf[10]<<buf[11]<<buf[12]<<buf[13]<<buf[14]<<buf[15]<<buf[16]<<buf[17]
                 <<buf[18]<<buf[19]<<buf[20]<<buf[21]<<buf[22]<<buf[23]<<buf[24];
                 update_Bdata(buf[15],buf[16],buf[17]);
             }
             if(buf[5]==123)//C节点数据
             {
                 qDebug()<<buf[0]<<buf[1]<<buf[2]<<buf[3]<<buf[4]<<buf[5]<<buf[6]<<buf[7]<<buf[8]
                         <<buf[9]<<buf[10]<<buf[11]<<buf[12]<<buf[13]<<buf[14]<<buf[15]<<buf[16]<<buf[17]
                 <<buf[18]<<buf[19]<<buf[20]<<buf[21]<<buf[22]<<buf[23]<<buf[24];
                 update_Cdata(buf[15],buf[16],buf[17]);
             }
             if(buf[5]==56)//D节点数据
             {
                 qDebug()<<buf[0]<<buf[1]<<buf[2]<<buf[3]<<buf[4]<<buf[5]<<buf[6]<<buf[7]<<buf[8]
                         <<buf[9]<<buf[10]<<buf[11]<<buf[12]<<buf[13]<<buf[14]<<buf[15]<<buf[16]<<buf[17]
                 <<buf[18]<<buf[19]<<buf[20]<<buf[21]<<buf[22]<<buf[23]<<buf[24];
                 update_Ddata(buf[15],buf[16],buf[17]);
             }

        }
}

问题是接收数据很慢.......!  
波特率是38400
离线linekey
只看该作者 1楼 发表于: 2011-05-16
自己沙发   求帮助!!!!
离线robin19

只看该作者 2楼 发表于: 2011-05-17
是不是serial的TIMEOUT设置问题?丢帧不?
快速回复
限100 字节
 
上一个 下一个