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

钓鱼网站的主要危害好看的设计网站

钓鱼网站的主要危害,好看的设计网站,湖南3合1网站建设,哪些网站推广不收费1. Qt 串口通信流程解析 1.1 串行通信和并行通信对比 并行通信适合距离较短的通信#xff0c;且信号容易受干扰#xff0c;成本高串口通讯-设备#xff08;蓝牙#xff0c; wifi#xff0c; gprs#xff0c; gps#xff09; 1.2 Qt 串口通信具体流程 1. 创建 QSerial…1. Qt 串口通信流程解析 1.1 串行通信和并行通信对比 并行通信适合距离较短的通信且信号容易受干扰成本高串口通讯-设备蓝牙 wifi gprs gps 1.2 Qt 串口通信具体流程 1. 创建 QSerialPort 对象2. 配置属性波特率 数据位 停止 校验位3. 打开设备4. 发送数据到串口 write5. 在槽函数中读取数据当串口有数据可读的时候会发送 readyRead 信号 1.2.1 serialapp.pro QT core gui serialport1.2.2 serialapp.h #ifndef SERIALAPP_H #define SERIALAPP_H#include QWidget #include QSerialPort #include QSerialPortInfo #include QIODevice #include QByteArray #include QString #include QDebugQT_BEGIN_NAMESPACE namespace Ui { class SerialApp; } QT_END_NAMESPACEclass SerialApp : public QWidget {Q_OBJECTpublic:SerialApp(QWidget *parent nullptr);~SerialApp();private slots:void on_openBt_clicked();void on_sendBt_clicked();void read_data();private:Ui::SerialApp *ui;// 1、创建 QSerialPort 对象QSerialPort mSerial; }; #endif // SERIALAPP_H1.2.3 serialapp.cpp #include serialapp.h #include ui_serialapp.hSerialApp::SerialApp(QWidget *parent) : QWidget(parent), ui(new Ui::SerialApp) {ui-setupUi(this);// 2、配置设备波特率数据位停止位校验位mSerial.setPortName(COM1); // 选择对应的端口号mSerial.setBaudRate(QSerialPort::Baud115200);mSerial.setDataBits(QSerialPort::Data8);mSerial.setStopBits(QSerialPort::OneStop);mSerial.setParity(QSerialPort::NoParity);connect(mSerial, QSerialPort::readyRead, this, SerialApp::read_data); }SerialApp::~SerialApp() {delete ui; }// 3、打开设备 (读写) void SerialApp::on_openBt_clicked() {if (mSerial.open(QIODevice::ReadWrite)) {qDebug() open success!;} else {qDebug() open failed!;} }// 4、发送数据到串口 write void SerialApp::on_sendBt_clicked() {QString data ui-textEdit-toPlainText();mSerial.write(data.toUtf8()); }// 5、读取串口数据 read void SerialApp::read_data() {QByteArray array mSerial.readAll();ui-textBrowser-append(QString(array)); }1.2.4 serialapp.ui 2. Qt 虚拟串口调试 2.1 VSPD 创建虚拟串口 VSPD (Virtual Serial Port Driver) 是一个虚拟串口驱动程序 它可以模拟多个串口设备使得应用程序可以通过虚拟串口与物理串口设备进行通信使用 VSPD 可以方便地进行串口调试、数据采集、数据转发等操作VSPD 还支持多种协议例如模拟 GPS 设备、模拟调制解调器、与虚拟机通信等 VSPD虚拟串口软件安装及使用 2.2 SecureCRT 连接虚拟串口 SecureCRT 是一款安全的终端模拟器常用于远程访问服务器和网络设备 它可以让用户通过 SSH、Telnet、Rlogin 或者串口等协议连接到远程设备并在本地进行命令行操作SecureCRT 还提供了多重会话管理、脚本编写、自动登录、加密通信等多种功能 SecureCRT安装教程 2.3 Qt 虚拟串口实现 serialapp.h #ifndef SERIALAPP_H #define SERIALAPP_H#include QWidget #include QSerialPort #include QSerialPortInfo #include QIODevice #include QByteArray #include QString #include QDebug #include QListQT_BEGIN_NAMESPACE namespace Ui { class SerialApp; } QT_END_NAMESPACEclass SerialApp : public QWidget {Q_OBJECTpublic:SerialApp(QWidget *parent nullptr);~SerialApp();private slots:void on_openBt_clicked();void on_sendBt_clicked();void read_data();private:Ui::SerialApp *ui;// 创建 QSerialPort 对象QSerialPort mSerial; }; #endif // SERIALAPP_Hserialapp.cpp #include serialapp.h #include ui_serialapp.hSerialApp::SerialApp(QWidget *parent) : QWidget(parent), ui(new Ui::SerialApp) {ui-setupUi(this);// 获取当前设备上的所有串口QListQSerialPortInfo list QSerialPortInfo::availablePorts();for (int i 0; i list.size(); i) {ui-comboBox-addItem(list.at(i).portName());}// 配置设备波特率数据位停止位校验位//mSerial.setPortName(COM1);mSerial.setBaudRate(QSerialPort::Baud115200);mSerial.setDataBits(QSerialPort::Data8);mSerial.setStopBits(QSerialPort::OneStop);mSerial.setParity(QSerialPort::NoParity);connect(mSerial, QSerialPort::readyRead, this, SerialApp::read_data); }SerialApp::~SerialApp() {delete ui; }// 打开设备 (读写) void SerialApp::on_openBt_clicked() {if (mSerial.isOpen()) {mSerial.close();}mSerial.setPortName(ui-comboBox-currentText()); // 设置端口if (mSerial.open(QIODevice::ReadWrite)) {qDebug() open success!;} else {qDebug() open failed!;} }// 发送数据到串口 write void SerialApp::on_sendBt_clicked() {QString data ui-textEdit-toPlainText();mSerial.write(data.toUtf8()); }// 读取串口数据 read void SerialApp::read_data() {QByteArray array mSerial.readAll();ui-textBrowser-append(QString(array)); }serialapp.ui 2.4 Qt 与 SecureCRT 建立虚拟串口连接 3. Qt 编写串口调试工具 3.1 serialportapp.h #ifndef SERIALPORTAPP_H #define SERIALPORTAPP_H#include QWidget #include QSerialPort #include QSerialPortInfo #include QList #include QStringList #include QString #include QIODevice #include QDebug #include QByteArray #include QMessageBox #include QTimerEvent #include QFileDialog #include QFileQT_BEGIN_NAMESPACE namespace Ui { class SerialPortApp; } QT_END_NAMESPACEclass SerialPortApp : public QWidget {Q_OBJECTpublic:SerialPortApp(QWidget *parent nullptr);~SerialPortApp();void timerEvent(QTimerEvent *event);private slots:void on_openBt_clicked();void on_closeBt_clicked();void on_sendBt_clicked();void on_autoCheckBox_clicked(bool checked);void on_clearSendSizeBt_clicked();void on_sendHexCb_clicked(bool checked);void on_recvHexCb_clicked(bool checked);void read_data();void on_clearRecvSizeBt_clicked();void on_selectfileBt_clicked();void on_sendfileBt_clicked();void send_file_text(quint64 size);private:Ui::SerialPortApp *ui;QSerialPort mSerial;int timerid;qint32 sendsize;qint32 recvsize;QFile file; // 发送文件qint32 sendfilesize; }; #endif // SERIALPORTAPP_H3.2 serialportapp.cpp #include serialportapp.h #include ui_serialportapp.hSerialPortApp::SerialPortApp(QWidget *parent) : QWidget(parent), ui(new Ui::SerialPortApp) {ui-setupUi(this);// 遍历获取当前设备上的所有串口QListQSerialPortInfo infos QSerialPortInfo::availablePorts();for (int i 0; i infos.size(); i) {ui-comCb-addItem(infos.at(i).portName());}// 设置波特率显示QStringList list;list 1200 2400 4800 9600 19200 38400 57600 115200;ui-rateCb-addItems(list);ui-rateCb-setCurrentIndex(7); // 设置默认波特率为 115200list.clear();// 设置数据位list 5 6 7 8 -1;ui-dataCb-addItems(list);ui-dataCb-setCurrentIndex(3); // 设置默认数据位为 8list.clear();// 设置停止位list 1 3 2 -1;ui-stopCb-addItems(list);list.clear();// 设置校验位list None NULL Even Odd Space Mark;ui-priCb-addItems(list);list.clear();// 把关闭按钮设置失效ui-closeBt-setEnabled(false);// 当串口有数据可读时会发送 readyRead 信号connect(mSerial, QSerialPort::readyRead, this, SerialPortApp::read_data);// 初始化发送、接收的字节数记录sendsize recvsize 0; }SerialPortApp::~SerialPortApp() {delete ui; }// 打开 void SerialPortApp::on_openBt_clicked() {// 配置端口波特率数据位停止位校验位mSerial.setPortName(ui-comCb-currentText());mSerial.setBaudRate(ui-rateCb-currentText().toInt());mSerial.setDataBits((QSerialPort::DataBits)ui-dataCb-currentText().toInt());mSerial.setStopBits((QSerialPort::StopBits)ui-stopCb-currentText().toInt());mSerial.setParity((QSerialPort::Parity)ui-priCb-currentText().toInt());// 打开设备if (mSerial.open(QIODevice::ReadWrite)) {ui-closeBt-setEnabled(true);ui-openBt-setEnabled(false);} }// 关闭 void SerialPortApp::on_closeBt_clicked() {// 关闭设备mSerial.close();ui-closeBt-setEnabled(false);ui-openBt-setEnabled(true); }// 手动发送数据 void SerialPortApp::on_sendBt_clicked() {QString data ui-sendText-toPlainText();if (ui-sendHexCb-isChecked()) {// 转十六进制data 4142 -- 0x41 0x42QByteArray array;if (data.size() % 2 ! 0) {data.insert(0, 0);}for (int i 0; i data.size() / 2; i) {QString t data.mid(2*i, 2);bool ok false;int ihex t.toInt(ok, 16);array.append(ihex);}int size mSerial.write(array); // 发送数据sendsize size; // 累计发送的字节数} else {int size mSerial.write(data.toUtf8()); // 发送数据sendsize size;}// 设置显示已发送的字节数ui-sendsizelabel-setText(QString::number(sendsize)); }// 定时自动发送数据 void SerialPortApp::on_autoCheckBox_clicked(bool checked) {if (checked) {// 获取定时发送周期int ms ui-autotimeEdit-text().toInt();if (ms 100) {QMessageBox::warning(this, time hint, time should 100ms);ui-autoCheckBox-setChecked(false);return;}// 启动定时器事件timerid this-startTimer(ms);} else {// 关闭定时器事件this-killTimer(timerid);} }// 定时器事件 void SerialPortApp::timerEvent(QTimerEvent *event) {on_sendBt_clicked(); }// 清空已发送的字节数 void SerialPortApp::on_clearSendSizeBt_clicked() {sendsize 0;ui-sendText-clear();ui-sendsizelabel-setText(0); }// 发送端十六进制和十进制转换 void SerialPortApp::on_sendHexCb_clicked(bool checked) {if (checked) { // 十进制 -- 十六进制QString data ui-sendText-toPlainText();QByteArray array data.toUtf8().toHex();ui-sendText-setText(QString(array));} else { // 十六进制 -- 十进制QString data ui-sendText-toPlainText();QByteArray array;if (data.size() % 2 ! 0) {data.insert(0, 0);}for (int i 0; i data.size() / 2; i) {QString t data.mid(2*i, 2);bool ok false;int ihex t.toInt(ok, 16);array.append(ihex);}ui-sendText-setText(QString(array));} }// 接收端十六进制和十进制转换 void SerialPortApp::on_recvHexCb_clicked(bool checked) {if (checked) { // 十进制 -- 十六进制QString data ui-recvText-toPlainText();QByteArray array data.toUtf8().toHex();ui-recvText-setText(QString(array));} else { // 十六进制 -- 十进制QString data ui-recvText-toPlainText();QByteArray array;if (data.size() % 2 ! 0) {data.insert(0, 0);}for (int i 0; i data.size() / 2; i) {QString t data.mid(2*i, 2);bool ok false;int ihex t.toInt(ok, 16);array.append(ihex);}ui-recvText-setText(QString(array));} }// 接收串口数据 void SerialPortApp::read_data() {// 读到的数据是一个个字节QByteArray array mSerial.readAll();recvsize array.size(); // 显示已接收到的字节数if (ui-recvHexCb-isChecked()) {ui-recvText-append(array.toHex());} else {ui-recvText-append(array);}// 设置显示已接收到的字节数ui-recvsizelabel-setText(QString::number(recvsize)); }// 清空已接收的字节数 void SerialPortApp::on_clearRecvSizeBt_clicked() {recvsize 0;ui-recvText-clear();ui-recvsizelabel-setText(0); }// 选择要发送的文件 void SerialPortApp::on_selectfileBt_clicked() {QString path QFileDialog::getOpenFileName(this);ui-filepathEdit-setText(path); }// 发送文件 void SerialPortApp::on_sendfileBt_clicked() {// 当数据发送完毕后会发出一个信号 QSerialPort::bytesWritten// 每当有效载荷的数据写入到设备当前的写入通道时就会发出这个信号connect(mSerial, QSerialPort::bytesWritten, this, SerialPortApp::send_file_text);// 打开文件file.setFileName(ui-filepathEdit-text());if (!file.open(QIODevice::ReadOnly)) {return;}// 获取文件大小int filesize file.size();ui-progressBar-setMaximum(filesize);// 设置进度条显示QByteArray array file.read(128); // 每次读取 128 字节内容sendfilesize mSerial.write(array);ui-progressBar-setValue(sendfilesize); }// 循环每 128 字节发送文件 void SerialPortApp::send_file_text(quint64 size) {// 设置进度条显示QByteArray array file.read(128);quint64 mSize mSerial.write(array);sendfilesize mSize;ui-progressBar-setValue(sendfilesize);// 判断文件是否发送完毕if (sendfilesize ui-progressBar-maximum()) {file.close();disconnect(mSerial, QSerialPort::bytesWritten, this, SerialPortApp::send_file_text);} }3.3 serialportapp.ui
http://www.w-s-a.com/news/788420/

相关文章:

  • 一个网站页面设计多少钱做预算查价格的网站是哪个
  • 鳌江哪里有做网站百度短链接在线生成
  • 有没有什么做水利资料的网站杭州建设信用平台
  • 电子商务网站建设及推广方案论文wordpress无法显示文章
  • 建设工程监理网站前端和后端分别需要学什么
  • 公司网站制作效果国内最好的在线网站建设
  • 徐州好点的做网站的公司有哪些wordpress 工具插件下载
  • 如何用云服务器建设网站微网站免费开发平台
  • 官网的网站设计公司做网站需要准备哪些东西
  • 程序员和做网站那个好找工作wordpress二维码 插件
  • 湖南城市建设技术学院官方网站青海省建设局网站
  • 响应式网站有什么区别百度网站官网
  • 金华企业自助建站系统长沙建站公司模板
  • 云主机 做网站友情链接网站
  • 定制型网站设计天津网站模板建站
  • 为什么公司网站打开很慢wordpress汉化插件
  • 用dw做教学网站做网站用什么配置笔记本
  • 秦皇岛网站制作服务无网站无产品链接如何做SOHO
  • 国际婚恋网站做翻译合法吗南宁网络推广有限公司
  • 济南做网站公司排名销售市场规划方案
  • 营销型网站定制珠海建站网站
  • 企业网站代码wordpress页面重定向循环
  • 厦门网站建设哪家便宜用wordpress做企业网站
  • 网站备案有幕布python 做网站速度
  • 旅游网站模板psd网站后台维护主要做什么
  • 晋江做任务的网站网站如何设置关键词
  • 呼伦贝尔网站建设呼伦贝尔ps网页设计心得体会
  • 字母logo设计网站动画设计方案及内容
  • 怎样做网站建设方案wordpress 附件预览
  • 网站内容编辑wordpress cron原理