QT5 串口应用
来源:互联网 发布:男王升级数据 编辑:程序博客网 时间:2024/06/04 18:39
qt4的网上一大堆,qt5的在网上好像没有,自己摸索出来了。这是原文链接! http://blog.csdn.net/qq363692146/article/details/10366713 希望转发者保留,多谢。QT5的有一大好处就是 【串口正确初始化!!!】qt4的初始化常常要借助其他软件。正文开始,因为用到信号和槽,所以就直接用GUI程序,建立QMainWindow吧首先,pro文件,你懂的[cpp] view plaincopyprint?QT += serialport 接着,在mainwindow.h文件中修改:1.增加头文件[cpp] view plaincopyprint?#include <QDebug> //可由可无,看你是否用qdebug或qCritical等输出 #include <QSerialPort> 2.增加下面的后三行,增加串口成员 和 读取槽[cpp] view plaincopyprint?private: Ui::MainWindow *ui; QSerialPort *serial; private slots: void serialRead(); 最后,进入mainwindow.cpp这篇可以直接复制我连ui->setupUi(this);都删了,因为根本没用到界面【直接在应用程序输出那里显示,界面只是为了connect方法】,不懂的请细看注释,再不懂就问我吧提示:我在我的单片机或arm设置发送的最后一位数据是‘~’,即“123456~”的形式,用~符号识别是否真的结束【因为串口常常只接受一半数据,就触发serialRead函数了,例如常常先发送"123"再发送"456~",然后读取就出错了,这是个秘密!!】[cpp] view plaincopyprint?#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { serial = new QSerialPort("COM4"); //串口号,一定要对应好,大写!!!下面这些设置都是针对单片机11.0592的晶振的,但是串口号就要修改,假如不是这种情况,那么波特率之类很可能也要改!! serial->open(QIODevice::ReadWrite); //读写打开 serial->setBaudRate(QSerialPort::Baud9600); //波特率 serial->setDataBits(QSerialPort::Data8); //数据位 serial->setParity(QSerialPort::NoParity); //无奇偶校验 serial->setStopBits(QSerialPort::OneStop); //无停止位 serial->setFlowControl(QSerialPort::NoFlowControl); //无控制 connect(serial,SIGNAL(readyRead()),this,SLOT(serialRead())); //连接槽 } MainWindow::~MainWindow() { delete ui; //下面两行不能忘了哦 serial->close(); delete serial; } void MainWindow::serialRead() { static QByteArray allData; //静态变量!!在串口只发送一半的时候用来累加数据 QByteArray dataTemp; //每次读到的数据,可能只是部分的,大多数情况下是正确的,大约1/5会出错 while (!serial->atEnd()) { QByteArray dataTemp = serial->readAll(); //因为串口是不稳定的,也许读到的是部分数据而已,但也可能是全部数据 if( dataTemp.data()[dataTemp.length() - 1] == '~'){ //当临时数据最后一位是'~',代表一条数据读完了 allData += dataTemp; //总数据加上临时数据 allData.resize(allData.size() - 1); //删除结尾的~符号 qCritical() << allData; //这时候allData将是你要的数据 allData.clear(); //清除数据!!!!! } else{ //当最后一位数据不是'~',即未读完 allData += dataTemp; //每次累加这部分数据,因为可能没发完 } } }
0 0
- QT5 串口应用
- VS2010 + QT5 SerialPort 串口应用实例总结
- Qt5的串口使用
- Qt5 串口 usb
- qt5实现串口通信
- Qt5串口编程详解
- QT5串口通信
- QT5串口编程
- QT5.2 串口编程
- Qt5实现串口通信
- Qt5实现串口通信
- qt5串口简易操作
- QT5 的串口通信
- Qt5 串口通信
- QT5 串口数据类型转换
- QT5串口编写
- QT5 串口收发实例代码
- Qt5串口编程详解【新版】
- [服务器开发]可伸缩系统的设计模式(译)
- ZOJ-3210
- 平衡二叉树 1
- 几款整站抓取的工具
- IOS学习笔记---跑马灯与彩灯切换
- QT5 串口应用
- STM32 USART串口的学习与体会
- 什么是CDN?
- 《Master Opencv...读书笔记》卡通化效果移植到android系统
- Eucalyptus云平台搭建
- Tomcat 系统架构与设计模式,第 1 部分: 工作原理
- UILabel仿qq对话
- 超详细在Ubuntu下安装JDK图文解析
- 查询innodb表时报错:ERROR 1286 (42000): Unknown table engine 'InnoDB'