Files
HBshuiwuConcentrator/hb/hbheartpro .c
2025-12-15 16:07:49 +08:00

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;
}