tax_ctrl.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. #ifndef _TAX_CTRL_H_
  2. #define _TAX_CTRL_H_
  3. #include "stm32f10x.h"
  4. #include "includes.h"
  5. #define UART_RS485 UART3_ID
  6. extern int rs485_send_flag;
  7. typedef int (*rx_data_proc) (void *puser, uint8_t *data, uint8_t data_len);
  8. typedef struct _tYTSFCommFrame
  9. {
  10. uint8_t fhead; //帧头(1Byte)
  11. uint8_t flen; //帧长度(1Byte)
  12. uint8_t findex; //帧序号(1Byte)
  13. uint8_t fport; //税控口编号(1Byte),0税控口1,1税控口2
  14. uint8_t fcmd; //命令码(1Byte)
  15. // uint16_t fcrc; //CRC校验(2Byte)
  16. }tYTSFCommFrame_t;
  17. typedef struct _tTaxCommFrame
  18. {
  19. //前导码+长度码 千帧号+命令码 +参数 +校验码
  20. uint8_t fhead; //帧头(1Byte)
  21. uint8_t flen; //帧长度(1Byte)
  22. uint8_t findex; //帧序号(1Byte)
  23. uint8_t fcmd; //命令码(1Byte)
  24. // uint16_t fcrc; //CRC校验(2Byte)
  25. }tTaxCommFrame_t;
  26. typedef struct _gun_info {
  27. uint8_t fail_count;
  28. uint8_t quality; //油品
  29. uint8_t id; //编号
  30. uint8_t status; //工作状态
  31. uint64_t total_price; //总累计金额
  32. uint64_t total_oil_volume; //总体积
  33. uint32_t last_unit_price; //最后一次加油的单价
  34. uint32_t last_oil_volume; //最后一次加油的油量
  35. uint32_t last_price; //最后一次加油的油价
  36. uint8_t gun_type; //加油枪的数据类型:0当次数据;1 累计数据
  37. uint32_t gun_msgid; //加油枪序列号
  38. uint8_t time_day;
  39. uint8_t time_hour;
  40. uint8_t time_minute;
  41. // uint8_t monitor_serino[16];
  42. // uint8_t gun_num;
  43. // uint8_t factory; /* 1: 英泰赛福 2: 拓盛 */
  44. // uint8_t taxpayer_reg_no[20];
  45. } gun_info_t;
  46. typedef struct _tax_info {
  47. uint8_t monitor_serino[16];
  48. uint8_t coder_serino[20];
  49. uint8_t dispaly_serino[16];
  50. uint8_t gun_num;
  51. uint8_t factory; /* 1: 英泰赛福 2: 拓盛 */
  52. uint8_t fail_count;
  53. uint8_t status;
  54. uint8_t gun_valid;
  55. uint8_t taxpayer_reg_no[20];
  56. gun_info_t gun[8];
  57. //for debug
  58. uint32_t tx_pkts;
  59. uint32_t rx_pkts;
  60. uint32_t rx_errs;
  61. } tax_info_t ;
  62. /**********************显示屏参数*********************/
  63. #define Write_LockScreen 0x81 //写锁屏
  64. #define Read_LockScreen 0x01 //读锁屏
  65. #define Write_LockAddress 0x82 //写地址锁定
  66. #define Read_LockAddress 0x02 //读地址锁定
  67. #define Write_Timesync 0x83 //写时间同步
  68. typedef struct _txspCommFrame
  69. {
  70. //帧头+长度码+帧号+地址码+指令码 +参数 +校验码
  71. uint8_t fhead; //帧头(1Byte)
  72. uint8_t flen; //帧长度(1Byte)
  73. uint8_t findex; //帧序号(1Byte)
  74. uint8_t faddress; //地址码(1Byte)
  75. uint8_t fcmd; //指令码(1Byte)
  76. }txspCommFrame_t;
  77. /*******************************************/
  78. typedef struct _rcv_data_0x8C_{
  79. uint8_t monitor_serino[10];
  80. uint8_t data14[64];
  81. uint8_t data14len;
  82. uint8_t data11[64];
  83. uint8_t data11len;
  84. uint16_t timer86;
  85. uint8_t crc86;
  86. uint8_t crc89;
  87. }__attribute__((packed)) rcv_data_0x8C_t;
  88. extern rcv_data_0x8C_t g_tax8Cda;
  89. #define GB_TAX_HEADER_LEN 10
  90. #define GB_TAX_INFO_LEN 53
  91. #define GB_GUN_INFO_LEN 22
  92. #define YTSF_GPIO_RS485_RESET() {GPIO_ResetBits(GPIOD, GPIO_Pin_3);}
  93. #define YTSF_GPIO_RS485_SET() {GPIO_SetBits(GPIOD, GPIO_Pin_3);}
  94. #define YTSF_GPIO_AB_RESET() {GPIO_ResetBits(GPIOD, GPIO_Pin_4);}
  95. #define YTSF_GPIO_AB_SET() {GPIO_SetBits(GPIOD, GPIO_Pin_4);}
  96. #define YTSF_GPIO_CD_RESET() {GPIO_ResetBits(GPIOD, GPIO_Pin_5);}
  97. #define YTSF_GPIO_CD_SET() {GPIO_SetBits(GPIOD, GPIO_Pin_5);}
  98. #define YTSF_GPIO_YTSF_RESET() {GPIO_ResetBits(GPIOD, GPIO_Pin_6);}
  99. #define YTSF_GPIO_YTSF_SET() {GPIO_SetBits(GPIOD, GPIO_Pin_6);}
  100. //#define YTSF_GPIO_REV2_RESET() {GPIO_ResetBits(GPIOD, GPIO_Pin_7);}
  101. //#define YTSF_GPIO_REV2_SET() {GPIO_SetBits(GPIOD, GPIO_Pin_7);}
  102. //#define YTSF_GPIO_SET() {GPIO_SetBits(GPIOB, GPIO_Pin_5);}
  103. //#define YTSF_GPIO_RST() {GPIO_ResetBits(GPIOB, GPIO_Pin_5);}
  104. //#define YTSF_GPIO_DETECT GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6)
  105. //#define YTSF_GPIO_EN() {GPIO_ResetBits(GPIOB, GPIO_Pin_7);}
  106. //#define YTSF_GPIO_DN() {GPIO_SetBits(GPIOB, GPIO_Pin_7);}
  107. /************************************************************/
  108. #define YTSF_GPIO_REV2_RESET() {GPIO_ResetBits(GPIOC, GPIO_Pin_0);}
  109. #define YTSF_GPIO_REV2_SET() {GPIO_SetBits(GPIOC, GPIO_Pin_0);}
  110. #define YTSF_GPIO_SET() {GPIO_SetBits(GPIOC, GPIO_Pin_1);}
  111. #define YTSF_GPIO_RST() {GPIO_ResetBits(GPIOC, GPIO_Pin_1);}
  112. #define YTSF_GPIO_DETECT GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_2)
  113. #define YTSF_GPIO_EN() {GPIO_ResetBits(GPIOC, GPIO_Pin_3);}
  114. #define YTSF_GPIO_DN() {GPIO_SetBits(GPIOC, GPIO_Pin_3);}
  115. /************************************************************/
  116. #define BIT_SET(p, bit) ((p) |= (1<<(bit)))
  117. #define BIT_CLC(p, bit) ((p) &= ~(1<<(bit)))
  118. #define TAX_UART UART1_ID
  119. #define FAIL_THRESHOLD 3
  120. #define TAX_MSG_PERIOD 10
  121. extern uint16_t _crc16_get(uint8_t *_buff,uint32_t _len);
  122. extern uint8_t tax_rcv_analyze_0x8C(uint8_t *data,void *puser,uint8_t *len);
  123. extern int tax_0x70_anaylse(void *puser, uint8_t *data, uint8_t data_len);
  124. #endif