11/25
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
#ifndef SERIAL_EQUIPMENT_H
|
||||
#define SERIAL_EQUIPMENT_H
|
||||
|
||||
#include <QtSerialPort/QSerialPort>
|
||||
#include <QtSerialPort/QSerialPortInfo>
|
||||
#include <QList>
|
||||
#include <QTime>
|
||||
#include <QCoreApplication>
|
||||
#include <QEventLoop>
|
||||
#include <QDebug>
|
||||
#include <QMutex>
|
||||
#include <QThread>
|
||||
#include <QFile>
|
||||
#include "XYComFunc_global.h"
|
||||
//#include "CommomFunc/tool.h"
|
||||
//#include "CommomFunc/datacheck.h"
|
||||
#include "commonStruct.h"
|
||||
//串口设备类
|
||||
//实现串口通讯,目前支持固定包头固定长度的帧的解析。若非固定包头固定长度,请重写接收事件
|
||||
|
||||
|
||||
/**
|
||||
* @brief 串口设备类
|
||||
* 实现串口通讯,默认支持固定包头包围,checksum,下标01为数据包长度的变长协议包,若不适用,清重写dataReceive事件
|
||||
*
|
||||
*/
|
||||
class XYCOMFUNC_EXPORT SerialEquipment:public QObject
|
||||
{
|
||||
|
||||
Q_OBJECT
|
||||
|
||||
Q_SIGNALS:
|
||||
//帧接收事件
|
||||
void onFrameReceived(QByteArray *receiveBuffer);
|
||||
void onFrameSended(QByteArray *sendBuffer);
|
||||
void onDataReceived(QByteArray *revBuffer);
|
||||
|
||||
|
||||
public:
|
||||
//默认构造
|
||||
SerialEquipment();
|
||||
//构造
|
||||
SerialEquipment(QString portName,QSerialPort::BaudRate baunRate,QSerialPort::DataBits dataBits,QSerialPort::Parity parity,QSerialPort::StopBits stopBits,int readBufferSize);
|
||||
|
||||
SerialEquipment(QString portName);
|
||||
|
||||
SerialEquipment(QString portName,QSerialPort::BaudRate baunRate);
|
||||
~SerialEquipment();
|
||||
//设置串口参数
|
||||
void setSerialInfo(QString portName,QSerialPort::BaudRate baunRate,QSerialPort::DataBits dataBits,QSerialPort::Parity parity,QSerialPort::StopBits stopBits,int readBufferSize);
|
||||
void setSerialInfo(QString portName, QSerialPort::BaudRate baunRate);
|
||||
//打开串口
|
||||
bool openPort();
|
||||
//关闭串口
|
||||
bool closePort();
|
||||
//获取串口状态
|
||||
bool getPortState();
|
||||
//设置帧头
|
||||
void setFrameHead(QByteArray frameHead);
|
||||
void setFrameTail(QByteArray frameTail);
|
||||
//设置帧长
|
||||
void setFrameSize(int iFramSize);
|
||||
//发送指令
|
||||
bool sendMsg(QString sendBuffer);
|
||||
bool sendMsg(QByteArray buffer);
|
||||
|
||||
void setLogInfo(bool isLog);
|
||||
|
||||
|
||||
SerialLogInfo *GetLogInfo();
|
||||
void delayMsec(int mesc);
|
||||
|
||||
static QList<QString> getAllPorts();
|
||||
|
||||
|
||||
Q_INVOKABLE void setNeedWait(bool value);
|
||||
|
||||
protected:
|
||||
//串口类
|
||||
QSerialPort *_serialPort;
|
||||
//串口号
|
||||
QString _strPortName;
|
||||
//用于暂存帧信息的List
|
||||
QByteArray _tempArray;
|
||||
//QList<char> tempList;
|
||||
//波特率
|
||||
QSerialPort::BaudRate _iBaudRate;
|
||||
//数据位
|
||||
QSerialPort::DataBits _iDataBits;
|
||||
//校验位
|
||||
QSerialPort::Parity _iParity;
|
||||
//停止位
|
||||
QSerialPort::StopBits _iStopBits;
|
||||
//缓冲区读取大小
|
||||
int _iReadBufferSize;
|
||||
//帧长度
|
||||
int _iFrameSize;
|
||||
//暂存上byte
|
||||
char _lastByte;
|
||||
//帧头
|
||||
QByteArray _frameHead;
|
||||
QByteArray _frameTail;
|
||||
|
||||
SerialLogInfo *_logInfo;
|
||||
|
||||
bool _isLog;
|
||||
QMutex* _mutex;
|
||||
|
||||
int testJDCount;
|
||||
int testTotalCount;
|
||||
bool bTestDebug;
|
||||
|
||||
bool needWait;
|
||||
|
||||
|
||||
protected:
|
||||
//出现异常帧时,用于调整帧内容
|
||||
QList<char> adjustList(QList<char> srcList);
|
||||
QByteArray adjustList(QByteArray srcList);
|
||||
void dataReceive1();
|
||||
virtual void dealDate(QByteArray);
|
||||
|
||||
|
||||
protected slots:
|
||||
//串口接收事件
|
||||
virtual void dataReceive();
|
||||
|
||||
virtual bool checkData(QByteArray buffer,int iTailIndex);
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif // SERIAL_EQUIPMENT_H
|
||||
Reference in New Issue
Block a user