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

做淘宝客淘宝网站被黑重庆建设工程交易中心

做淘宝客淘宝网站被黑,重庆建设工程交易中心,代码家的干货网站,wordpress小论坛QT 串口调试工具第一节 虚拟串口工具安装第二节 QT创建一个基于QWidget的项目第三节 UI界面设计第三节 项目头文件widget.h第四节 项目实现文件widget.cpp第五节 main函数第六节 编译结果重点第七节 使用QT打包程序#xff0c;不安装QT的电脑可使用第一节 虚拟串口工具安装 -… QT 串口调试工具第一节 虚拟串口工具安装第二节 QT创建一个基于QWidget的项目第三节 UI界面设计第三节 项目头文件widget.h第四节 项目实现文件widget.cpp第五节 main函数第六节 编译结果重点第七节 使用QT打包程序不安装QT的电脑可使用第一节 虚拟串口工具安装 -----------------------------------------下载所需工具--------------------------------------------------------------------- 链接https://pan.baidu.com/s/1QkT36S4EnH2HEAhZ1TZ8ug?pwdilqg 提取码ilqg -------------------------------------首先点击.exe文件----------------------------------------------------------------------- ------------------------------------安装在指定目录等下要用-------------------------------------------------- 将vspdctl.dll替换掉你安装文件的所在目录不然出现错误就掉头发了哦 -------------------------------------打开软件看看有啥--------------------------------------------------- 注意请记住这里的操作后面还要用到 -------------------------------------------通过上面的操作出现以下界面说明设置成功--------------------- 点击电脑—管理—设备管理器–端口–可以看到成功了 第二节 QT创建一个基于QWidget的项目 项目.pro添加以下信息 # 添加串口 QT serialport第三节 UI界面设计 这里不多说只要是按钮都要转到槽具体槽函数请看源代码 第三节 项目头文件widget.h 使用两个串口对象实现 #ifndef WIDGET_H #define WIDGET_H#include QWidget #include QSerialPort //提供访问串口得到功能 #include QSerialPortInfo //提供系统中存在的串口信息 #include QMessageBox //信息弹出框 #include QDebugQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE//使用枚举保存波特率 typedef enum {B1200 1200,B9600 9600,B115200 115200,B921600 921600 }Baud;class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots://接收串口数据void SerialPortReadyRead(); //比作COM6void Serial2PortReadyRead(); //比作COM7private slots:void on_PB_receive_clicked();void on_PB_send_clicked();void on_PB_detectserial_clicked();void on_PB_openserial_clicked();void on_comboBox_b_currentIndexChanged(int index);void on_PB_openserial_2_clicked();void on_PB_send_2_clicked();private:Ui::Widget *ui;QSerialPort serial; //串口1QSerialPort serial2; //串口2 }; #endif // WIDGET_H ------------------------------------------------------------------------------------------------------------------------------------- 第四节 项目实现文件widget.cpp ----------------------实现信号与槽信号为缓冲区有数据时槽函数作为接收数据------------------------------------ //连接信号与槽QObject::connect(serial, SIGNAL(readyRead()),this, SLOT(SerialPortReadyRead()));QObject::connect(serial2, SIGNAL(readyRead()),this, SLOT(Serial2PortReadyRead()));------------------------------------------------串口对象一次性读取全部---------------------------------------------------------- //串口2接收串口1数据 void Widget::SerialPortReadyRead() {qDebug()有数据;//从缓冲区读取文件QByteArray buffer serial.readAll();//获取界面已经读取的数据QString recv ui-plainTextEdit_2-toPlainText();recv QString(buffer);//显示全部ui-plainTextEdit_2-appendPlainText(recv); } //串口1接收串口2数据 void Widget::Serial2PortReadyRead() {qDebug()有数据2;//从缓冲区读取文件QByteArray buffer serial2.readAll();//获取界面已经读取的数据QString recv ui-plainTextEdit-toPlainText();recv QString(buffer);//显示全部ui-plainTextEdit-appendPlainText(recv); }--------------------------------------------------------------向串口写入数据------------------------------------------------------ //作为串口1 void Widget::on_PB_send_clicked() {//向串口写入数据QByteArray data ui-plainTextEdit_2-toPlainText().toUtf8();qDebug()发送数据 data data;serial.write(data);if(!serial.isWritable())qDebug()写入失败; } //作为串口2 void Widget::on_PB_send_2_clicked() {//向串口2写入数据QByteArray data ui-plainTextEdit-toPlainText().toUtf8();qDebug()发送数据 data2 data;serial2.write(data);if(!serial2.isWritable())qDebug()写入失败; }-----------------------------------------配置串口并打开-------------------------------------------------------------------- void Widget::on_PB_openserial_clicked() {if(ui-PB_openserial-text() QString(打开串口1)){//设置串口名serial.setPortName(ui-comboBox_id-currentText());//设置波特率serial.setBaudRate(ui-comboBox_b-currentText().toUInt());//设置数据位switch (ui-comboBox_data-currentIndex()){case 8:serial.setDataBits(QSerialPort::Data8);break;default:break;}//设置奇偶校验 无switch (ui-comboBox_crc-currentIndex()){case 0:serial.setParity(QSerialPort::NoParity);break;default:break;}//设置停止位switch (ui-comboBox_stop-currentIndex()){case 1:serial.setStopBits(QSerialPort::OneStop);break;default:break;}//设置流控 无serial.setFlowControl(QSerialPort::NoFlowControl);//打开串口if(!serial.open(QIODevice::ReadWrite)){QMessageBox::about(NULL,提示,串口1打开失败);}if(serial.isOpen())QMessageBox::about(NULL,提示,串口1打开成功);//下拉菜单控件失能ui-comboBox_b-setEnabled(false);ui-comboBox_id-setEnabled(false);ui-comboBox_crc-setEnabled(false);ui-comboBox_data-setEnabled(false);ui-comboBox_stop-setEnabled(false);ui-PB_openserial-setText(tr(关闭串口1));//发送按键使能ui-PB_send-setEnabled(true);}else{//关闭串口serial.close();//下拉使能ui-comboBox_b-setEnabled(true);ui-comboBox_id-setEnabled(true);ui-comboBox_crc-setEnabled(true);ui-comboBox_data-setEnabled(true);ui-comboBox_stop-setEnabled(true);ui-PB_openserial-setText(tr(打开串口1));//发送失能ui-PB_send-setEnabled(false);} }//获取波特率索引 void Widget::on_comboBox_b_currentIndexChanged(int index) {if(ui-comboBox_b-itemText(index).toUInt() B9600){qDebug()itemText ui-comboBox_b-itemText(index);ui-comboBox_b-setCurrentIndex(index);}else if(ui-comboBox_b-itemText(index).toUInt() B115200){qDebug()itemText ui-comboBox_b-itemText(index);ui-comboBox_b-setCurrentIndex(index);} }void Widget::on_PB_openserial_2_clicked() {if(ui-PB_openserial_2-text() QString(打开串口2)){//设置串口名serial2.setPortName(ui-comboBox_id_2-currentText());//设置波特率serial2.setBaudRate(ui-comboBox_b-currentText().toUInt());//设置数据位switch (ui-comboBox_data-currentIndex()){case 8:serial2.setDataBits(QSerialPort::Data8);break;default:break;}//设置奇偶校验 无switch (ui-comboBox_crc-currentIndex()){case 0:serial2.setParity(QSerialPort::NoParity);break;default:break;}//设置停止位switch (ui-comboBox_stop-currentIndex()){case 1:serial2.setStopBits(QSerialPort::OneStop);break;default:break;}//设置流控 无serial2.setFlowControl(QSerialPort::NoFlowControl);//打开串口if(!serial2.open(QIODevice::ReadWrite)){QMessageBox::about(NULL,提示,串口2打开失败);}if(serial2.isOpen())QMessageBox::about(NULL,提示,串口2打开成功);//下拉菜单控件失能ui-comboBox_b-setEnabled(false);ui-comboBox_id_2-setEnabled(false);ui-comboBox_crc-setEnabled(false);ui-comboBox_data-setEnabled(false);ui-comboBox_stop-setEnabled(false);ui-PB_openserial_2-setText(tr(关闭串口2));//发送按键使能ui-PB_send_2-setEnabled(true);}else{//关闭串口serial2.close();//下拉使能ui-comboBox_b-setEnabled(true);ui-comboBox_id_2-setEnabled(true);ui-comboBox_crc-setEnabled(true);ui-comboBox_data-setEnabled(true);ui-comboBox_stop-setEnabled(true);ui-PB_openserial_2-setText(tr(打开串口2));//发送失能ui-PB_send_2-setEnabled(false);} } -----------------------------------------------------------------源码------------------------------------------------------------ #include widget.h #include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);//连接信号与槽QObject::connect(serial, SIGNAL(readyRead()),this, SLOT(SerialPortReadyRead()));QObject::connect(serial2, SIGNAL(readyRead()),this, SLOT(Serial2PortReadyRead()));//发送按钮不使能ui-PB_send-setDisabled(true);ui-PB_send_2-setDisabled(true); }Widget::~Widget() {delete ui; }//串口2接收串口1数据 void Widget::SerialPortReadyRead() {qDebug()有数据;//从缓冲区读取文件QByteArray buffer serial.readAll();//获取界面已经读取的数据QString recv ui-plainTextEdit_2-toPlainText();recv QString(buffer);//显示全部ui-plainTextEdit_2-appendPlainText(recv); } //串口1接收串口2数据 void Widget::Serial2PortReadyRead() {qDebug()有数据2;//从缓冲区读取文件QByteArray buffer serial2.readAll();//获取界面已经读取的数据QString recv ui-plainTextEdit-toPlainText();recv QString(buffer);//显示全部ui-plainTextEdit-appendPlainText(recv); }void Widget::on_PB_receive_clicked() {//清空接收框数据ui-plainTextEdit-clear();ui-plainTextEdit_2-clear(); } //作为串口1 void Widget::on_PB_send_clicked() {//向串口写入数据QByteArray data ui-plainTextEdit_2-toPlainText().toUtf8();qDebug()发送数据 data data;serial.write(data);if(!serial.isWritable())qDebug()写入失败; } //作为串口2 void Widget::on_PB_send_2_clicked() {//向串口2写入数据QByteArray data ui-plainTextEdit-toPlainText().toUtf8();qDebug()发送数据 data2 data;serial2.write(data);if(!serial2.isWritable())qDebug()写入失败; } //检测串口 void Widget::on_PB_detectserial_clicked() {//清空串口idui-comboBox_id-clear();ui-comboBox_id_2-clear();//通过这个类查找可用串口1foreach(const QSerialPortInfo info, QSerialPortInfo::availablePorts()){qDebug()info.portName() info.portName();ui-comboBox_id-addItem(info.portName());}//通过这个类查找可用串口2foreach(const QSerialPortInfo info, QSerialPortInfo::availablePorts()){qDebug()info.portName() info.portName();ui-comboBox_id_2-addItem(info.portName());} }void Widget::on_PB_openserial_clicked() {if(ui-PB_openserial-text() QString(打开串口1)){//设置串口名serial.setPortName(ui-comboBox_id-currentText());//设置波特率serial.setBaudRate(ui-comboBox_b-currentText().toUInt());//设置数据位switch (ui-comboBox_data-currentIndex()){case 8:serial.setDataBits(QSerialPort::Data8);break;default:break;}//设置奇偶校验 无switch (ui-comboBox_crc-currentIndex()){case 0:serial.setParity(QSerialPort::NoParity);break;default:break;}//设置停止位switch (ui-comboBox_stop-currentIndex()){case 1:serial.setStopBits(QSerialPort::OneStop);break;default:break;}//设置流控 无serial.setFlowControl(QSerialPort::NoFlowControl);//打开串口if(!serial.open(QIODevice::ReadWrite)){QMessageBox::about(NULL,提示,串口1打开失败);}if(serial.isOpen())QMessageBox::about(NULL,提示,串口1打开成功);//下拉菜单控件失能ui-comboBox_b-setEnabled(false);ui-comboBox_id-setEnabled(false);ui-comboBox_crc-setEnabled(false);ui-comboBox_data-setEnabled(false);ui-comboBox_stop-setEnabled(false);ui-PB_openserial-setText(tr(关闭串口1));//发送按键使能ui-PB_send-setEnabled(true);}else{//关闭串口serial.close();//下拉使能ui-comboBox_b-setEnabled(true);ui-comboBox_id-setEnabled(true);ui-comboBox_crc-setEnabled(true);ui-comboBox_data-setEnabled(true);ui-comboBox_stop-setEnabled(true);ui-PB_openserial-setText(tr(打开串口1));//发送失能ui-PB_send-setEnabled(false);} }//获取波特率索引 void Widget::on_comboBox_b_currentIndexChanged(int index) {if(ui-comboBox_b-itemText(index).toUInt() B9600){qDebug()itemText ui-comboBox_b-itemText(index);ui-comboBox_b-setCurrentIndex(index);}else if(ui-comboBox_b-itemText(index).toUInt() B115200){qDebug()itemText ui-comboBox_b-itemText(index);ui-comboBox_b-setCurrentIndex(index);} }void Widget::on_PB_openserial_2_clicked() {if(ui-PB_openserial_2-text() QString(打开串口2)){//设置串口名serial2.setPortName(ui-comboBox_id_2-currentText());//设置波特率serial2.setBaudRate(ui-comboBox_b-currentText().toUInt());//设置数据位switch (ui-comboBox_data-currentIndex()){case 8:serial2.setDataBits(QSerialPort::Data8);break;default:break;}//设置奇偶校验 无switch (ui-comboBox_crc-currentIndex()){case 0:serial2.setParity(QSerialPort::NoParity);break;default:break;}//设置停止位switch (ui-comboBox_stop-currentIndex()){case 1:serial2.setStopBits(QSerialPort::OneStop);break;default:break;}//设置流控 无serial2.setFlowControl(QSerialPort::NoFlowControl);//打开串口if(!serial2.open(QIODevice::ReadWrite)){QMessageBox::about(NULL,提示,串口2打开失败);}if(serial2.isOpen())QMessageBox::about(NULL,提示,串口2打开成功);//下拉菜单控件失能ui-comboBox_b-setEnabled(false);ui-comboBox_id_2-setEnabled(false);ui-comboBox_crc-setEnabled(false);ui-comboBox_data-setEnabled(false);ui-comboBox_stop-setEnabled(false);ui-PB_openserial_2-setText(tr(关闭串口2));//发送按键使能ui-PB_send_2-setEnabled(true);}else{//关闭串口serial2.close();//下拉使能ui-comboBox_b-setEnabled(true);ui-comboBox_id_2-setEnabled(true);ui-comboBox_crc-setEnabled(true);ui-comboBox_data-setEnabled(true);ui-comboBox_stop-setEnabled(true);ui-PB_openserial_2-setText(tr(打开串口2));//发送失能ui-PB_send_2-setEnabled(false);} } 第五节 main函数 #include widget.h#include QApplicationint main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 第六节 编译结果重点 --------------------------------不想编写两个串口的安装的串口助手里面有一个工具---------------------------------- 可以看到可以实现所需的功能 第七节 使用QT打包程序不安装QT的电脑可使用 第一步QT编译使用如下 第二部执行上述以后去以下目录复制.exe文件到一个新建的文件夹 以管理员身份打开cmd,进入的这个新建的文件夹 windeployqt.exe 你的.exe文件名由于没有一台未安装QT的电脑作为模拟有些遗憾 为了提高成功率打开如下 cd D:\Qt\Qt5.14.2\Tools\QtCreator\bin进入以上目录执行如下命令 D:\Qt\Qt5.14.2\5.14.2\mingw73_64windeployqt.exe C:\Users\ll\Desktop\QT串口工具\QSerialPort.exe -------------------------------------本次任务over-----------------------------------------------------------
http://www.w-s-a.com/news/436683/

相关文章:

  • 长春城乡建设部网站首页英文网站推广服务
  • wordpress实训上海整站seo
  • 福建自己建设网站义乌市企推网络科技有限公司
  • 宁波优化网站哪家好织梦网站地图怎么做
  • 怎么在自己的网站加关键词烟台企业网站建设
  • 中山网站建设界面设计职业技能等级证书
  • 做网站首页多少钱免费版企业邮箱注册
  • ppp模式在网站建设的南昌专业做网站公司哪家好
  • 泰安网站建设制作电话号码百度sem竞价托管公司
  • 苏网站建设网页设计和网页美工
  • 跨境电商平台网站广州地铁站路线图
  • 吉林省交通建设集团有限公司网站企业网站推广的策略有哪些
  • 网站内链怎么做更好郑州网站建设哪家便宜
  • 建设大型购物网站运城哪里做网站
  • php企业网站通讯录管理系统做网站在线支付系统多少钱?
  • 怎么区分用vs和dw做的网站贝贝网网站开发背景
  • 无锡网站建设制作建设信息网查询
  • 彩票系统网站开发建设人力资源网官网
  • 有专门下载地图做方案的网站吗网站建设平台计划书
  • 网站闭站保护10个著名摄影网站
  • 安徽省建设工程信息网官网首页网站关键词排名优化工具
  • 深圳网站建设 百业网站专题教程
  • 公司seo是指什么意思如何来做网站优化
  • 化妆品网站建设平台的分析湖南网站搜索排名优化电话
  • 织梦网站修改教程视频教程管理类网站开发价格
  • 如何让新网站快速收录企业建站的作用是什么
  • 在线制作简历的网站做的最好的微电影网站
  • h5制作的网站网络游戏投诉平台
  • 做外贸网站好还是内贸网站好珠海新盈科技有限公 网站建设
  • php和网站开发网络软营销