#include "uart.h" #include "addr.h" #include "debug_printf.h" #include "bl24c512.h" #include "WaterMetermanager.h" #include "Led.h" #include "keywd.h" #include "update.h" #include "Flash.h" #include "PHY.h" #include "rtc_ext.h" #include "hbframe.h" extern void gprs_recv_judge_timeset(); //7E7E //帧起始符 2 //01 //中心站地址 1 //1310020028 //遥测站地址 40=28 5 //1234 //密码 (根据主站下发的变化) 2 //32 //功能码 1 //003C //报文上下行标志及长度 0000 上行 1000 下行 60 = 3C 2 //02 //报文起始符 1 //05FD //流水号 2 //201219013000 //发报时间 6 //F1F1 //地址标识符 2 //1310020028 //地址 5 //49 //遥测站分类码 1 //F0F0 //观测时间标识符 2 //2012190110 //观测时间 5 //282B //取水口流量1标识符 2 //0000000000 //取水口流量 5 //FF012A //取水口累计流量1标识符 3 //0002670300 //取水口累计流量 5 //6033 //水表1剩余水量标识符 2 //000000000000 //水表1剩余水量 6 //4520 //遥测状态及报警息信标识符号 2 //00000001 //遥测状态及报警信息 4 //3812 //电压标志符 2 //0000 //蓄电池电压 2 //FF0208 //CSQ标志符 3 //12 //信号强度CSQ 1 //03 //报文结束符 1 //0BB7 //校验 2 extern u8 csq_value; extern u8 * hb_getdl_time(); extern void hb_get_time(u8 * time); extern u16 get_crc(u8 * val,u16 len); //7E 7E //01 //00 00 00 00 01 //0C 50 //2F //00 08 //02 //00 02 //12 12 07 08 56 50 //03 67 bd //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 //7E 7E 01 00 00 00 00 01 0C 50 2F 00 08 02 00 02 12 12 07 08 56 50 03 67 bd void hb_heart_rp_pro(u8 * val,u16 * len) { u8 * addr = NULL; u8 * pval = NULL; u16 password = 0; u16 ck = 0; struct hb_struct * p = (struct hb_struct *)val; //帧起始符 p->head[0] = 0x7E; p->head[1] = 0x7E; //中心站地址 p->centeraddr = get_center_addr(); //遥测站地址 40=28 addr = get_hb_addr(); MemCpy(p->collectaddr,addr,5); password = get_password(); //密码 hbp2from16(p->pwd,password); //功能码 p->fn = AFN_HEART; //报文上下行标志及长度 hbp2from16(p->len,8); //报文起始符 1 p->start = 0x02; //流水号 2 hbp2from16(p->serial, get_send_serial()); pval = (u8*)p + sizeof(struct hb_struct); //////////////////////////////////////////////////////////////// //发报时间 6 hb_get_time(pval); pval = pval + 6; //报文结束符 1 pval[0] = 0x03; pval = pval + 1; ck = get_crc(val,23); hbp2from16(pval,ck); *len = 25; }