如题,我是用信号和槽的机制 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