之前学习嵌入式驱动,做一个红外摄像头的项目,在操作系统之上直接操作LCD显示屏,显示图像。后来听说Qt能够跨平台,跨window,Android,Linux三个平台,而且做项目必须有个图形界面,看起来高大上。之后根据这个项目需要,自学Qt5.6,写个博客记录一下自己学习过程。
之前看过Qt的基本操作,一些类的用法,还有信号与槽的机制。
开始着手项目,首先是串口通信。通过万能的度娘,发现编写串口通信,有两种方法:
一是QT本身自带的模块,QSerialPort库和QSerialPortInfo库,在相应的头文件加上这两个库:
- #include <QtSerialPort/QSerialPort>
- #include <QtSerialPort/QSerialPortInfo>
在头文件中声明私有对象:
- QSerialPort *my_serialport=new QSerialPort;
在函数中开始设置串口的各种参数:
- my_serialport->setPortName(portnum);
- my_serialport->open(QIODevice::ReadWrite);
- my_serialport->setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections);
- my_serialport->setDataBits(QSerialPort::Data8);
- my_serialport->setParity(QSerialPort::NoParity);
- my_serialport->setStopBits(QSerialPort::OneStop);
- my_serialport->setFlowControl(QSerialPort::NoFlowControl);
关闭串口:
读取缓冲区的数据:
- QByteArray requestData=my_serialport->readAll();
等待缓冲区有几个字节再读取:
- if(my_serialport->waitForReadyRead(5))