#if !defined(_INCLUDE_DAIKIN_HEAD_H) #define _INCLUDE_DAIKIN_HEAD_H #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include // Modbus Rtu 设备Dll错误代码定义 enum __ERRO_CODE_DAIKIN { ERR_CODE_DAIKIN_COM_FAULT = 21401 , // DAIKIN设备串口通信故障 ERR_CODE_DAIKIN_COM_BUSY , // DAIKIN设备串口通信忙 ERR_CODE_DAIKIN_COM_READ_NO_DATA , // DAIKIN设备没有读到数据 ERR_CODE_DAIKIN_COM_READ_LEN_OVER , // DAIKIN设备读到数据长度超时限制 ERR_CODE_DAIKIN_COM_LRC_LOST , // DAIKIN设备lrc校验失败 EER_CODE_DAIKIN_COM_WRITE_DATA , // DAIKIN设备写串口错误 EER_CODE_DAIKIN_COM_REGNUM , // DAIKIN设备寄存器数 ERR_CODE_DAIKIN_COM_VARLEN , // DAIKIN设备变量长度错误 ERR_CODE_DAIKIN_COM_INVALIDRES , // DAIKIN错误的设置命令 }; #define SET_RUN 1 // 设置空调运转(开/关) #define SET_RUN_MODE 2 // 设置空调运转模式(0:送风,1:制热,2:制冷,3:自动,4:换气清洗,7:除湿 #define SET_TEMP 3 // 设定温度 #define SET_FAN 4 // 设置风量 #pragma pack(push) //保存对齐状态 #pragma pack(1)//设定为4字节对齐 typedef struct tagPORTPARAM { BYTE PortNo; //Com端口 DWORD BaudRate; //波特率 BYTE ByteSize; /* Number of bits/byte, 4-8 */ BYTE Parity; /* 校验位 0-4=None,Odd,Even,Mark,Space */ BYTE StopBits; /* 结束位 0,1,2 = 1, 1.5, 2 */ BYTE StartAddr; //起止地址 int Interval; //间隔时间 tagPORTPARAM() { PortNo=3; BaudRate=CBR_9600; ByteSize=8; Parity=NOPARITY; StopBits=ONESTOPBIT; StartAddr=1; Interval=1000; } }PORTPARAM,*PPORTPARAM; typedef struct __CHILD { BYTE bySoi;//起始标志位 BYTE byVer[2];//通讯协议版本号 BYTE byAdr[2];//设备地址描述 BYTE byCid1[2];//控制标识码 BYTE byCid2[2];//命令信息 BYTE byLength[4];//INFO字节长度 }CHILD, *pCHILD; //读寄存器请求 typedef struct __REQUESTPARAM { CHILD RequestChild; //BYTE byCmdType[2];//命令类型 //BYTE byCmdId[2];//命令ID BYTE byCheckSum[4];//校验码 BYTE byEoi;//结束码 }REQUESTPARAM, *pREQUESTPARAM; typedef struct __RESPONSE_STRUCT { CHILD RequestChild; BYTE byRtnMsg[200];//返回数据信息 BYTE byCheckSum[4];//校验码 BYTE byEoi;//结束码 }RESPONSE_STRUCT, *PRESPONSE_STRUCT; //控制空调命令请求 typedef struct __REQUEST_CTRL { CHILD RequestChild; BYTE szCmdType[2]; //控制命令 10H:运转 / 11H:顺次起动运转 / 1FH:停止 BYTE byCheckSum[4]; //校验码 BYTE byEoi; //结束码 }REQUEST_CTRL, *PREQUEST_CTRL; //设置空调参数请求 typedef struct __REQUESTSETPARAM { CHILD RequestChild; BYTE szCmdType[2]; //80H 空调开机温度, 81H 空调关机温度, 82H 回风温度上限, 83H 回风温度下限, 84H 回风湿度上限, 85H 回风湿度下限 BYTE szCmdInfo[4]; //设定值 BYTE byCheckSum[4];//校验码 BYTE byEoi;//结束码 }REQUESTSETPARAM, *PREQUESTSETPARAM; //设置空调参数请求 typedef struct __REQUESTREMOTECTRL { CHILD RequestChild; BYTE szCmdType[3]; //'6', '2', '0':运转模式, '6', '3', '0':设定温度, '6', '4', '0':风量 //BYTE szAddr; //地址 // 设置内容,谁szCmdType内容的变化而变化 //BYTE szMsg[n]; BYTE szCmdData[2]; BYTE byCheckSum[4];//校验码 BYTE byEoi;//结束码 }REQUESTREMOTECTRL, *PREQUESTREMOTECTRL; //下面命令可能需要发送身份密码验证,如果客户不需要,最好不要做,所以现在功能还没有开发 //ATX控制空调命令请求 typedef struct __REQUESTATX { BYTE bySoi; //起始标志位 02H BYTE szCmdType[3]; //'6', '2', '0':运转模式, '6', '3', '0':设定温度, '6', '4', '0':风量 //BYTE szAddr; //地址 // 设置内容,谁szCmdType内容的变化而变化 //BYTE szMsg[n]; BYTE byEoi; //结束码 03H BYTE szCheckSum; //校验码 }REQUESTATX, *PREQUESTATX; //ATX控制空调命令响应 typedef struct __RESPONSEATX { BYTE bySoi; //起始标志位 02H BYTE szCmdType[3]; //'6', '2', '0':运转模式, '6', '3', '0':设定温度, '6', '4', '0':风量 BYTE byEoi; //结束码 03H BYTE szCheckSum; //校验码 }RESPONSEATX, *PRESPONSEATX; #pragma pack(pop)//恢复对齐状态 #endif //!defined(_INCLUDE_DAIKIN_HEAD_H)