PlotterHMI/machine/machine.h

143 lines
4.9 KiB
C
Raw Normal View History

2024-02-06 06:19:53 +00:00
#ifndef MACHINE_H
#define MACHINE_H
#include "tcp/tcpclient.h"
#include "bmp/creatprintbmp.h"
#include "printinfo/mcfiles.h"
#include "machine/comm/crc16.h"
#define SEND_STEP0 0
#define SEND_STEP1 1
#define SEND_STEP2 2
#define SEND_STEP3 3
#define SEND_STEP4 4
#define SEND_STEP5 5
#define SEND_STEP_MAX 10
#define SEND_ANSWER 100
class Machine : public QObject
{
Q_OBJECT
public:
explicit Machine(QObject *parent = NULL);
virtual ~Machine();
protected:
QString m_mcName;
QString m_mcIp;
private:
// 通讯线程和网络连接
TcpClient * m_pTcpClient;
QThread * m_pTcpBmpThread;
//生成打印数据
CreatPrintBmp * m_pCreatPrintDat;
MCInfo m_mcInfo; // 机器信息
ParaStruct m_mcPara; // 机器参数信息 配置信息
ParaStruct m_wkPara; // 工作参数信息
int m_totalSendNum;//传输文件时总共发送的包数
int m_totalPacketNum;//传输文件时总的包数
QTimer *m_pSendTimer;
FileTransCtrl m_transCtrl;
int m_fileTransEn;
int m_transBreak;
PlotFileList *m_pPlotFileList;//文件数据列表
CompBmpHead *m_pCompBmpHead;//压缩位图文件头
private:
int m_connected; // 机器连接状态. 0, 未连接; 1, 连接中; 2,
MCStatus m_mcStatus; // 机器状态
int m_mcParaEn;
int m_wkParaEn;
public:
McPrintInfo m_mcPrintInfo;//机器打印信息(包括机器的连接状态和工作状态)
private:
void startFileTrans(FileTransCtrl & transCtrl);
void startFileDyTrans(FileTransCtrl & transCtrl);//开始动态传输文件
void transFileData(FileTransCtrl & transCtrl, int pktidx);
void setAParasToMachine(int type, int idx, u32 value);
void setMcStatusAsMc(u8 * buff, u16 len, int toggle);
void updateFirmware(); // 下位机升级
// 连接
public:
inline int isConnected() const { return m_connected; }
public:
void setIpAndPort(QString mcName, QString serverIp, quint16 serverPort, QString localIp, quint16 localPort);
void startCommunication();
//机器信息
inline const MCInfo &getMcInfo() { return m_mcInfo; }
inline int getTotalSendNum() { return m_totalSendNum; }
inline int getTotalPacketNum() { return m_totalPacketNum; }
inline const MCStatus & getMcStatus() {return m_mcStatus; }
inline const ParaStruct & getMcPara() {/*m_mcParaEn = 0; */ return m_mcPara; }
inline const ParaStruct & getWkPara() {/*m_wkParaEn = 0; */ return m_wkPara; }
void getInfoFromMachine();
void getParasFromMachine(int type, int id); // 读取机器参数
void getTransResultFromMachine(int fileid);
void sleep(int sec);
public:
void setMcStatus(int stacode, int para = 0); // 设置机器状态
// 设置机器参数
void setParasToMachine(ParaStruct & para);
void setAMcPara(int id, u32 value);
void setAWkPara(int id, u32 value);
void startWork(); // 启动工作
void pauseWork(); // 暂停工作
// 文件传输命令
int sendFileProc(int idx, u8 *dat, int datSize);
int dySendFileProc(int type, int idx, int id, u8 * pDatBuff); //动态传输文件
int sendAPPFileProc(int type, int idx, int id, AppFileHead &fileHead, u8 *pDatBuff); //发送升级文件
// 机器工作命令
void mcWorkCmd(int workcode, int para1 = 0 , int para2 = 0);
void creatPrintDat(int fileIdx,int setFlag = 1); //生成打印数据
void stopPrint(); //停止打印
2024-02-06 06:19:53 +00:00
void deleteFilePrintDat(int fileIdx);//删除文件打印数据
void moveFilePrintDat(int fileIdx,int dir = -1);//移动(上下移)文件打印数据
void invalidateWorkFile(int idx = 0); // 文件失效
signals:
// 发送数据到机器的信号
void siSendData(QByteArray dat);
void siSendDataDone();
void siStatusChange(int); // 状态改变信号
void siMcInfoChange(); // 机器信息改变信号
void siParaChange(int type, int id); // 参数更新信号
void siTransResultChange(); // 文件传输结果信号
void siTransProgress(u8 fileType, int send, int total); // 文件传输结果信号
void siCreatData(); //生成要发送的数据
void siCreatBmpBlockDatAndSend();//生成位图数据块数据并发送
void siOneFilePrintFinished(int mcNum, int fileIdx, int refreshFlag);//完成一个文件的打印
void siRefreshPrintProgress(int mcNum, int fileIdx);//刷新打印进度
2024-02-06 06:19:53 +00:00
private slots:
void slotConnectSta(int sta); // 连接状态改变的槽函数
void slotConnectErr(QString errinfo); // 接收到通讯错误槽函数
void slotReceiveData(QByteArray dat); // 接收到数据的槽函数
void onSendTimer(void);
void slotSendDatToMc(QByteArray dat);//发送打印数据
2024-02-06 06:19:53 +00:00
void slotSendPlotFileListToMc(int idx);//发送设置文件列表
public slots:
void breakFileTrans(); // 打断文件传输
};
#endif // MACHINE_H