#include "QSerialPortUtil.h" #include <iostream> #include <QTimer> #include <QDateTime> #include "SettingConfig.h" QSerialPortUtil::QSerialPortUtil(QObject *parent) : QObject(parent) { // 其他默认配置 serial.setDataBits(QSerialPort::Data8); serial.setParity(QSerialPort::NoParity); serial.setStopBits(QSerialPort::OneStop); serial.setFlowControl(QSerialPort::NoFlowControl); } void QSerialPortUtil::openSerialPort(QString portName, int baudRate) { serial.setPortName(portName); // 串口名 serial.setBaudRate(baudRate); // 波特率 open = serial.open(QIODevice::ReadWrite); if (SettingConfig::getInstance().WORK_TYPE == "mock") { // mock data received per second QTimer * timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &QSerialPortUtil::mockReceivData); timer->start(1000); } else { if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); } } if (open == true) { // 绑定信号与槽 connect(&serial, &QSerialPort::readyRead, this, &QSerialPortUtil::readData); // mock data received per second // QTimer * timer = new QTimer(this); // connect(timer, &QTimer::timeout, // this, &QSerialPortUtil::mockReceivData); // timer->start(1000); } } void QSerialPortUtil::sendData(QByteArray data) { if (this->open == true) { std::cout << data.toStdString() << std::endl; serial.write(data); } } void QSerialPortUtil::readData() { QByteArray buffer = serial.readAll(); emit dataRecieved(buffer); } bool QSerialPortUtil::isOpen() { return this->open; } void QSerialPortUtil::mockReceivData() { QDateTime now = QDateTime::currentDateTime(); QByteArray buffer; buffer.append("$XHTSXHPT0001160101002451276|1000000000000001101|+0.000000000000|+0.033835598632|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000|+0.000000000000Q").append("\r\n") .append("$XHTDB114|1|+00000|-00296|-00362|+00115|-01472|-01109|-00908|-01427|+00125|+00202|-00228|-00861|-00958|-00957|-00657|-00959").append("\r\n"); emit dataRecieved(buffer); }