#ifndef LOTMACHINE_H #define LOTMACHINE_H #include "gatewaytcpclient.h" #include "comport.h" #include "comm/typedef.h" #include #include #include #include #define USE_TCP_COMM 0 #define USE_SERIAL_COMM 1 class LotMachine: public QObject { Q_OBJECT public: explicit LotMachine(QObject *parent = NULL); virtual ~LotMachine(); public: void initConnectMode(s16 val = 0);//初始化通讯连接方式 void setConfigFileName(QString configfilename); void setComportName(QString portName);//设置串口名称 QString getConfigFileName(); int startCommunication(); private: QString m_configFileName; QByteArray m_receiveBuff;//接收到的buf QByteArray m_keyBuff;//键值对buf s16 m_reFlag; private: s16 m_connectMode; //通讯连接方式 0:网口,1:串口 // 通讯线程和网络连接 QThread * m_pTcpThread; GatewayTcpClient * m_pTcpClient; QThread * m_pComThread; ComPort * m_pComPort; // 连接 public: inline int isConnected() const { return m_connected; } private: int m_startComm; int m_connected; // 机器连接状态. 0, 未连接; 1, 连接中; 2, signals: // 发送数据到机器的信号 void siSendData(QByteArray dat); void siRunLotDataAction(QString cmd);//执行物联网数据动作 void siConnectToMqtt();//与网关已连接 private slots: // 和线程通讯的槽 void slotConnectSta(int sta); // 连接状态改变的槽函数 void slotConnectErr(QString errinfo); // 接收到通讯错误槽函数 void slotReceiveData(QByteArray dat); // 接收到数据的槽函数 void slotIfOpenSerialPort(int val);//串口是否打开 private: QString getJsonValue(QString name1,QString name2 = NULL);//获取键值对属性值 public: void sendLotDataToGateway(QString str);//发送物联数据到网关 }; #endif // LOTMACHINE_H