导航:首页 > 编程语言 > qt串口自动扫描代码

qt串口自动扫描代码

发布时间:2024-12-07 13:47:11

❶ 用Qt编写一个串口通讯程序

Qt软件编程,windows下的Qt编程,实现功能串口通信,数据发送和接收。
根据协议编写打印机串口通信程序。
新建一个Qt项目: 文件-新建文件或项目(ctrl+n)

单机 choose 之后

全部下一步到完成
成功建立一个Qt Widgets Application

新建一个管理SerialPort的类  右击项目名字-添加新文件 弹出 如下框:

选择C++ Class,单机 choose 弹出如下框: 并填写 单机下一步 之后 单机完成

编写SPComm类: 在SPComm.h中加入头文件 #include QtSerialPort/QtSerialPort

在头文件中 声明串口功能: bool isOpen() const; void setPortName(const QString name); QString portName() const; void setBaudRate(int baudRate); int baudRate() const; virtual bool open(); virtual void close(); virtual bool clear(); int readData(char *buffer, int count, int timeout = 1000); int writeData(char *data, int size); int write(char ch); protected: QString m_portName; int m_baudRate; QSerialPort *m_serialPort;

在CPP文件中实现对应的功能: //这个函数用来设置波特率,打开串口的时候用到 static QSerialPort::BaudRate getBaudRate(int baudRate) { switch (baudRate) { case 1200: return QSerialPort::Baud1200; case 2400: return QSerialPort::Baud2400; case 4800: return QSerialPort::Baud4800; case 9600: return QSerialPort::Baud9600; case 19200: return QSerialPort::Baud19200; case 38400: return QSerialPort::Baud38400; case 57600: return QSerialPort::Baud57600; case 115200: return QSerialPort::Baud115200; default: return QSerialPort::UnknownBaud; } } //这个函数用来设置串口的名字 //window 下用"com1"  linux下用"/dev/ttyS0" void SPComm::setPortName(const QString name) { m_portName = name; } //用来获取串口的名字 QString SPComm::portName() const { return m_portName; } //设置波特率 9600 19200 38400 void SPComm::setBaudRate(int baudRate) { m_baudRate = baudRate; } //用来打开串口,调用前,先设置串口名字和波特率 bool SPComm::open() { if (m_serialPort-isOpen()) { return true; } m_serialPort-setPortName(m_portName); m_serialPort-setBaudRate(getBaudRate(m_baudRate)); m_serialPort-setParity(QSerialPort::NoParity); m_serialPort-setDataBits(QSerialPort::Data8); m_serialPort-setStopBits(QSerialPort::OneStop); m_serialPort-setFlowControl(QSerialPort::NoFlowControl); m_serialPort-setReadBufferSize(1024); return m_serialPort-open(QSerialPort::ReadWrite); }
//用来关闭串口 void SPComm::close() { if (m_serialPort-isOpen()) { m_serialPort-close(); } }
//重启串口,清楚数据 bool SPComm::clear() { if (m_serialPort-isOpen()) { m_serialPort-clear(); this-close(); return this-open(); } return false; }
//用来接收串口发来的数据 int SPComm::readData(char *buffer, int count, int timeout) { int len = 0; forever { int n = m_serialPort-read(buffer[len], count - len); if (n == -1) { return -1; } else if (n == 0 !m_serialPort-waitForReadyRead(timeout)) { return -2; } else { len += n; if (count == len) break; } } return len; }
//发送数据到串口 比如发送协议 int SPComm::writeData(char *data, int size) { int len = 0; forever { int n = m_serialPort-write(data[len], size - len); if (n == -1) { return -1; } else { len += n; if (size == len) break; } } return len; }
//别忘记了 //构造函数 添加初始化数据 SPComm::SPComm(QObject *parent) : QObject(parent) { m_serialPort = new QSerialPort(); m_baudRate = 9600; m_portName = ""; } //析构的时候 删除 数据 SPComm::~SPComm() { delete m_serialPort; }
串口类编写完成: 测试一下能否调用: 1.双击mainwindow.ui

切换到了设计模式: 2 拖入按钮

3 双击按钮,设置按钮的名字

4设置好按钮的名字为 打开串口 5右击按钮-转到曹-选择clicked()-点击OK 跳转到了 一下界面

为这个按钮添加功能代码: 首先在mainwindow.h中添加SPComm.h的头文件

在mainwindow.h头文件中,添加这行代码SPComm *m_spcomm; private: Ui::MainWindow *ui; SPComm *m_spcomm;

在mainwindow.cpp的构造函数中 添加 m_spcomm = new SPComm(); 析构函数中 添加delete m_spcomm;

双击mainwindow.cpp 回到按钮那里添加功能 void MainWindow::on_pushButton_clicked() { if(m_spcomm-isOpen()) return; m_spcomm-setBaudRate(9600); m_spcomm-setPortName("com1"); if(m_spcomm-open()) qDebug() "打开串口成功"; }
同上关闭串口的代码为 void MainWindow::on_pushButton_2_clicked() { if(m_spcomm-isOpen()) m_spcomm-close(); qDebug() "关闭串口成功"; }
点击 按钮 编译 并且运行成

如果想编写一个打印机串口程序 根据以上步骤 同理 添加一个Printer类 根据协议编发送指令,写打印机的功能。 比如发送协议 进行 切纸 换行 打印数据

阅读全文

与qt串口自动扫描代码相关的资料

热点内容
ps3文件分割视频 浏览:280
微信图片一键转发软件 浏览:331
如何判断s200plc编程电缆 浏览:691
太原编程培训班哪个好 浏览:171
树叶吹奏教程 浏览:6
社交app带来了哪些社会问题 浏览:394
如何安装爱宝8800数据采集器 浏览:712
文件保存了怎么找不到了 浏览:476
彩票网站怎么辨真假 浏览:840
pr找不到该文件 浏览:963
java移除panel 浏览:354
jsp填充jsp 浏览:166
海关外贸大数据在哪里查 浏览:381
思特奇java笔试题 浏览:121
葫芦侠在手机中的文件名 浏览:813
plc编程应该怎么收钱 浏览:584
c语言中源文件由什么组成 浏览:890
linuxhttpdphp配置文件 浏览:607
拆单数据要怎么保存 浏览:17
mac电脑怎样压缩文件到100m 浏览:645

友情链接