123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- #pragma once
- #include <functional>
- #include <string>
- #include <map>
- //常量定义
- #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<string, stru_EDS_SMG> glo_Send_RF80Fun;
- //消息接收列表
- std::map<string, stru_EDS_SMG> glo_Recv_RF80Fun;
|