当前位置: 首页 > news >正文

单位做网站注意什么问题cdn 加速 网站

单位做网站注意什么问题,cdn 加速 网站,自己做网站升seo,杭州开发app第81讲 串口调试助手实现自动发送 为这个名叫“定时发送”的QCheckBox编写槽函数。 想要做出定时发送的效果,必须引入QT框架下的毫秒级定时器QTimer,查阅手册了解详情。 在widget.h内添加新的私有成员变量: QTimer *timer; 在widget类的构造…

第81讲 串口调试助手实现自动发送

为这个名叫“定时发送”的QCheckBox编写槽函数。

想要做出定时发送的效果,必须引入QT框架下的毫秒级定时器QTimer,查阅手册了解详情。

在widget.h内添加新的私有成员变量:

    QTimer *timer;

在widget类的构造函数内部进行变量初始化:

    ui->setupUi(this);this->setLayout(ui->gridLayoutGlobal);writeCntGobal=0;readCntGobal=0;serialStatus=false;serialPort = new QSerialPort(this);timer=new QTimer(this);

关联信号与槽函数,信号是timeout超时函数,槽函数是发送文本函数:

    connect(timer,&QTimer::timeout,[=](){on_btnSendContext_clicked();});

先测试一下信号与槽是否成功关联,checkBox槽函数的逻辑是勾选后定时器开起,超时后执行槽函数然后自动重装载,如果没有勾选就关闭定时器:

void Widget::on_checkBoxSendInTime_clicked(bool checked)
{if(checked){timer->start(ui->lineEditTimeeach->text().toInt());}else{timer->stop();}
}

测试结果如下,1S发两个,程序正常跑起来了。

接下来,我们会在串口关闭状态下屏蔽“定时发送”按键与“发送”按键;

打开串口定时发送时,屏蔽发送频率输入框与文本输入框。

setEnabled方法可以屏蔽上述的所有控件,进入一种“不可选中”的状态。其次,对于可以勾选的Check Box,setCheckState方法可以取消勾选状态对控件进行重置。

综上所述:

#include "widget.h"
#include "ui_widget.h"#include <QMessageBox>
#include <QSerialPort>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setLayout(ui->gridLayoutGlobal);writeCntGobal=0;readCntGobal=0;serialStatus=false;serialPort = new QSerialPort(this);timer=new QTimer(this);connect(serialPort,&QSerialPort::readyRead,this,&Widget::on_serialData_readytoRead);connect(timer,&QTimer::timeout,[=](){on_btnSendContext_clicked();});ui->comboBox_baudRate->setCurrentIndex(6);ui->comboBox_dataBit->setCurrentIndex(3);QList <QSerialPortInfo> serialList=QSerialPortInfo::availablePorts();for(QSerialPortInfo serialInfo:serialList){//qDebug()<<serialInfo.portName();ui->comboBox_serialNum->addItem(serialInfo.portName());}ui->btnSendContext->setEnabled(false);ui->checkBoxSendInTime->setEnabled(false);
}Widget::~Widget()
{delete ui;
}void Widget::on_btnCloseOrOpenSerial_clicked()
{if(serialStatus==false){//1.选择端口号serialPort->setPortName(ui->comboBox_serialNum->currentText());//2.配置波特率serialPort->setBaudRate(ui->comboBox_baudRate->currentText().toInt());//3.配置数据位serialPort->setDataBits(QSerialPort::DataBits(ui->comboBox_dataBit->currentText().toUInt()));//4.配置校验位/*MARK DOWN :enum Parity {NoParity = 0,EvenParity = 2,OddParity = 3,SpaceParity = 4,MarkParity = 5,UnknownParity = -1};Q_ENUM(Parity)*/switch(ui->comboBox_checkBit->currentIndex()){case 0:serialPort->setParity(QSerialPort::NoParity);break;case 1:serialPort->setParity(QSerialPort::EvenParity);break;case 2:serialPort->setParity(QSerialPort::OddParity);break;case 3:serialPort->setParity(QSerialPort::SpaceParity);break;case 4:serialPort->setParity(QSerialPort::MarkParity);break;default:serialPort->setParity(QSerialPort::UnknownParity);break;}//5.配置停止位serialPort->setStopBits(QSerialPort::StopBits(ui->comboBox_stopBit->currentText().toInt()));//6.流控if(ui->comboBox_fileCon->currentText()=="None")serialPort->setFlowControl(QSerialPort::NoFlowControl);//7.打开串口if(serialPort->open(QIODevice::ReadWrite)){qDebug()<<"serial open";serialStatus=true;ui->btnSendContext->setEnabled(true);ui->btnCloseOrOpenSerial->setText("关闭串口 ");ui->comboBox_dataBit->setEnabled(false);ui->comboBox_fileCon->setEnabled(false);ui->comboBox_stopBit->setEnabled(false);ui->comboBox_baudRate->setEnabled(false);ui->comboBox_checkBit->setEnabled(false);ui->comboBox_serialNum->setEnabled(false);ui->checkBoxSendInTime->setEnabled(true);}else{QMessageBox msgBox;msgBox.setWindowTitle("错误");msgBox.setText("此串口已被占用或拔出!");msgBox.exec();}}else{serialStatus=false;ui->btnSendContext->setEnabled(false);serialPort->close();ui->btnCloseOrOpenSerial->setText("打开串口 ");ui->comboBox_dataBit->setEnabled(true);ui->comboBox_fileCon->setEnabled(true);ui->comboBox_stopBit->setEnabled(true);ui->comboBox_baudRate->setEnabled(true);ui->comboBox_checkBit->setEnabled(true);ui->comboBox_serialNum->setEnabled(true);ui->checkBoxSendInTime->setEnabled(false);ui->checkBoxSendInTime->setCheckState(Qt::Unchecked);timer->stop();ui->lineEditTimeeach->setEnabled(true);ui->lineEditSendContext->setEnabled(true);}
}void Widget::on_btnSendContext_clicked()
{int writeCnt=0;const char* sendData=ui->lineEditSendContext->text().toStdString().c_str();writeCnt=serialPort->write(sendData);if(writeCnt==-1){ui->labelSendStatus->setText("Send Error!");}else{writeCntGobal+=writeCnt;qDebug()<<"Send Ok! "<<sendData;ui->labelSendStatus->setText("Send Ok!");ui->labelSendcnt->setNum(writeCntGobal);if(strcmp(sendData,sendBack.toStdString().c_str())!=0){ui->textEditRecord->append(sendData);sendBack=QString(sendData);}}
}void Widget::on_serialData_readytoRead()
{QString revMessage=serialPort->readAll();if(revMessage!=NULL){qDebug()<<"getMessage:"<<revMessage;ui->textEditRev->append(revMessage);readCntGobal+=revMessage.size();ui->labelRevcnt->setNum(readCntGobal);}else{}
}void Widget::on_checkBoxSendInTime_clicked(bool checked)
{if(checked){ui->lineEditTimeeach->setEnabled(false);ui->lineEditSendContext->setEnabled(false);timer->start(ui->lineEditTimeeach->text().toInt());}else{ui->lineEditTimeeach->setEnabled(true);ui->lineEditSendContext->setEnabled(true);timer->stop();}
}

第82讲 如何自我验证新控件

http://www.yayakq.cn/news/188165/

相关文章:

  • 公司建设一个网站有什么好处宣传网站建设方案模板下载
  • 酒店加盟什么网站建设.net做的网站代码
  • 网站建设需要的功能我要自学网网站建设与管理
  • 惠州 网站建设公司appstore应用商店
  • 博州住房和城乡建设局网站php网站模版
  • ps扩展插件网站给国外网站做流量
  • 超市网站规划泉州招聘网
  • 为个人网站做微信服务号网站建设的资料的准备
  • 锦州网站建设怎样免费织梦导航网站模板下载
  • 网站无法做301重定向电商网站建设重要性
  • 微信公众号如何分享wordpresswordpress+极致优化
  • 双体系建设网站中国最好的域名注册网站
  • 如何自己建立一个网站上海青浦区网站建设公司
  • org后缀的网站wordpress 注册用户
  • 长春门户网站建设制作微信分享的h5网站开发
  • 天津企业网站项目计划书目录模板
  • 微网站建设报价网站没排名怎么办
  • wordpress创建分站点官方网站建设公司
  • 如何建立一个网站查询数据深圳市中心最繁华区
  • 35岁学网站开发怎么样优秀个人网站欣赏
  • 福田网站建设龙岗网站建设网上购物系统源代码
  • 关键词排名网站微商城网站开发
  • asp.net旅游网站管理系统代码聊石家庄seo
  • 如何进行网站宣传推广wordpress底部代码
  • 济南网站seo报价软件著作权证书
  • 做外贸的怎样才能上国外网站泗阳县住房和城乡建设局网站
  • 厦门建设银行招聘网站公司徽标设计图片
  • 网络推广网站公司推荐网站建设前期分析的内容
  • 网站推广公司卓立海创东莞网络公司代理
  • 深圳移动网站建设制作公司自动优化网站软件没有了