#include "QSerialPortUtil.h" #include <iostream> #include <QTimer> #include <QDateTime> #include "common/utils/QByteUtil.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 (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 * 10); // } this->mockReceivData(portName); } 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(QString portName) { QByteArray buffer; if (portName == "SignalGenerator") { // signal generator buffer.append("$GLN,0,192.168.000.126,255.255.255.000,192.168.000.001,192.168.001.126,255.255.255.000,192.168.001.001,255.255.255.255,3000,2000,2001*75").append("\r\n"); buffer.append("$GLF,1,0,20210929,1,1,1,-0.01,20000,0,2,50,1*48").append("\r\n"); buffer.append("$GPZDA,192157.00,01,01,2000,0,01*5C").append("\r\n"); buffer.append("$GPMJD,192157.00,51544,0,01*73").append("\r\n"); buffer.append("$GLC,0,0*48").append("\r\n"); } else if (portName == "FrequencyTuning") { // frequency tuning buffer.append("$GLN,0,192.168.1.126,255.255.255.0,192.168.1.1,255.255.255.255,3000,2000,2001*71").append("\r\n"); buffer.append("$GLF,0,0,0,0,00000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1*4C").append("\r\n"); buffer.append("$GLP,0,0,0,0,20000*45").append("\r\n"); } else if (portName == "TimeSwitcher") { // time switcher buffer.append("$GPZDA,211219.00,01,01,2000,0,01*5D").append("\r\n"); buffer.append("$GLC,0*54").append("\r\n"); buffer.append("$GLF,1,1,1,010,100,100,000,000,0,-235136964.75,-235136959.89,0,0,0,5,50,-16390,-16710,-15660,-16700,-17300,11111,11111,11111*51").append("\r\n"); buffer.append("$GLN,0,192.168.000.126,255.255.255.000,192.168.000.001,192.168.001.126,255.255.255.000,192.168.001.001,255.255.255.255,3000,2000,2001*75").append("\r\n"); } else if (portName == "FreqSwitcher") { // freq switcher buffer.append("$GLF,0,4,0,0,22000,-745,-776,0,0,0,0,0,100,100,0,0,0,1,00000,111111,111111*54").append("\r\n"); buffer.append("$GLC,0*54").append("\r\n"); buffer.append("$GLN,0,192.168.000.123,255.255.255.000,192.168.000.001,192.168.001.123,255.255.255.000,192.168.001.001,255.255.255.255,3000,2000,2001*75").append("\r\n"); } else if (portName == "BCodeTerminal") { // b-code terminal buffer.append("$2621304-20 210100112100f90210.035422*"); buffer.append("$3e21304-20 2101001111304-20 2101001210801H.1.00S.1.030008432*"); } else if (portName == "TimeReplicator") { // time replicator buffer.append("$2B21308-13 21010012200000000000000000faf0*"); buffer.append("$3C21308-13 2101008220322222222111111110000000000000000ca24*"); buffer.append("$3C21308-13 21010052207111111111111111111111111000000005984*"); buffer.append("$3C21308-13 2101005121511111111111111111111111111111111bcfe*"); buffer.append("$3E21308-13 2101001211308-13 2101001210929H.1.00S.1.00000292b*"); } else if (portName == "FreqReplicator") { // freq replicator buffer = QByteUtil::hexStringToBytes("AA550015010001000101010101010101010101010101010101EB"); buffer.append(QByteUtil::hexStringToBytes("AA550015020001000101010101010101010101010101010101E8")); } emit dataRecieved(buffer); }