#pragma once #include #include #include //常量定义 #define GEN_CF80_SEND_LEN_max 64 //发送指令最大长度 #define GEN_CF80_SEND_LEN_min 8 //发送指令最小长度 #define GEN_CF80_RECV_LEN 512 //接收指令最大长度 #define GEN_CF80_CMDHEAD_LEN 12 //指令头长度 #define GEN_CF80_STATUS_LEN 5 //指令可用状态集 #define SEND_HEAD 0x3C// < #define RECV_HEAD 0x3E// > #define TAB 0x20//空格 #define CR 0x0D //回车 \r #define LF 0x0A //换行 \n enum RF80_REGULATION_LEVEL { //故障等级 REG_ERRO, REG_WARN }; //发生器RF80状态 enum enGenStatus { GS_NULL, GS_START, GS_INIT, GS_STANDBY, GS_EXPOSURE, GS_ERROR, GS_CONFIG, GS_SHUTDOWN, GS_MAX, }; //指令状态集 struct stru_EDS_Status { char status[GEN_CF80_STATUS_LEN]{ 0 };//O I S X E stru_EDS_Status::stru_EDS_Status(const string data = "") { if (data.length() == GEN_CF80_STATUS_LEN) { strncpy(status, data.c_str(), GEN_CF80_STATUS_LEN); } else { strncpy(status,"00000", GEN_CF80_STATUS_LEN); } }; string changeState(enGenStatus value) { switch (value) { case GS_NULL: break; case GS_START: { strcpy(status, "10000"); return "SERIAL_START"; }break; case GS_INIT: { strcpy(status, "01000"); return "SERIAL_INIT"; }break; case GS_STANDBY: { strcpy(status, "00100"); return "SERIAL_STANDBY"; }break; case GS_EXPOSURE: { strcpy(status, "00010"); return "SERIAL_EXPOSURE"; }break; case GS_ERROR: { strcpy(status, "00001"); return "SERIAL_ERROR"; }break; case GS_CONFIG: { return "SERIAL_CONFIG"; }break; case GS_SHUTDOWN: { return "SERIAL_SHUTDOWN"; }break; default: break; } }; char* GetState() { if(strncmp(status, "10000", GEN_CF80_STATUS_LEN) == 0) return "SERIAL_START"; else if (strncmp(status, "01000", GEN_CF80_STATUS_LEN) == 0) return "SERIAL_INIT"; else if (strncmp(status, "00100", GEN_CF80_STATUS_LEN) == 0) return "SERIAL_STANDBY"; else if (strncmp(status, "00010", GEN_CF80_STATUS_LEN) == 0) return "SERIAL_EXPOSURE"; else if (strncmp(status, "00001", GEN_CF80_STATUS_LEN) == 0) return "SERIAL_ERROR"; }; bool compare(const stru_EDS_Status& data) { for (int i = 0; i < GEN_CF80_STATUS_LEN; i++) { if ('1' == data.status[i] && '1' == status[i]) { return true; } } return false; }; }; //消息结构体 struct stru_EDS_SMG { string strParamArry; //参数格式列表 stru_EDS_Status struStatus; //指令可用状态 }; //消息发送列表 std::map glo_Send_RF80Fun; //消息接收列表 std::map glo_Recv_RF80Fun;