|
5Qter豆
//读取接收到的数据void MyMainWindow::Read_Data(){ QByteArray buf; QByteArray kjs; kjs.resize(5); QPalette pal(ui->widget_1->palette()); QPalette pal2(ui->widget_2->palette()); QPalette pal3(ui->widget_3->palette()); buf = serial->readAll(); QElapsedTimer t; QDataStream out(&buf,QIODevice::ReadWrite); //将字节数组读入 while(!out.atEnd()) {
qint8 outChar = 0; out>>outChar; //每字节填充一次,直到结束 QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0'));//十六进制的转换 ui->textEdit->insertPlainText(str.toUpper());//大写 ui->textEdit->insertPlainText(" ");//每发送两个字符后添加一个空格 ui->textEdit->moveCursor(QTextCursor::End); if(buf.contains("#")) { kjs = buf.left(buf.indexOf('#')-1); if(kjs.at(0)==0)//0X00表示停机 { pal.setColor(QPalette::Background, Qt::yellow); //设置背景黄色 ui->widget_1->setAutoFillBackground(true); ui->widget_1->setPalette(pal); ui->widget_1->show(); t.start(); while(t.elapsed()<10000);//停机30秒 { if(kjs.at(0)==0) { pal.setColor(QPalette::Background, Qt::red); //设置背景红色 ui->widget_1->setAutoFillBackground(true); ui->widget_1->setPalette(pal); ui->widget_1->show(); } } } else if(kjs.at(0)==1) { qDebug() << tr("界面颜色设定成功!"); pal.setColor(QPalette::Background, Qt::green); //设置背景绿色 ui->widget_1->setAutoFillBackground(true); ui->widget_1->setPalette(pal); ui->widget_1->show(); } else { pal.setColor(QPalette::Background, Qt::gray); //设置背景灰色 ui->widget_1->setAutoFillBackground(true); ui->widget_1->setPalette(pal); ui->widget_1->show(); } if(kjs.at(1)==0)//0X00表示停机 { pal.setColor(QPalette::Background, Qt::yellow); //设置背景黄色 ui->widget_2->setAutoFillBackground(true); ui->widget_2->setPalette(pal); ui->widget_2->show(); t.start(); while(t.elapsed()<10000);//停机30秒 { if(kjs.at(1)==0) { pal.setColor(QPalette::Background, Qt::red); //设置背景红色 ui->widget_2->setAutoFillBackground(true); ui->widget_2->setPalette(pal); ui->widget_2->show(); } } } else if(kjs.at(1)==1) { qDebug() << tr("界面颜色设定成功!"); pal.setColor(QPalette::Background, Qt::green); //设置背景绿色 ui->widget_2->setAutoFillBackground(true); ui->widget_2->setPalette(pal); ui->widget_2->show(); } else { pal.setColor(QPalette::Background, Qt::gray); //设置背景灰色 ui->widget_2->setAutoFillBackground(true); ui->widget_2->setPalette(pal); ui->widget_2->show(); } if(kjs.at(2)==0)//0X00表示停机 { pal.setColor(QPalette::Background, Qt::yellow); //设置背景黄色 ui->widget_3->setAutoFillBackground(true); ui->widget_3->setPalette(pal); ui->widget_3->show(); t.start(); while(t.elapsed()<10000);//停机30秒 { if(kjs.at(2)==0) { pal.setColor(QPalette::Background, Qt::red); //设置背景红色 ui->widget_3->setAutoFillBackground(true); ui->widget_3->setPalette(pal); ui->widget_3->show(); } } } else if(kjs.at(2)==1) { qDebug() << tr("界面颜色设定成功!"); pal.setColor(QPalette::Background, Qt::green); //设置背景绿色 ui->widget_3->setAutoFillBackground(true); ui->widget_3->setPalette(pal); ui->widget_3->show(); } else { pal.setColor(QPalette::Background, Qt::gray); //设置背景灰色 ui->widget_3->setAutoFillBackground(true); ui->widget_3->setPalette(pal); ui->widget_3->show(); } } buf.clear(); }}
弹出这个信息ASSERT: "uint(i) < uint(size())" in file ..\..\..\QT\5.6\mingw49_32\include/QtCore/qbytearray.h, line 470D:\GUI\lianxi\11 4\debug\maker.exe exited with code 3
|
最佳答案
查看完整内容
这个是你的程序接收是在主界面吧,接收的放在次线程,通过信号和槽来完成通信,然后更新 Ui,这样的话,应该还阔以~
|