#ifndef SLAVEPC_H #define SLAVEPC_H #include #include #include #include #include #include "WorkForm/working_page.h" class SlavePC :public QThread { Q_OBJECT public: SlavePC(Working_Page *page=0); virtual void run(); ~SlavePC(); public: Working_Page *work_page; enum CMD_TYPE { Heartbea = 0x0A01, ExitSlave, EnterSlave, GetDischargeParam, SetDischargeParam, //0A05 GetCellData, GetFileInfo, GetFile, SetChargeParam, GetChargeParam, //0A0A StartDischarge, PausetDischarge, GetDischargeData, StartCharge, PauseCharge, //0A0F GetChargeData, //0A10 GetAdjustData, SetAdjustParm, Adjust_StartDischarge, Adjust_StartCharge, Adjust_Stop, //0A15 EnterHome, GetCycleParam, SetCycleParam, NewBatt, //0A19 设置电池组名 ChangedBatt, //0A1A DelBatt, StopDischarge, StopCharge, ClearAlarm, StartCycle, PauseCycle, //0A20 StopCycle, GetBattName, //0A22 获取电池组列表 GetFileName, GetSelectFile, SetTKQState, //0a25 未使用 SetFanState, //0A26 未使用 A27, A28, A29, GetVersion //0A2A }; enum RTN_TYPE { SUCCEED = 0, LEN_ERR, CRC_ERR, SLAVEMODE_ERR, FILE_DATA_ERR, START_ERR, OTHER_ERR, SYSTEM_WORKING }; private: int FD; bool RUN_EN; quint8 waitRecvCnt; int if_change; quint8 Mon_Source; static const int CommOK = 0; static const int CommTxError = -1; static const int CommRxError = -2; static const int CommDataError = -3; static const int CommWrFailError = -4; private: bool CheckLen(FRAME_DATA *recv); bool CheckSYNCode(FRAME_DATA *recv); bool CheckCRC(FRAME_DATA *recv); bool ReadFrameHead(FRAME_DATA *recv, FRAME_DATA *Sent); bool WriteFrameData(FRAME_DATA *Sent); bool ReadFrameData(FRAME_DATA &recv, FRAME_DATA &Sent); quint16 getMonData(quint8 *info, quint16 MonNum); //quint16 getAdjData(quint8 *info); quint16 getTestData(quint8 *info); quint8 *getFileDataHead(FILE_LIST_DATA &data,TEST_DATA_INFO &test_info, quint8 total, quint8 Index); quint16 getPageFileData(FRAME_DATA &recv, FRAME_DATA &Sent); quint16 getFileSmallBlock(FRAME_DATA &recv, FRAME_DATA &Sent); quint16 getBattName(FRAME_DATA &recv, FRAME_DATA &Sent); quint16 getfileName(FRAME_DATA &recv, FRAME_DATA &Sent); quint16 getSelectFile(FRAME_DATA &recv, FRAME_DATA &Sent); void SaveTestParam(const QString &fname,TEST_PARAM_XML &test_param); void NewBattFile(quint8 *info); bool SelectBatt(quint8 *info); void DeleteBatt(quint8 *info); void SlaveClearHeart(); void SlaveDisposeCMD(FRAME_DATA &recv, FRAME_DATA &Sent); void SlaveSentFrame(FRAME_DATA &recv, FRAME_DATA &Sent); void SlaveResponse(FRAME_DATA &recv, FRAME_DATA &Sent); void SlaveMode(FRAME_DATA &recv, FRAME_DATA &Sent); void setTestCommParam(TEST_PARAM_XML &test_param, void *comm_param); void getTestCommParam(TEST_PARAM_XML &test_param, void *comm_param); void dataReceived();//解析数据 void set_speed(int fd, int speed); int set_Parity(int fd,int databits,int stopbits,int parity); int OpenDev(const char *Dev); void SetDevAttr(int bitrate, char bitlen, char stopbitlen, char checktype); int WriteDev(void *buf, int len); int ReadDev(void *buf, int len); quint16 getVersion(FRAME_DATA &recv, FRAME_DATA &Sent); signals: void sendStart(int,QString); void SendCurrAdjCMD(int,int); void SendInterface(int); void sendParam(int); }; #endif // SLAVEPC_H