#ifndef _XSPDATAOPT_H_ #define _XSPDATAOPT_H_ #include "../CMSIS/gd32f10x.h" #include "xspOptFlash.h" #include #include "../Hardware/boardinit.h" extern uint8_t g_7egDa[29]; typedef struct display_data_{ uint32_t price; // 单价 uint32_t amount; // 金额 uint32_t oil; // 油量 }__attribute__((packed)) dispData; typedef struct xspopt_data_{ dispData lastDa; // 上次记录的数据,只有显示屏不变时或是显示屏清零时开始记录 dispData curDa; // 当前数据 dispData startDa; uint8_t lastDawrite; // 上次数据是否已经存储 uint8_t gunStatus; // 枪的状态 uint8_t newCode; // 新交易记录标识 uint8_t bsame4; // 读取4次数据都是相同的 uint64_t lastTamout; uint64_t lastToil; uint32_t changeCnt; // 变化的过程 uint32_t lastCnt; uint8_t noChangeCnt; // 不变情况的统计 uint8_t bCheckDa; // 当前为数据查询 uint8_t bstartAdd; // 根据抬枪信号,判断开始加油 }__attribute__((packed)) xspoptData; extern xspoptData g_xspoptDa; // 显示屏的过程数据 typedef struct xsp_record_{ uint32_t recordId; // 记录ID uint16_t bsend; // 0xff:没有发送 0x00:已经发送 uint8_t recodeMode; // 记录产生方式 0:逻辑产生 1:抬枪信号产生,3:按键产生 uint8_t priceUseCount; // 单价屏的索引 uint32_t amount; uint32_t oil; uint32_t price; uint64_t tamount; uint64_t toil; uint32_t timer;// 记录时间 }__attribute__((packed)) xspRecord; typedef union xsp_data_info_{ uint8_t data[64]; xspRecord reDa; }__attribute__((packed)) XspDataInfo; extern XspDataInfo g_xspReDa; typedef struct _up_7seg_src_data_{ uint8_t bOpen; // 是否开启 1:开启 uint8_t bAppointDev; // 是否指定的一个设备 0:否, 1:指令的设备为主 2:指定的设备为从 uint8_t bofflineTest; // 离线调试,主动上报 timeout_t upTime; // 上报的时长 uint8_t devMsg[17]; // 读取指令的从设备的8段数据,用于主设备问询从设备 }__attribute__((packed))Up7segData; extern Up7segData g_up7segData; typedef enum { LOW_LEVEL = 0x00, HIGHT_LEVEL = 0x01, LOW_HIGHT = 0x02, // 由低变高 HIGHT_LOW = 0x03, // 由高变低 }gunstatus; #define GUN_STATUS_TIMER 10000 typedef struct gun_status_{ gunstatus curst; // 当前的状态 gunstatus lastst; // 上一次的状态 uint32_t timer; // 时间 uint8_t count; // 检测次数 低电平的个数 uint8_t bsave; // 是否已经挂枪需要存储数据 }__attribute__((packed))GunStatus; extern void save_display_data_to_flash(void); extern void init_gun_status(void); extern void deal_gun_status(uint32_t tick); extern void anay_7eg(void); extern void processing_display_data(dispData *da); #endif