QT这段代码ui->textEdit->clear(); int timeout = 0; while (timeout < 6) { timerdata.setInterval(500); timerdata.start(); buffer = serialPort.read(9).toHex();//位数组形式读取 text = QString::fromUtf8(buffer.constData(), buffer.size());//用做textedit输出 float pressure; // 处理接收到的数据 if(!buffer.isEmpty()) { for(i=0,j=0;i<=16;i+=2,j++)//转换为十进制进行判断 { crc = buffer.mid(i,2).toInt(&ok,16); cr[j] = crc; } pressure = /*cr[5] * 1.37*/1; ui->textEdit->append(text.mid(2)); if((cr[1]==6||cr[1]==5)&&cr[7]==70&&(pressure>=(up-dp)&&pressure<=(up+dp)))//判断同步头是否为'06或05'且通过校验且压力大于1BAR且为触发 { ID = buffer.mid(2,8); ui->lineEdit_2->setText(ID); ui->label_16->raise(); seccuss++; QString str = QString::number(seccuss); ui->lineEdit_5->setText(str); pre = QString::number(pressure); ui->pressureedit->setText(pre); timerdata.stop(); break; } else { timeout += 1; } } } if(timeout>=6) { timerdata.stop(); ui->label_17->raise(); }目前是点击按钮接收前三秒的数据,怎么改成点击按钮接收接下来三秒的数据
时间: 2024-02-14 15:05:07 浏览: 128
要改成接收接下来三秒的数据,你需要修改while循环的条件。将timeout的初始值设为3,将循环条件改为timeout < 9,这样就可以接收接下来三秒的数据了。同时,你需要将textEdit的clear()函数调用移到while循环外部,以便在接收新数据之前清空文本框。修改后的代码如下:
```
ui->textEdit->clear();
int timeout = 3;
while (timeout < 9)
{
timerdata.setInterval(500);
timerdata.start();
buffer = serialPort.read(9).toHex();//位数组形式读取
text = QString::fromUtf8(buffer.constData(), buffer.size());//用做textedit输出
float pressure;
// 处理接收到的数据
if(!buffer.isEmpty())
{
for(i=0,j=0;i<=16;i+=2,j++)//转换为十进制进行判断
{
crc = buffer.mid(i,2).toInt(&ok,16);
cr[j] = crc;
}
pressure = /*cr[5] * 1.37*/1;
ui->textEdit->append(text.mid(2));
if((cr[1]==6||cr[1]==5)&&cr[7]==70&&(pressure>=(up-dp)&&pressure<=(up+dp)))//判断同步头是否为'06或05'且通过校验且压力大于1BAR且为触发
{
ID = buffer.mid(2,8);
ui->lineEdit_2->setText(ID);
ui->label_16->raise();
seccuss++;
QString str = QString::number(seccuss);
ui->lineEdit_5->setText(str);
pre = QString::number(pressure);
ui->pressureedit->setText(pre);
timerdata.stop();
break;
}
else
{
timeout += 1;
}
}
}
if(timeout>=9)
{
timerdata.stop();
ui->label_17->raise();
}
```
阅读全文