118 lines
2.5 KiB
C
118 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"
|
|
|
|
//读地址
|
|
void pro_645_97_read_addr(u8 *outBuf, u16 *outLen)
|
|
{
|
|
//FE FE FE FE 68 99 99 99 99 99 99 68 01 02 43 C3 6F 16
|
|
// 68 06 88 10 40 06 00 68 81 06 43 C0 31 48 03 23 04 00 41 06 00 68 81 06 43 C3 33 C5 CC 33 B6 16
|
|
outBuf[0] = 0x68;
|
|
outBuf[1] = 0x99;
|
|
outBuf[2] = 0x99;
|
|
outBuf[3] = 0x99;
|
|
outBuf[4] = 0x99;
|
|
outBuf[5] = 0x99;
|
|
outBuf[6] = 0x99;
|
|
outBuf[7] = 0x68;
|
|
outBuf[8] = 0x01;
|
|
outBuf[9] = 0x02;
|
|
outBuf[10] = 0x43;
|
|
outBuf[11] = 0xC3;
|
|
outBuf[12] = GetSum(outBuf,12);
|
|
outBuf[13] = 0x16;
|
|
*outLen = 14;
|
|
}
|
|
|
|
bool pro_645_97_recv_addr(u8 *inbuf, u16 len, u8 *addr)
|
|
{
|
|
//0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
|
//68 06 88 10 40 06 00 68 81 06 43 C3 33 48 33 33 22 16
|
|
|
|
if(inbuf[0] == 0x68 && inbuf[7] == 0x68 && inbuf[8] == 0x81)
|
|
{
|
|
if(inbuf[16] == GetSum(inbuf,16))
|
|
{
|
|
addr[0] = inbuf[1];
|
|
addr[1] = inbuf[2];
|
|
addr[2] = inbuf[3];
|
|
addr[3] = inbuf[4];
|
|
addr[4] = inbuf[5];
|
|
addr[5] = inbuf[6];
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
//读数据
|
|
void pro_645_97_read_data(u8 *addr,u8 *outBuf, u16 *outLen)
|
|
{
|
|
//FE FE FE FE 68 06 88 10 40 06 00 68 01 02 43 C3 BD 16
|
|
//68 06 88 10 40 06 00 68 81 06 43 C3 33 48 33 33 22 16
|
|
//水表数据是15
|
|
outBuf[0] = 0x68;
|
|
outBuf[1] = addr[0];
|
|
outBuf[2] = addr[1];
|
|
outBuf[3] = addr[2];
|
|
outBuf[4] = addr[3];
|
|
outBuf[5] = addr[4];
|
|
outBuf[6] = addr[5];
|
|
outBuf[7] = 0x68;
|
|
outBuf[8] = 0x01;
|
|
outBuf[9] = 0x02;
|
|
outBuf[10] = 0x43;
|
|
outBuf[11] = 0xC3;
|
|
outBuf[12] = GetSum(outBuf,12);
|
|
outBuf[13] = 0x16;
|
|
|
|
*outLen = 14;
|
|
|
|
}
|
|
|
|
bool pro_645_97_recv_data(u8 *inbuf, u16 len, u8 *inID, u8 *out_datas, u8 *out_status)
|
|
{
|
|
//0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
|
//68 06 88 10 40 06 00 68 81 06 43 C3 33 48 33 33 22 16
|
|
|
|
if(inbuf[0] == 0x68 && inbuf[7] == 0x68 && inbuf[8] == 0x81)
|
|
{
|
|
if(inbuf[16] == GetSum(inbuf,16))
|
|
{
|
|
if(0 == memcmp(&inbuf[1],inID,5))
|
|
{
|
|
out_datas[0] = 0x2C;
|
|
out_datas[1] = inbuf[12]-0x33;
|
|
out_datas[2] = inbuf[13]-0x33;
|
|
out_datas[3] = inbuf[14]-0x33;
|
|
out_datas[4] = inbuf[15]-0x33;
|
|
return true;
|
|
}
|
|
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/*
|
|
//读地址
|
|
FE FE FE FE 68 99 99 99 99 99 99 68 01 02 43 C3 6F 16
|
|
68 06 88 10 40 06 00 68 81 06 43 C0 31 48 03 23 04 00 41 06 00 68 81 06 43 C3 33 C5 CC 33 B6 16
|
|
|
|
|
|
//读水表数据
|
|
FE FE FE FE 68 06 88 10 40 06 00 68 01 02 43 C3 BD 16
|
|
68 06 88 10 40 06 00 68 81 06 43 C3 33 48 33 33 22 16
|
|
水表数据是15
|
|
*/
|
|
|
|
|