VS+Qt 串口读电表地址

VS2019读串口操作。代码要想正常运行,需要进行相关配置,参考相关配置
改代码使用698协议读电表地址,串口监听显示电表接收和发送正常,但是PC端接收报文不完整,详细原因等待进一步研究。

#include <QCoreApplication>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QDebug>
#include <QThread>

int main(int argc, char* argv[]) {
	QCoreApplication a(argc, argv);

	// 获取可用的串口信息
	qDebug() << "Available ports:";
	foreach(const QSerialPortInfo & info, QSerialPortInfo::availablePorts()) {
		qDebug() << "Port: " << info.portName();
		qDebug() << "Description: " << info.description();
		qDebug() << "Manufacturer: " << info.manufacturer();
	}

	// 设置串口参数
	QSerialPort* serial = new QSerialPort();
	serial->setPortName("COM3");  // 设置串口名字
	serial->setBaudRate(QSerialPort::Baud9600);  // 设置波特率
	serial->setDataBits(QSerialPort::Data8);      // 设置数据位
	serial->setParity(QSerialPort::EvenParity);     // 设置校验位
	serial->setStopBits(QSerialPort::OneStop);    // 设置停止位
	serial->setFlowControl(QSerialPort::NoFlowControl);  // 设置流控制

	// 打开串口
	if (serial->open(QIODevice::ReadWrite)) {
		qDebug() << "Serial port opened successfully.";

		// 发送数据
		const char* a = "68 17 00 43 45 AA AA AA AA AA AA a1 D8 FB 05 01 02 40 01 02 00 00 BB 0B 16";
		QByteArray requestData(a);
		qint64 bytesWritten = serial->write(QByteArray::fromHex(requestData), 25);
		//serial.waitForBytesWritten(bytesWritten);  //和以下代码二选一
		serial->flush();
		qDebug() << "Bytes written: " << bytesWritten;
		qDebug() << "data send: " << QByteArray::fromHex(requestData);
		QByteArray responseData;
		//QThread::sleep(1);
		// 读取数据
		if (serial->waitForReadyRead(3000)) {  // 3秒内等待数据准备

			responseData = serial->readAll();
			qDebug() << "Response data: " << QByteArray::fromHex(responseData);
			//处理接收到的数据
		}
		else {
			qDebug() << "Timeout waiting for data.";
		}
		/*QThread::sleep(1);
		QByteArray responseData = serial.readAll();*/
		//qDebug() << "Response data: " << responseData;

		// 关闭串口
		serial->close();
	}
	else {
		qDebug() << "Error opening serial port: " << serial->errorString();
	}

	return a.exec();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值