Qextserialport库知识小结

2018-10-08  本文已影响131人  FlyingPig_

0x0

在使用Qt4做串口通信时,存在以下几种第三方库可以使用:

其中QtSerialPort可以看做时Qt”官方”生产的串口通信库,其在Qt5上已是正式的一员,但由于其出现较晚,在Qt4上QextSerialPort库应用较多.UniSYS2软件的串口通信部分也是以其为基础实现的.现对该库进行简要介绍. QtSerialPort库从1.2beta版本开始以MIT协议开发布. 最新版本为1.2RC,目前开发貌似已经停滞.

官方自我介绍:

QextSerialPort provides an interface to old fashioned serial ports for Qt-based applications. It currently supports Mac OS X, Windows, Linux, FreeBSD.

1 结构

1.1 包含两个类

重点介绍QextSerialPort类,其结构如图1所示.其中QextBaseType仅仅是一个宏定义,用于区别win和POSIX平台.

图1 QextSerialPort类结构

2 使用方式

2.1 直接使用源码

将源码下载后,目录里存在一个qextserialport.pro工程文件,将该文件包含在项目中即可使用.

windows下使用到的文件是:

linux等POSIX平台下则需将win_qextserialport.cpp和win_qextserialport.h 换为 posix_qextserialport.cpp和posix_qextserialport.h。

2.2 编译成动态库调用

1. 下载源码,解压

2. 运行qmake命令,生成makefile后使用make或nmake命令编译

3. 使用时在工程文件中加入:
 CONFIG += extserialport // Qt4
4. 使用

aa

2.3编译成静态库调用

1. 在qextserialport.pro文件中加入
 CONFIG += qesp_static
2. 运行qmake命令,生成makefile后使用make或nmake命令编译

3. 使用时在工程文件中加入:
 CONFIG += extserialport //Qt4

2.4 构建文档

运行命令:

make docs //POSIX平台

3 简单使用

3.1 QextSerialEnumerator类

引自
https://qextserialport.github.io/1.2/examples-enumerator-main-cpp.html

 #include "qextserialenumerator.h"

 #include <QtCore/QList>

 #include <QtCore/QDebug>

 int main()

 {

 QList<QextPortInfo> ports = QextSerialEnumerator::getPorts(); //获取到端口信息

 qDebug() << "List of ports:";

 foreach (QextPortInfo info, ports) {

 qDebug() << "port name:" << info.portName;

 qDebug() << "friendly name:" << info.friendName;

 qDebug() << "physical name:" << info.physName;

 qDebug() << "enumerator name:" << info.enumName;

 qDebug() << "vendor ID:" << info.vendorID;

 qDebug() << "product ID:" << info.productID;

 qDebug() << "===================================";

 }

 return 0;

}

3.2 QextSerialPort类


//代码片段

 //构造QextSerialPort类

QextSerialPort *port = new QextSerialPort("COM4", QextSerialPort::EventDriven); port->open(QIODevice::ReadWrite ); //打开端口

 port->setBaudRate(BAUD9600); //设置波特率

 port->setFlowControl(FLOW_OFF); //设置流量控制

 port->setParity(PAR_NONE); //设置校验

 port->setDataBits(DATA_8); //设置数据位

 port->setStopBits(STOP_1); //设置停止位

 port->write("hello"); //向串口写入数据

port->close(); //关闭串口

4 注意事项

https://qextserialport.github.io/1.2/qextserialport-members.html

https://qextserialport.github.io/1.2/qextserialport.html#details

struct PortSettings

{

 BaudRateType BaudRate;

 DataBitsType DataBits;

 ParityType Parity;

 StopBitsType StopBits;

 FlowType FlowControl;

 long Timeout_Millisec;

};
上一篇 下一篇

猜你喜欢

热点阅读