Qt串口通信-qextserialport

其实一开始使用的是Qt5SerialPort(Qt5SerialPort.lib)串口通信,但是在使用后,测试过程中发现内存一直在增长,经过定位后发现是串口通信中存在一个大bug,其serialIo.waitForReadyRead(time)会阻断进程,造成内存累计增加,但是不加又没有返回数据,比较有意思的是,我在网上下载串口助手,连续发送时,也发现内存在增加,查找一些资料以及实验后,最后发现qextserialport很好用,而且没有出现内存泄漏。除此之外,qextserialport支持跨线程定义的,这一点Qt5SerialPort却不支持。下边记录一下详细实现过程:
【1】首先在网上查找qextserialport-1.2win-alpha下载,然后将六个文件添加到你的工程中即可,分别是qextserialbase.h,qextserialport.h,win_qextserialport.h,以及对应的qextserialbase.cpp,qextserialport.cpp,win_qextserialport.cpp
【2】详细代码
	#include "win_qextserialport.h"
	Win_QextSerialPort serial;
	serial.setPortName("COM5");
	if (!serial.open(QIODevice::ReadWrite))
	{
		return;
	}
	serial.setBaudRate(BAUD115200);
	serial.setDataBits(DATA_8);
	serial.setParity(PAR_NONE);
	serial.setFlowControl(FLOW_OFF);
	serial.setStopBits(STOP_1);
	
   	QByteArray byteArray;
	QString sendstr = "DE 01 05 59 83";
	QByteArray writeData;
	writeData = QByteArray::fromHex(sendstr.toLatin1());//转十六进制
	serial.setTimeout(30);
	serial.write(writeData);
	char data[50];
	serial.read(data, 50);//读取串口数据
	QByteArray ba((char*)data, 50);
	byteArray = ba.toHex();//数据转十六进制

有兴趣的人欢迎评论交流。

你可能感兴趣的:(串口通信,QtextSerialport)