#ifndef _WRC_SIZHU_V4_H_ #define _WRC_SIZHU_V4_H_ #include "define_all.h" #include "wireless_remote_comm.h" #include "system_general_para.h" #include "extern_rtc.h" #define SIZHU_PROTOCOL_VERSION 0x42 #define SIZHU_FRAME_HEAD 0x68 #define SIZHU_DATA_HEAD 0x55 #define SIZHU_FRAME_TAIL 0x16 #define FIRST_DATA_SHIFT_SIZHU sizeof(SIZHU_V4_PROTOCOL_HEAD_T)//26 #define FRAME_DATA_MAX 4 //Ò»Ö¡Êý¾Ý×î¶à°üº¬µÄÊý¾ÝÌõÊý #define DATA_PACKET_HEAD_LENGTH sizeof(SIZHU_V4_PROTOCOL_NORMAL_DATA_HEAD_T) #define DATA_PACKET_LENGTH sizeof(SIZHU_V4_PROTOCOL_NORMAL_DATA_PACK_T) ///////////////ЭÒé¿ØÖÆÂë///////////////////////////////////////////////////////////////////// //ÒµÎñ #define SIZHU_CONTROL_CODE_DATAUP 0x0101 #define SIZHU_CONTROL_CODE_END 0x0102 #define SIZHU_CONTROL_CODE_MODIFY_KEY 0x0103 #define SIZHU_CONTROL_CODE_PUSH_TERMINAL_INFO 0x0104 //¹¦ÄÜ #define SIZHU_CONTROL_CODE_ACCOUNT_STATUS 0x0201 #define SIZHU_CONTROL_CODE_SET_PARA_DEV 0x0202 #define SIZHU_CONTROL_CODE_READ_PARA_DEV 0x0203 #define SIZHU_CONTROL_CODE_SET_ALARM_CTRL_WORD 0x0204 #define SIZHU_CONTROL_CODE_READ_ALARM_CTRL_WORD 0x0205 #define SIZHU_CONTROL_CODE_SET_REPORT_PERIOD 0x0206 #define SIZHU_CONTROL_CODE_READ_REPORT_PERIOD 0x0207 #define SIZHU_CONTROL_CODE_SET_485_PARA 0x0208 #define SIZHU_CONTROL_CODE_READ_485_PARA 0x0209 #define SIZHU_CONTROL_CODE_READ_EQUIPMENT_INFO 0x0220 #define SIZHU_CONTROL_CODE_SET_TIME 0x0221 #define SIZHU_CONTROL_CODE_SET_IP_PORT 0x0222 #define SIZHU_CONTROL_CODE_READ_IP_PORT 0x0223 #define SIZHU_CONTROL_CODE_CLEAR_ABNORMAL 0x0224 #define SIZHU_CONTROL_CODE_SET_CUMULANT_0 0x0225 #define SIZHU_CONTROL_CODE_SET_DAY_MONTH_RECORD_STORAGE_TIME 0x0230 #define SIZHU_CONTROL_CODE_READ_DAY_MONTH_RECORD_STORAGE_TIME 0x0231 #define SIZHU_CONTROL_CODE_READ_HISTORY_RECORD 0x0232 #define SIZHU_CONTROL_CODE_READ_VALVE_RECORD 0x0233 #define SIZHU_CONTROL_CODE_READ_CUMULANT_MODIFY_RECORD 0x0234 //·§¿Ø #define SIZHU_CONTROL_CODE_VALVE_CONTROL 0x0301 #define SIZHU_CONTROL_CODE_SET_BALANCE_INSUF_CLOSE_VALVE 0x0302 #define SIZHU_CONTROL_CODE_READ_BALANCE_INSUF_CLOSE_VALVE 0x0303 #define SIZHU_CONTROL_CODE_SET_VALVE_CLOSE_CTRL_WORD 0x0304 #define SIZHU_CONTROL_CODE_READ_VALVE_CLOSE_CTRL_WORD 0x0305 #define SIZHU_CONTROL_CODE_SET_NO_UP_CLOSE_DAY 0x0306 #define SIZHU_CONTROL_CODE_READ_NO_UP_CLOSE_DAY 0x0307 #define SIZHU_CONTROL_CODE_SET_NO_GAS_CLOSE_DAY 0x0308 #define SIZHU_CONTROL_CODE_READ_NO_GAS_CLOSE_DAY 0x0309 #define SIZHU_CONTROL_CODE_SET_CUMULANT_CLOSE 0x0310 #define SIZHU_CONTROL_CODE_READ_CUMULANT_CLOSE 0x0311 //±í¶Ë¼Æ·ÑÏà¹Ø²ÎÊý #define SIZHU_CONTROL_CODE_RECHARGE 0x0401 #define SIZHU_CONTROL_CODE_SET_PRICE 0x0402 #define SIZHU_CONTROL_CODE_READ_PRICE 0x0403 #pragma pack(1) typedef struct { uint8_t frame_start_code; // Ö¡Æðʼ·û uint8_t device_num[8]; // ±í¾ß±àºÅ uint8_t data_start_code; // Êý¾ÝÆðʼ·û sClockBCD device_time; // ϵͳʱ¼ä uint8_t protocol_ver; // ЭÒé°æ±¾ uint16_t cmd_code_u16; // ÃüÁî±êʶ uint16_t frame_num; // Ö¡ÐòÁкŠuint16_t frame_sum; // ×ÜÖ¡Êý uint8_t key_ver; // ÃÜÔ¿°æ±¾ºÅ uint16_t data_length; // Êý¾ÝÄÚÈݳ¤¶È }SIZHU_V4_PROTOCOL_HEAD_T; // ¹Ì¶¨µÄÖ¡Í·Êý¾Ý typedef struct { uint16_t check_crc; // crcУÑé uint8_t frame_end_code; // Ö¡½áÊø·û } SIZHU_V4_PROTOCOL_TAIL_T; // ¹Ì¶¨µÄ֡βÊý¾Ý typedef struct { uint8_t equipment_type; // É豸ÀàÐÍ£¬ÊÇÖ¸ÊÇ·ñ·ÖÌå»ú¡¢¼Æ·ÑģʽµÄÇø·ÖÀàÐÍ DEVICE_TYPE device_type; // É豸ÐͺÅ,ÊÇÖ¸SZV103µÈÐͺŠuint8_t sys_send_type; // Éϸ淽ʽ int8_t iccid[20]; // iccid uint8_t signal_intensity; // ÐźÅÇ¿¶È uint8_t signal_intensity_level; // ÐźÅÇ¿¶ÈµÈ¼¶ uint8_t net_info; // ÍøÂçÐÅÏ¢ uint8_t software_version[4]; // Èí¼þ°æ±¾ºÅ uint8_t account_state; // ¿ª»§×´Ì¬ uint16_t alarm_word[14]; // ±¨¾¯×Ö uint16_t valve_close_reason; // ¹Ø·§Ô­Òò×Ö uint8_t reserve[8]; // ±£Áô uint8_t data_package_format; // Êý¾Ý°ü¸ñʽ uint8_t data_pack_num; // Êý¾Ý°üÌõÊý } SIZHU_V4_PROTOCOL_NORMAL_DATA_HEAD_T; // ÆÕͨÊý¾ÝµÄ¹Ì¶¨¸ñʽͷ typedef struct { sClockBCD sample_time; // ¶³½áʱ¼ä uint64_t sc_cumulate; // ÕýÏò±ê¿ö×ÜÁ¿£¬ÎÞ·ûºÅ uint64_t wc_cumulate; // ÕýÏò¹¤¿ö×ÜÁ¿£¬ÎÞ·ûºÅ int32_t sc_instant; // ±ê¿ö˲ʱÁ¿£¬ÓзûºÅ int32_t wc_instant; // ¹¤¿ö˲ʱÁ¿£¬ÓзûºÅ float pressure; float temperature; int64_t balance; // Ê£Óà½ð¶î£¬ÓзûºÅ uint32_t uint_price; // µ¥¼Û uint8_t lith_vcc; // ï®µç³Øµçѹ int8_t lith_vcc_per; // ï®µç³Øµçѹ°Ù·Ö±È uint8_t alka_vcc; // ¼îµç³Øµçѹ int8_t alka_vcc_per; // ¼îµç³Øµçѹ°Ù·Ö±È uint16_t status[12]; // ״̬×Ö //uint8_t reserved[40]; } SIZHU_V4_PROTOCOL_NORMAL_DATA_PACK_T; #pragma pack() void SizhuV4SendParaInit(void); WRC_STATUS SizhuV4ProtocolDataAnalysis(uint8_t *receive_buf); #endif