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);
|
|
|
|
|
2024-03-08 08:33:05 +00:00
|
|
|
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();//生成位图数据块数据并发送
|
2024-03-08 08:33:05 +00:00
|
|
|
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);
|
2024-03-08 08:33:05 +00:00
|
|
|
void slotSendDatToMc(QByteArray dat);//发送打印数据
|
2024-02-06 06:19:53 +00:00
|
|
|
void slotSendPlotFileListToMc(int idx);//发送设置文件列表
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
void breakFileTrans(); // 打断文件传输
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // MACHINE_H
|