Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

895 lines
24 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef _TABLET_CTRL_PROTOCOL_DEF_H
#define _TABLET_CTRL_PROTOCOL_DEF_H
#define CTRL_GD10_CODE 0x55aa55aa
#define CTRL_PLC_CODE 0xFF8899FF
#define MAX_CTRL_CONTENT 150
#define MAX_RECV_MEASURE 1500
#define MAX_SND_DATA 300
#define MAX_NAME_LEN (40) //最大任务名长度
#define MAX_TASK_NAME_LENGTH (60) //任务名长度
#define CLOUD_DEV_ID (0xFFFFFFFF) //云端设备ID
#define MAX_RECV_ELOC_SIZE 4096 //最大电极数目前用一个字节传
typedef enum EN_CONNECT_STATUS
{
EN_STATUS_CONNECT_SUCCESS = 0,
EN_STATUS_DISCONNECT,
EN_STATUS_RECONNECT_FAIL
};
enum EN_DEVICE_TYPE
{
EN_DEV_BROADCAST = 0,
EN_DEV_CLOUND,
EN_DEV_GEOMATIVE,
EN_DEV_GD10,
EN_DEV_PLC
};
enum EN_MEASU_PROC_STATUS
{
EN_MEASU_PROC_SUCCESS = 0,
EN_MEASU_PROC_DATA_ERR,
EN_MEASU_PROC_DB_ERR,
EN_MEASU_PROC_WARINNG
};
enum EN_CABLE_TYPE
{
EN_12_DOUBLE_TAP_LINES=0,
EN_24_SINGLE_TAP_LINES=1,
EN_30_SINGLE_TAP_LINES=2
};
#define EN_DEV_ONLINE 0x71
#define EN_FORCE_LOGIN 0xFE
#pragma pack(1)
typedef struct ST_CTRL_PROTO_HEADER
{
DWORD wIDCode;
WORD wTotalLen;
DWORD dwSeriNO;
UINT32 ucDstAddr;
UINT32 ucSrcAddr;
BYTE ucDstType;
BYTE ucSrcType;
BYTE ucCMD;
BYTE ucDataType;
BYTE Status_code;
BYTE ucPacketNum;
BYTE ucReverse[4]; //高字节第1个字节----测试类型:电阻率0,激电1,自电2
//高字节第2个字节----Org上传标志,0不传,1传
}STCtrlProtoHeader;
typedef struct ST_SYN_DEV_PARAM
{
UINT32 uiMachineID;
BYTE ucHWVer[2];
BYTE ucSWVer[4];
float fTemperature;
float fBatteryVol;
BYTE ucPowerFreq;
BYTE ucCableType;
int iGrThreshold;
BYTE ucBatteryAlarm;
BYTE ucStacking;
BYTE ucChannelNum;
BYTE ucDownLoadNum; //单次下发点数
}STSynDevParam;
typedef struct ST_MODIFY_DEV_PARAM
{
BYTE ucPowerFreq;
BYTE ucCableType;
int iGrThreshold;
BYTE ucBatteryAlarm;
BYTE ucStacking;
BYTE ucDownLoadNum; //单次下发点数
}STModifyDevParam;
typedef struct ST_MEASURE_TASK_PARAM_CLOUD
{
BYTE ucTestType;
BYTE ucTxPeriod;
BYTE ucSptType;
BYTE ucCableLayout;
BYTE ucStacking;
int iSAInterval;
BYTE ucArrayType;
float fXElecDistance; //X方向电极间距
float fYElecDistance; //Y方向电极间距
float fXElecStep; //X方向电极步长
float fYElecStep; //Y方向电极步长
RECT rcGridSize; //网格大小
byte byLineDirection; //测线方向0:X方向 1:Y方向
//float fElecSpace;
}STMeasuTaskParamTOCloud;
typedef struct ST_MEASURE_TASK_PARAM
{
BYTE ucTestType;
BYTE ucTxPeriod;
BYTE ucSptType;
BYTE ucCableLayout;
BYTE ucStacking;
int iSAInterval;
BYTE ucArrayType;
float fElecSpace;
BYTE ucOrgFlg;
char ucTaskID[MAX_NAME_LEN];
}STMeasuTaskParam;
typedef struct ST_SIG_SND_MEASURE_DATA
{
UINT32 dwTsn;
float fA;
float fB;
float fM;
float fN;
float fK;
BYTE ucStack;
ST_SIG_SND_MEASURE_DATA()
{
dwTsn = 0;
fA = fB = fM = fN =0;
ucStack = 0;
fK = 0;
}
}STSigSndDataInfo,*LPSTSigSndDataInfo;
typedef struct ST_MEASURE_DATA_RESULT_BASIC
{
int iID;
float fV;
float fI;
float fR0;
float fSP;
float fK;
BYTE ucAlram;
BYTE ucStack;
float fR0_LC;
}STMeasuDataResBasic, *LPSTMeasuBasicDataRes;
typedef struct ST_MEASURE_DATA_RESULT_BASICEX
{
int iID;
float fA;
float fB;
float fM;
float fN;
float fV;
float fI;
float fR0;
float fSP;
float fK;
BYTE ucAlram;
BYTE ucStack;
float fR0_LC;
}STMeasuDataResBasicEx, *LPSTMeasuBasicDataResEx;
//由于老瞿反馈底层最多只能传输500个字节,所以这里的ORG数据暂时都不传
typedef struct ST_MEASURE_DATA_RESULT_ATTACH_RES
{
float fDevi;
// float fVOrg[48];
// float fIOrg[48];
}STMeasuDataResAttachRes;
typedef struct ST_MEASURE_DATA_RESULT_ATTACH_IP
{
float fM0_LC;
WORD wHL;
float SP_P;
float SP_N;
float fD;
float fr;
BYTE ucTWCnt;
float fETA[20];
float fM0[20];
}STMeasuDataResAttachIP,*LPMeasuDataIPAttr;
typedef struct ST_MEASURE_GR_REQUSET
{
char ucTaskID[MAX_NAME_LEN];
UINT ucStartElec;
UINT ucEndElec;
}STMeasuGRRequest;
typedef struct ST_MEASURE_GR_RESULT
{
// BYTE ucTestedElecNum;//由于在此程序中采用一次只测试一个接地电阻的原则,所以结构体可以这样定义
INT32 ucElecID;
int iP1;
BYTE ucP1Status;
int iP2;
BYTE ucP2Status;
}STMeasuSigGRResult;
typedef struct ST_OPERATION_RESULT
{
BYTE ucRes; //操作结果,成功为1,错误为0,如果此时为1的话,则ucErrCode可忽略
BYTE ucErrCode; //错误码
}STOperResult;
typedef struct ST_SIG_REMOTE_DEV_INFO
{
BYTE ucDevType; //设备类型
UINT32 uiDevID; //设备号
BYTE byDevStatus; //设备状态0--在线, 1--离线
bool operator < (const ST_SIG_REMOTE_DEV_INFO &A) const
{
if (ucDevType < A.ucDevType)
return true;
else if (ucDevType == A.ucDevType)
return (uiDevID < A.uiDevID) ? true : false;
else
return false;
}
}STSigRemoteDev;
typedef struct ST_REM_PLC_DATA_INFO
{
BYTE ucPacketIndex;
BYTE ucResult;
UINT32 uiAnaLogQua[8];
BYTE ucReseverse[4];
BYTE ucCtrlK1;
BYTE ucCtrlK2;
BYTE ucCtrlK3;
BYTE ucCtrlK4;
BYTE ucCtrlK5;
BYTE ucCtrlK6;
BYTE ucCtrlK[4];
BYTE ucCtrlReservse;
}STRemPlcDataInfo;
typedef struct ST_CABLE_INFO
{
BYTE ucDir; //电缆方向
BYTE ucID; //电缆ID
BYTE ucPowe; //电压
}STCableInfo;
typedef struct ST_REM_CABLE_CALL_INFO
{
BYTE ucTotalCount;
ST_CABLE_INFO stCableInfo[255+1];
}STRemCableCallInfo;
/*---------------测井结构体begin-----------------*/
//下发测井参数结构体
typedef struct ST_LOGGING_PARAMETER_SETTING_REQ
{
BYTE byLogTypes; //工作模式0x01(0000 0001):SP电阻率模式
//0x02(0000 0010) : 长电位电阻率模式
//0x04(0000 0100) : 短电位电阻率模式
//0x08(0000 1000) : 梯度电阻率模式
//0x08(0000 1001) : 梯度电阻率模式和SP电阻率模式
//0x0F(0000 1111) : 四种模式组合等等
BYTE byLogDirection; //测井方向 0:向上 1:向下
float fSamplingInterval; //AD采样频率
float fDepth; //深度
float fLoggingDistance; //测试距离(m
float fPeriod; //周期
ST_LOGGING_PARAMETER_SETTING_REQ()
{
memset(this, 0, sizeof(ST_LOGGING_PARAMETER_SETTING_REQ));
}
}STLoggingParamSettingReq;
typedef struct ST_LOGGING_PARAMETER_SETTING_RES
{
BYTE byStatusCode; //0:成功; 非0:错误码
ST_LOGGING_PARAMETER_SETTING_RES()
{
memset(this, 0, sizeof(ST_LOGGING_PARAMETER_SETTING_RES));
}
}STLoggingParamSettingRes;
//开始测试结构体
typedef struct ST_LOGGING_START_TEST_REQ
{
UINT32 uiTestID; //开始测试点ID
ST_LOGGING_START_TEST_REQ()
{
memset(this, 0, sizeof(ST_LOGGING_START_TEST_REQ));
}
}STLoggingStartTestReq;
typedef struct ST_LOGGING_START_TEST_RES
{
BYTE byStatusCode; //0:成功; 非0:错误码
ST_LOGGING_START_TEST_RES()
{
memset(this, 0, sizeof(ST_LOGGING_START_TEST_RES));
}
}STLoggingStartTestRes;
//暂停测试结构体
typedef struct ST_LOGGING_PAUSE_TEST_REQ
{
char szTaskID[MAX_NAME_LEN];
ST_LOGGING_PAUSE_TEST_REQ()
{
memset(this, 0, sizeof(ST_LOGGING_PAUSE_TEST_REQ));
}
}STLoggingPauseTestReq;
typedef struct ST_LOGGING_PAUSE_TEST_RES
{
BYTE byStatusCode; //0:成功; 非0:错误码
ST_LOGGING_PAUSE_TEST_RES()
{
memset(this, 0, sizeof(ST_LOGGING_PAUSE_TEST_RES));
}
}STLoggingPauseTestRes;
//继续测试
typedef struct ST_LOGGING_CONTINUE_TEST_REQ
{
char szTaskID[MAX_NAME_LEN]; //任务ID
UINT32 uiTestID; //继续测试开始点
ST_LOGGING_CONTINUE_TEST_REQ()
{
memset(this, 0, sizeof(ST_LOGGING_CONTINUE_TEST_REQ));
}
}STLoggingContinueTestReq;
typedef struct ST_LOGGING_CONTINUE_TEST_RES
{
BYTE byStatusCode; //0:成功; 非0:错误码
ST_LOGGING_CONTINUE_TEST_RES()
{
memset(this, 0, sizeof(ST_LOGGING_CONTINUE_TEST_RES));
}
}STLoggingContinueTestRes;
//结束测试
typedef struct ST_LOGGING_END_TEST_REQ
{
char szTaskID[MAX_NAME_LEN]; //任务ID
ST_LOGGING_END_TEST_REQ()
{
memset(this, 0, sizeof(ST_LOGGING_END_TEST_REQ));
}
}STLoggingEndTestReq;
typedef struct ST_LOGGING_END_TEST_RES
{
BYTE byStatusCode; //0:成功; 非0:错误码
ST_LOGGING_END_TEST_RES()
{
memset(this, 0, sizeof(ST_LOGGING_END_TEST_RES));
}
}STLoggingEndTestRes;
//数据结构体
typedef struct ST_LOGGING_DATA_PACKET_REQ
{
UINT32 uiTestID; //测试ID
float fDepth; //深度
float fSP_V; //SP 电压
float fL_V; //长电位电压
float fL_I; //长电位电流
float fL_R; //长电位电阻
float fS_V; //短电位电压
float fS_I; //短电位电流
float fS_R; //短电位电阻
float fG_V; //梯度电压
float fG_I; //梯度电流
float fG_R; //梯度电阻
ST_LOGGING_DATA_PACKET_REQ()
{
memset(this, 0, sizeof(ST_LOGGING_DATA_PACKET_REQ));
}
}STLoggingDataPacketReq;
typedef struct ST_LOGGING_DATA_PACKET_RES
{
UINT32 uiTestID; //任务测试点ID
BYTE byStatusCode; //0:成功; 非0:错误码
ST_LOGGING_DATA_PACKET_RES()
{
memset(this, 0, sizeof(ST_LOGGING_DATA_PACKET_RES));
}
}STLoggingDataPacketRes;
/*---------------测井结构体end-------------------*/
// typedef struct ST_TABLET_PRO_CTRL_INFO
// {
// BYTE ucCmd;
// WORD wTsn;
// WORD wLen; //控制信息所对应的数据体的长度
// char chData[MAX_CTRL_CONTENT];
// // WORD wRespLen; //响应消息所对应的数据体的长度
// int iTimeOut; //最大响应时间
// ST_TABLET_PRO_CTRL_INFO()
// {
// ucCmd = 0;
// wTsn = 0;
// wTsn = 0;
// memset(chData, 0, sizeof(chData));
// // wRespLen = 0;
// iTimeOut = 0;
// }
// }STProCtrlInfo;
// typedef struct ST_RCV_MSG_CTRL_INFO
// {
// BYTE ucCmd;
// WORD wTsn;
// ST_RCV_MSG_CTRL_INFO()
// {
// ucCmd = 0;
// wTsn = 0;
// }
//
// }STCtrlRcvMsgInfo;
enum EN_SEND_MSG_RES
{
EN_SEND_SUCCESS = -1,
EN_SEND_LINK_INTERRUPT,
EM_SEND_FAILED = 11
};
enum EN_RCV_MSG_RES
{
EN_RECV_SUCCESS = 0,
EN_RECV_LINK_INTERRUPT,
EN_RECV_TIMEOUT,
EN_RECV_DATA_DISORDER,
EN_RECV_DATA_ERROR,
EM_RECV_FAILED,
EN_CLOUND_SND_FAILED,
EN_RECV_CTRL_CMD,
EN_RECV_PLC_STATUS,
EN_REAL_TIME_TESTING_DATA, //标志接收的是实时窗口正在测试中的数据
EN_RECV_NOTIFY_DEVICE_ONLINE, //标志接收到服务器设备上线的通知
EN_RECV_NOTIFY_DEVICE_OFFLINE //标志接收到服务器设备下线的通知
};
enum EN_ERROR_MSG
{
FAILED_NO_ERROR = 0, //没有错误
FAILED_OPERATOR_GD_OFF = 3, //关机失败
FAILED_LOOP_TASK_NO_CANCEL_TEST = 4, //循环任务未取消测试
FAILED_CREATE_LOOP_DURING_THIS_PERIOD = 5 //此时段已创建其他任务
/*FAILED_NO_ERROR=0, //没有错误
FAILED_OPERATOR_GD_ON = 2, //开机失败
FAILED_OPERATOR_GD_OFF = 3, //关机失败
FAILED_NAME_CABLE_HEAD = 4, //点名电缆头失败
FAILED_TEST_GR=5, //测试接地电阻失败
FAILED_MAXIMUM_TIMES=6, //尝试次数超过最大次数
FAILED_TEST_POINT_EXCEPTION = 7, //测试点异常
FAILED_OTHER_TASK_RUNNING=8, //其他任务正在测试
FAILED_TASK_IS_RUNNING=9, //此任务正在测试
FAILED_LOOP_TASK_NO_CANCEL_TEST=10, //循环任务未取消测试
FAILED_CREATE_LOOP_DURING_THIS_PERIOD=11//此时段已创建其他任务*/
};
/*************************命令字***********************************************
命令字 功能 命令字 功能
0x0 设备登录上报和确认回复 0x5 1.contrlBox电压上报 2. GD10测量接地电阻
0x1 1.ContrlBox开关机2. Geo->GD10电缆头点名 0x6 GD10测量数据命令
0x2 1.ContrlBox设置电压上报方式2.GD10设备参数同步 0x88 暂时用来定时上报电压的回复
0x3 GD10设置设备参数 0xFE 登陆的广播包
0x4 设置任务的测试参数 0xFF 心跳
0x57 在线自动配置GeomativeID、GDID、PLCID
0x58 请求云端托管循环任务
0x59 取消云端托管循环任务
0x5A 查询PLC状态信息
0x60 取消云托管指令 0x70 Geomative请求云端下发电缆头信息
0x61 请求云托管指令 0x71 被占用#define EN_DEV_ONLINE 0x71
0x62 Geomative上传设备信息到云端 0x72 Geomative请求云端下发当前设备信息
0x63 Geomative上传任务参数信息到云端 0x73 Geomative请求云端下发任务参数信息
0x64 Geomative上传接地电阻信息到云端 0x74 Geomative请求云端下发任务接地电阻信息
0x65 Geomative上传任务测试数据到云端 0x75 Geomative请求云端下发任务测试数据信息
0x66 Geomative请求云端任务删除 0x76 Geomative请求云端下发任务列表信息
0x67 Geomative请求云端任务暂停 0x77 Geomative请求云端下发指定时间有效的循环任务
0x68 Geomative请求云端任务继续 0x78 Geomative请求云端下发循环任务//查询接口
0x79 Geomative请求云端下发PLC状态信息
0x6A Geomative上传电极坐标 0x7A Geomative请求云端下发电极坐标
0x6E 云端下发下线设备 0x71 云端下发上线设备
*******************************************************************************/
enum EN_CTRL_CMD_INFO
{
EN_CTRL_USER_LOGIN = 0x00,
EN_CTRL_ROLLCALL_CABLE = 0x01,//PLC控制开关机和设备点名用的都是1,只是目标类型不一样
EN_CTRL_SYN_DEV_PARAM = 0x02,
EN_CTRL_SET_DEV_PARAM = 0x03,
EN_CTRL_SET_TASK_PARAM = 0x04,
EN_CTRL_MEASURE_GR = 0x05,
EN_CTRL_MEASURE_DATA = 0x06,
EN_CTRL_PLC_POWER_ON_OR_OFF = 0x01,
EN_REQ_ONLINE_AUTO_CONFIG = 0x57,
EN_REQ_LOOP_TASK_TRUST = 0x58,
EN_CANCEL_LOOP_TASK_TRUST = 0x59,
EN_CANCEL_COLLOCATION = 0x60,
EN_REQ_COLLOCATION = 0x61,
EN_UPLOAD_DEV_INF = 0x62,
EN_UPLOAD_TASK_ARG = 0x63,
EN_UPLOAD_RG_INF = 0x64,
EN_UPLOAD_DATA_INF = 0x65,
EN_REQ_TASK_DEL = 0x66,
EN_REQ_TASK_PAUSE = 0x67,
EN_REQ_TASK_CONTINUE = 0x68,
EN_UPLOAD_ELECTRODE_COORDINATES_INFO = 0x6A,
EN_RECV_DEVICE_OFFLINE = 0x6E, //设备下线
EN_REQ_DOWNLOAD_CABLE_INFO = 0x70,
EN_RECV_DEVICE_ONLINE = 0x71, //设备上线
//EN_reserve = 0x71,
EN_REQ_DOWNLOAD_DEV_INFO = 0x72,
EN_REQ_DOWNLOAD_TASK_ARG = 0x73,
EN_REQ_DOWNLOAD_RG_INFO = 0x74,
EN_REQ_DOWNLOAD_DATA_INFO = 0x75,
EN_REQ_DOWNLOAD_TASK_TABLE = 0x76,
EN_REQ_DOWNLOAD_LOOP_TABLE = 0x77,
EN_REQ_DOWNLOAD_LOOP_SUB_TABLE = 0x78,
EN_REQ_QUERY_PLC_STATUS = 0x79,
EN_DOWNLOAD_ELECTRODE_COORDINATES_INFO = 0x7A,
EN_REQ_HEART_BEAT_PACKET = 0xFF
};
enum EN_LOGGING_COM_PORT_CMD
{
EN_LOGGING_CHECK_PORT_LOGIN = 0x00, //Login校验串口是否为测井串口
EN_LOGGING_DOWNLOAD_LOG_PARAM = 0xC1, //测井参数下发
EN_LOGGING_START_TEST = 0xC2, //开始测试
EN_LOGGING_PAUSE_TEST = 0xC3, //暂停测试
EN_LOGGING_CONTINUE_TEST = 0xC4, //继续测试
EN_LOGGING_END_TEST = 0xC5, //结束测试
EN_LOGGING_MEASURING_POINT_DATA = 0xC6 //测井数据
};
typedef struct ST_DELETE_TASK_REQUEST
{
char szTaskID[MAX_NAME_LEN];
ST_DELETE_TASK_REQUEST()
{
memset(this, 0, sizeof(ST_DELETE_TASK_REQUEST));
}
}STDeleteTaskRequest;
typedef struct ST_REM_TASK_ARG
{
char ucTaskID[MAX_NAME_LEN];
char ucTDName[60];
char ucSciptName[MAX_NAME_LEN];
STMeasuTaskParamTOCloud stMeasuArg;//14
UINT32 uiStartElec;
UINT32 uiEndElec;
UINT32 uiStartLayer;
UINT32 uiEndLayer;
UINT32 uiStartTime;
UINT32 uiEndTime;
UINT32 uiTimerTime;
UINT32 uiTotalNum;
BYTE ucOrgFlg;
BYTE ucTestGRFlag; //1:测试接地电阻,0:不测试接地电阻
UINT32 uiCreateTime; //任务创建时间
UINT32 uiCurrentPoint; //当前测试到哪个点
UINT32 uiFailedReason; //任务失败原因
}STRemTaskArg;
typedef struct ST_TASK_DATA_RES
{
UINT32 dwID;
float fA;
float fB;
float fM;
float fN;
float fK;
BYTE ucStack;
float fV;
float fI;
float fR0;
float fSP;
BYTE ucAlram;
float fR0_LC;
ST_TASK_DATA_RES()
{
dwID = 0;
fA = fB = fM = fN = 0;
ucStack = 0;
fK = 0;
fV;
fI = fR0 = fSP = fK = fR0_LC = 0;
ucAlram = 0;
}
}STTaskDataRes;
typedef struct ST_SYN_TASK_DATA_RES
{
char ucTaskID[MAX_NAME_LEN];
UINT32 dwPointNum;
STTaskDataRes *ptTaskData;
}STSynTaskDataRes;
typedef struct ST_MANUAL_TASK_ARG
{
char ucTaskID[MAX_NAME_LEN]; //任务名 Byte * 40 20个字节
UINT32 uiStartPoint; //开始点 Uint32 默认0
UINT32 uiEndPoint; //结束点 Uint32 默认0(测完)
}STManualTaskArg;
typedef struct ST_TIMER_TASK_ARG
{
UINT32 uiCurTime;//当前时间 Uint32 相对格林威治时间的秒数
UINT32 uiTaksNum;//任务个数 Uint32
BYTE ucTimerType;//定时托管类型 Byt 0:单任务定时,默认0 1:循环任务包定时(第一个任务开始测试时间)
BYTE ucLoopNum;//循环次数 Byte 默认0, 非循环任务为0
UINT32 uiTaskInterval;//任务间间隔 Uint32 秒,默认0, 非循环任务为0
char ucTaskID[40];//任务名1 Byte * 40
}STTimerTaskArg;
typedef struct ST_TRUSTEE_TASK_TABLE
{
UINT32 uiPlcId; //PLC设备ID号
UINT32 uiGD10Id; //GD10设备号
BYTE ucTeatMode; // 默认00:手动1:定时
union
{
STManualTaskArg stManualTask;
STTimerTaskArg stTimerTask;
}Task;
}STTrusteeTaskTable;
enum EN_TASK_TEST_TYPE
{
EN_MANUAL_TASK = 0,
EN_TIMER_TASK,
};
enum EN_TASK_SERVER_STATUSE
{
EN_TASK_STATE_NO_TRUST = 0,
EN_TASK_STATE_TESTING,
EN_TASK_STATE_STOP_TEST=20,
EN_TASK_STATE_TEST_FAILED=30,
EN_TASK_STATE_FINISH=40
};
enum EN_TASK_LOCAL_STATUSE
{
EN_TASK_NO_UPLOAD = 0,
EN_TASK_NO_DOWNLOAD,
EN_TASK_YES_SYN
};
enum EN_TASK_TESTING_METHOD
{
EN_TASK_ALL_POINT_TEST, //全部测量
EN_TASK_FROM_CURRENT_POINT_TEST, //从当前位置开始测量
EN_TASK_CURRENT_ONE_POINT_TEST, //单点测量
EN_TASK_SUSPENDED, //暂停测量
EN_TASK_NOT_TESTTING //没有手动在实时窗口测试中
};
typedef struct ST_REM_TASK_TABLE
{
char ucTaskID[MAX_NAME_LEN];
char ucTDName[60];
BYTE ucTaskStats;
}STRemTaskTable;
//用于保存任务管理->任务列表中任务节点数据
typedef struct ST_TASK_LIST_ITEM_DATA
{
char szTaskID[MAX_NAME_LEN]; //任务ID
char szTDName[60]; //任务名
BYTE byTestStatus; //测试状态
EN_TASK_LOCAL_STATUSE eSynStatus; //同步状态
ST_TASK_LIST_ITEM_DATA()
{
memset(this, 0, sizeof(ST_TASK_LIST_ITEM_DATA));
}
}STTaskListItem;
typedef struct ST_LOOP_TASK_TABLE
{
char ucTaskID[MAX_NAME_LEN]; //任务名 Byte * 40 40个字节
char ucTaskName[MAX_NAME_LEN]; //循环备用任务名 Byte * 40 40个字节
BYTE ucLoopType; //0,1,2,3 -------------0:一次, 1- 按天,2-按月,3-按周
UINT32 uiStartTime; //开始测试时间
UINT32 uiEndTime; //结束测试时间
}STLoopTaskTable;
typedef struct ST_LOOP_TASK_INFO
{
char ucTaskID[MAX_NAME_LEN]; //循环任务名 Byte * 40 40个字节
char ucTaskName[60]; //循环备用任务名 Byte * 60 60个字节
UINT32 uiPlcId;
UINT32 uiGD10Id;
BYTE ucContrlType;
BYTE ucTimerType;
UINT16 uiLoopNum; //循环次数
UINT16 uiRemainLoopNum; //剩余循环次数
BYTE ucLoopType; //0,1,2,3 -------------0:一次, 1- 按天,2-按月,3-按周
BYTE ucTimerAgsNum; //循环定时参数个数
BYTE ucTimerTimeAgs; //定时时间参数
UINT32 uiStartTime; //开始测试时间
UINT32 uiEndTime; //结束测试时间
UINT32 uiStartMin; //每天或者每周相对0点开始分钟数
UINT32 uiTaskSpace; //任务间间隔
UINT32 uiSubTaskNum;//子任务数
ST_LOOP_TASK_INFO()
{
memset(this, 0, sizeof(ST_LOOP_TASK_INFO));
}
}STLoopTaskInfo;
__interface ITaskTree
{
virtual CTreeCtrl* GetTaskTreePtr() = 0;
virtual void ShowTaskTree(int iSptType, time_t tStartTime = 0, time_t tEndTime = 0) = 0;
};
enum EN_TASK_TREECTRL_TYPE
{
EN_1D_TASK_TREE = 0,
EN_2D_TASK_TREE = 1,
EN_3D_TASK_TREE = 2
};
//////////////////////////////////////测量定义开始////////////////////////
enum EN_MEASU_BTN_STATUS
{
EM_MEASU_BTN_INITI = 0,
EN_MEASU_BTN_MEASU_ALL,
EN_MEASU_BTN_MEASU_FROM_CUR,
EN_MEASU_BTN_MEASU_SIG,
EN_MEASU_BTN_COUNTINE,
EN_MEASU_BTN_SUSPEND,
EN_MEASU_BTN_MEASU_TERIMI, //测量终止代表测量完成或者测量错误时,测量停止下来
EN_MEASU_BTN_MEASU_FIN,
EN_MEASU_BTN_NOT_SELECT_TASK, //没有选中任务时按钮状态
EN_MEASU_BTN_SELECT_TASK, //选中任务时按钮状态
EN_MEASU_BTN_NOT_TESTING_TASK,
EN_MEASU_BTN_OFFLINE_DEVICE //查看离线设备,实时窗口不需要测试,只能查看
};
enum EN_MEASURE_TYPE
{
EN_MEASURE_DATA = 0,
EN_MEASURE_GR
};
typedef struct stPLCStatusInfoRequest
{
UINT32 uPLCID; //PLC ID
UINT32 uStartTime; //开始时间
UINT32 uEndTime; //结束时间
stPLCStatusInfoRequest()
{
memset(this, 0, sizeof(stPLCStatusInfoRequest));
}
}STPLCStatusInfoRequest, *PSTPLCStatusInfoRequest;
typedef struct stPLCStatusResponse
{
UINT32 uStatusTime;
float fSimulation[4]; //模拟量
float fVoltage; //电压
float fTemperature; //温度
float fSimulation7; //模拟量
float fSimulation8; //模拟量
float fReserve; //预留
BYTE bSwitch[10]; //控制变量
BYTE bReserve; //预留
stPLCStatusResponse()
{
memset(this, 0, sizeof(stPLCStatusResponse));
}
}STPLCSTATUS, *PSTPLCSTATUS;
typedef struct ST_BOREHOLE_PARAM
{
int iElecID; //第一个电极编号
int iElecNum; //电极数目
float fX; //X坐标,用于地表
float fY; //Y坐标,用于三维
float fZ; //Z坐标,用于孔
float fElecSpacing; //电极间距
ST_BOREHOLE_PARAM()
{
memset(this, 0, sizeof(ST_BOREHOLE_PARAM));
}
}STBoreHoleParam;
enum EN_COORDINATES_TYPE
{
EN_UNKNOWN_TYPE = 0,
EN_BOREHOLE_TYPE = 1, //井地
EN_SURFACE_TYPE = 2 //地表
};
typedef struct ST_BOREHOLE_POINTS
{
EN_COORDINATES_TYPE eType;
UINT32 uiID; //序号
UINT32 uiElecID; //电极编号
float fX; //X坐标
float fY; //Y坐标
float fZ; //Z坐标
}STBoreHolePoints;
struct STWellPoints
{
float fX;
float fY;
STWellPoints()
{
memset(this, 0, sizeof(STWellPoints));
}
bool operator<(const STWellPoints& t) const
{
if (fabs(fX - t.fX) > 0.000001)
{
return true;
}
if (fabs(fY - t.fY) > 0.000001)
{
return true;
}
return false;
}
};
typedef struct ST_DATABASE_ABMN_INFO
{
int uiAElecID; //测点A电极编号
int uiBElecID; //测点B电极编号
int uiMElecID; //测点M电极编号
int uiNElecID; //测点N电极编号
float fK; //K值
int iTrace; //迭代次数
int iLayer; //层数;
float fSptXPos;
ST_DATABASE_ABMN_INFO()
{
memset(this, 0, sizeof(ST_DATABASE_ABMN_INFO));
}
}STDatabaseABMNInfo;
enum EN_TAB_PAGE
{
EN_OPTION_GEOMETRY = 0,
EN_OPTION_BOREHOLE = 1,
EN_OPTION_SURFACE = 2,
EN_OPTION_SETTING = 3
};
#define MAX_REPEAT_SND_CNT 90000
//#define WM_GET_TASK_LIST_MSG WM_USER + 10086
//#define WM_TASK_LIST_TASK_INFO_SYN WM_USER + 10089
#define WM_TASK_LIST_TASK_DATA_SYN WM_USER + 10090
#define WM_NET_RESPONSE WM_USER + 110 //发送消息后,响应消息
#define WM_NET_RECV_REAL_TIME_DATA WM_USER + 111 //接收正在测试中实时窗口的数据
#define WM_MSG_DELETE_TASK WM_USER + 112 //删除任务界面响应
#define WM_MSG_UPDATE_TASK_LIST WM_USER + 113 //刷新任务列表
#define WM_MSG_UPDATE_REALTIME_WND_BTN_STATUS WM_USER + 114 //更新实时窗口按钮状态
#define WM_MSG_SET_CURRENT_SELECT_TASK WM_USER + 115 //通知实时窗口当前选中的任务
#define WM_MSG_SEND_CABLE_ROLLCALL WM_USER + 116 //电缆头点名消息
#define ID_TIMER_HEARTBEAT_PACKET 200 //心跳
#define ID_UPLOAD_DEVICE_MARKET_DATA 201 //联网时,上传设备市场数据到云端
#define HEARTBEAT_INTERVAL 120000 //频率,两分钟
#define UPLOAD_MARKET_DATA_INTERVAL 9000 //联网一分钟后上传设备市场数据
#define STRING_MESSAGEBOXEX_TITLE "Geomative Studio"
//////////////////////////////////////测量定义结束////////////////////////
#pragma pack()
#endif