120 lines
2.5 KiB
C
120 lines
2.5 KiB
C
#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;
|
|
|
|
}
|
|
|
|
|