在博文《Qt 串口通信调试软件开发》的基础上,用QTimer类实现与ComTools软件类似的自动发送数据功能。
实际效果:
mainwindow.cpp新增代码如下:
ui->sendtimeLine->setText("1000");
timer1000=new QTimer;
connect(timer1000,&QTimer::timeout,this,&MainWindow::sendupdate);
发送按钮的槽函数更改为:
void MainWindow::on_sendButton_clicked()
{
if (ui->sendButton->text()=="开始自动发送")
{
ui->sendButton->setText("停止自动发送");
timer1000->start(ui->sendtimeLine->text().toInt());
}
else if (ui->sendButton->text()=="手动发送")
{
sendupdate();
}
else
{
ui->sendButton->setText("开始自动发送");
timer1000->stop();
}
}
新增计时器的槽函数:
void MainWindow::sendupdate()
{
//获取界面上的数据并转换成utf8格式的字节流
QByteArray data = ui->sendTextEdit->toPlainText().toUtf8();
serial.write(data);
//发送字节更新
int m=ui->sendLine->text().toInt()+ui->sendTextEdit->toPlainText().length();
ui->sendLine->setText(QString::number(m));
}
新增复选框的槽函数:
void MainWindow::on_autosend_stateChanged(int state)
{
if (state == Qt::Checked)
{
ui->sendButton->setText("开始自动发送");
}
else
{
ui->sendButton->setText("手动发送");
}
}
完整代码:https://download.csdn.net/download/L1114187703/12938159