河北水利局项目
This commit is contained in:
119
filedata/hbfile.c
Normal file
119
filedata/hbfile.c
Normal file
@@ -0,0 +1,119 @@
|
||||
|
||||
#include "file.h"
|
||||
#include "filedata.h"
|
||||
#include "General.h"
|
||||
#include "Mem.h"
|
||||
|
||||
extern u8 GetSum(u8 * buffer, u16 length);
|
||||
extern bool I2C_eeprom_write_buf(u16 startAddr, u8 * buf, u16 length);
|
||||
extern bool I2C_eeprom_read_buf(u16 addr, u8 * buf, u16 length);
|
||||
void waterdata_printf(struct waterdata_struct * waterdata);
|
||||
|
||||
void hb_waterdata_write(u16 count,uint8_t * buf,uint16_t len)
|
||||
{
|
||||
if(count<DATA_COUNT_MAX)
|
||||
{
|
||||
uint32_t datapos =IIC_DATA_ADDR+WATERDATA_ONE_LEN*(count);
|
||||
I2C_eeprom_write_buf(datapos,(uint8_t *)buf, len);
|
||||
#ifdef DEBUG_FILEI2C
|
||||
uint8_t Buf[64];
|
||||
struct waterdata_struct * waterdata = (struct waterdata_struct *)buf;
|
||||
HT_PRINT("--->%05d count=%04d ",datapos,count);
|
||||
waterdata_printf(waterdata);
|
||||
memset(Buf, 0, 64);
|
||||
I2C_eeprom_read_buf(datapos,(uint8_t *)Buf, len);
|
||||
HT_PRINT("<---%05d count=%04d ",datapos,count);
|
||||
waterdata_printf(waterdata);
|
||||
if(0 !=memcmp(buf,Buf,len))
|
||||
{
|
||||
HT_PRINT("!!!file_waterdata_write error\r\n");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void hb_waterdata_read(u16 count,uint8_t * buf,uint16_t len)
|
||||
{
|
||||
if(count<DATA_COUNT_MAX)
|
||||
{
|
||||
uint32_t datapos =IIC_DATA_ADDR+WATERDATA_ONE_LEN*(count);
|
||||
I2C_eeprom_read_buf(datapos,(uint8_t *)buf, len);
|
||||
#ifdef DEBUG_FILEI2C
|
||||
struct waterdata_struct * waterdata = (struct waterdata_struct *)buf;
|
||||
HT_PRINT("waterdata_read addr=%05d day=%04d ",datapos,count);
|
||||
waterdata_printf(waterdata);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void hb_waterdata_one_write(u16 index,u8 * sumdata,u8 year,u8 month,u8 day,u8 hour)
|
||||
{
|
||||
struct waterdata_struct waterdata;
|
||||
memset(&waterdata,0,sizeof(waterdata));
|
||||
waterdata.year = year;
|
||||
waterdata.mon = month;
|
||||
waterdata.day = day;
|
||||
waterdata.hour = hour;
|
||||
|
||||
MemCpy(waterdata.sum,sumdata,SUM_DATA_LEN);
|
||||
|
||||
waterdata.crc = GetSum((uint8_t*)&waterdata.invalid,WATERDATA_LEN);
|
||||
hb_waterdata_write(index,(uint8_t *)&waterdata, sizeof(waterdata));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void waterdata_printf(struct waterdata_struct * waterdata)
|
||||
{
|
||||
#ifdef DEBUG_FILEI2C
|
||||
uint8_t ck = 0;
|
||||
ck = GetSum((uint8_t*)&waterdata->invalid,WATERDATA_LEN);
|
||||
HT_PRINT("valid=%02x ",waterdata->invalid);
|
||||
HT_PRINT("current=%02x%02x%02x%02x%02x ",waterdata->current[0],waterdata->current[1],waterdata->current[2],waterdata->current[3],waterdata->current[4]);//取水口流量 5
|
||||
HT_PRINT("sum=%02x%02x%02x%02x%02x ",waterdata->sum[0],waterdata->sum[1],waterdata->sum[2],waterdata->sum[3],waterdata->sum[4]);//取水口累计流量 5
|
||||
HT_PRINT("surplus=%02x%02x%02x%02x%02x%02x ",waterdata->surplus[0],waterdata->surplus[1],waterdata->surplus[2],waterdata->surplus[3],waterdata->surplus[4],waterdata->surplus[5]);//水表1剩余水量 6
|
||||
HT_PRINT("ala=%02x%02x%02x%02x ",waterdata->ala[0],waterdata->ala[1],waterdata->ala[2],waterdata->ala[3]);//遥测状态及报警信息 4
|
||||
HT_PRINT("vol=%02x%02x ",waterdata->vol[0],waterdata->vol[1]);//蓄电池电压 2
|
||||
HT_PRINT("csq=%02x ",waterdata->csq);//csq信号强度 1
|
||||
HT_PRINT("time=%02x-%02x-%02x %02x ",waterdata->year,waterdata->mon,waterdata->day,waterdata->hour);//csq信号强度 1
|
||||
HT_PRINT("ck1=%02x ck2=%02x\r\n",waterdata->crc,ck);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void data_printf()
|
||||
{
|
||||
struct waterdata_struct waterdata;
|
||||
|
||||
printf("\r\n计数 有效 流量 累计 剩余 状态 电压 CSQ信号强度 年月日时 校验\r\n");
|
||||
for(u16 i = 0;i<DATA_COUNT_MAX;i++)
|
||||
{
|
||||
uint32_t datapos =IIC_DATA_ADDR+WATERDATA_ONE_LEN*(i);
|
||||
I2C_eeprom_read_buf(datapos,(uint8_t *)&waterdata, sizeof(waterdata));
|
||||
|
||||
uint8_t ck = 0;
|
||||
ck = GetSum((uint8_t*)&waterdata.invalid,WATERDATA_LEN);
|
||||
HT_PRINT("%04d ",i+1);
|
||||
HT_PRINT("%02x ",waterdata.invalid);
|
||||
HT_PRINT("%02x%02x%02x%02x%02x ",waterdata.current[0],waterdata.current[1],waterdata.current[2],waterdata.current[3],waterdata.current[4]);//取水口流量 5
|
||||
HT_PRINT("%02x%02x%02x%02x%02x ",waterdata.sum[0],waterdata.sum[1],waterdata.sum[2],waterdata.sum[3],waterdata.sum[4]);//取水口累计流量 5
|
||||
HT_PRINT("%02x%02x%02x%02x%02x%02x ",waterdata.surplus[0],waterdata.surplus[1],waterdata.surplus[2],waterdata.surplus[3],waterdata.surplus[4],waterdata.surplus[5]);//水表1剩余水量 6
|
||||
HT_PRINT("%02x%02x%02x%02x ",waterdata.ala[0],waterdata.ala[1],waterdata.ala[2],waterdata.ala[3]);//遥测状态及报警信息 4
|
||||
HT_PRINT("%02x%02x ",waterdata.vol[0],waterdata.vol[1]);//蓄电池电压 2
|
||||
HT_PRINT("%02x ",waterdata.csq);//csq信号强度 1
|
||||
HT_PRINT("%02x-%02x-%02x %02x ",waterdata.year,waterdata.mon,waterdata.day,waterdata.hour);//csq信号强度
|
||||
|
||||
if(waterdata.crc==ck)
|
||||
{
|
||||
HT_PRINT("%02x=%02x\r\n",waterdata.crc,ck);
|
||||
}
|
||||
else
|
||||
{
|
||||
HT_PRINT("%02x!=%02x error!\r\n",waterdata.crc,ck);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user