xspDataOpt.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #ifndef _XSPDATAOPT_H_
  2. #define _XSPDATAOPT_H_
  3. #include "../CMSIS/gd32f10x.h"
  4. #include "xspOptFlash.h"
  5. #include <string.h>
  6. #include "../Hardware/boardinit.h"
  7. extern uint8_t g_7egDa[29];
  8. typedef struct display_data_{
  9. uint32_t price; // 单价
  10. uint32_t amount; // 金额
  11. uint32_t oil; // 油量
  12. }__attribute__((packed)) dispData;
  13. typedef struct xspopt_data_{
  14. dispData lastDa; // 上次记录的数据,只有显示屏不变时或是显示屏清零时开始记录
  15. dispData curDa; // 当前数据
  16. dispData startDa;
  17. uint8_t lastDawrite; // 上次数据是否已经存储
  18. uint8_t gunStatus; // 枪的状态
  19. uint8_t newCode; // 新交易记录标识
  20. uint8_t bsame4; // 读取4次数据都是相同的
  21. uint64_t lastTamout;
  22. uint64_t lastToil;
  23. uint32_t changeCnt; // 变化的过程
  24. uint32_t lastCnt;
  25. uint8_t noChangeCnt; // 不变情况的统计
  26. uint8_t bCheckDa; // 当前为数据查询
  27. uint8_t bstartAdd; // 根据抬枪信号,判断开始加油
  28. }__attribute__((packed)) xspoptData;
  29. extern xspoptData g_xspoptDa; // 显示屏的过程数据
  30. typedef struct xsp_record_{
  31. uint32_t recordId; // 记录ID
  32. uint16_t bsend; // 0xff:没有发送 0x00:已经发送
  33. uint8_t recodeMode; // 记录产生方式 0:逻辑产生 1:抬枪信号产生,3:按键产生
  34. uint8_t priceUseCount; // 单价屏的索引
  35. uint32_t amount;
  36. uint32_t oil;
  37. uint32_t price;
  38. uint64_t tamount;
  39. uint64_t toil;
  40. uint32_t timer;// 记录时间
  41. }__attribute__((packed)) xspRecord;
  42. typedef union xsp_data_info_{
  43. uint8_t data[64];
  44. xspRecord reDa;
  45. }__attribute__((packed)) XspDataInfo;
  46. extern XspDataInfo g_xspReDa;
  47. typedef struct _up_7seg_src_data_{
  48. uint8_t bOpen; // 是否开启 1:开启
  49. uint8_t bAppointDev; // 是否指定的一个设备 0:否, 1:指令的设备为主 2:指定的设备为从
  50. uint8_t bofflineTest; // 离线调试,主动上报
  51. timeout_t upTime; // 上报的时长
  52. uint8_t devMsg[17]; // 读取指令的从设备的8段数据,用于主设备问询从设备
  53. }__attribute__((packed))Up7segData;
  54. extern Up7segData g_up7segData;
  55. typedef enum {
  56. LOW_LEVEL = 0x00,
  57. HIGHT_LEVEL = 0x01,
  58. LOW_HIGHT = 0x02, // 由低变高
  59. HIGHT_LOW = 0x03, // 由高变低
  60. }gunstatus;
  61. #define GUN_STATUS_TIMER 10000
  62. typedef struct gun_status_{
  63. gunstatus curst; // 当前的状态
  64. gunstatus lastst; // 上一次的状态
  65. uint32_t timer; // 时间
  66. uint8_t count; // 检测次数 低电平的个数
  67. uint8_t bsave; // 是否已经挂枪需要存储数据
  68. }__attribute__((packed))GunStatus;
  69. extern void save_display_data_to_flash(void);
  70. extern void init_gun_status(void);
  71. extern void deal_gun_status(uint32_t tick);
  72. extern void anay_7eg(void);
  73. extern void processing_display_data(dispData *da);
  74. #endif