| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- /**
- ******************************** STM32F10x *********************************
- * @文件名 : ytsf.h
- * @作者 : sun
- * @库版本 : V3.5.0
- * @文件版本 : V1.0.0
- * @日期 : 2016年05月09日
- * @摘要 : ytsf头文件
- ******************************************************************************/
- /* 定义防止递归包含 ----------------------------------------------------------*/
- #ifndef _YTSF_H
- #define _YTSF_H
- #include "stm32f10x.h"
- #include "stdbool.h"
- #define YTSF_DEBUG_EN 1
- #ifdef YTSF_DEBUG_EN
- #include <stdio.h>
- #define YTSF_DEBUG(fmt, x...) \
- do \
- { \
- printf(fmt,##x); \
- }while(0)
- #define YTSF_DEBUG1(fmt, x...) \
- do \
- { \
- printf("%s %s(Line %d): "fmt,__FILE__,__FUNCTION__,__LINE__, ##x); \
- }while(0)
- #define YTSF_DEBUG_F(fmt, x...) \
- do \
- { \
- printf("%s %s(Line %d): "fmt,__FILE__,__FUNCTION__,__LINE__, ##x); \
- }while(0)
- #define YTSF_DEBUG2(fmt, x...) \
- do \
- { \
- USART_printfHex(fmt,##x); \
- }while(0)
- #define YTSF_DEBUG_SN(fmt, x...) \
- do \
- { \
- USART2_SendNByte(fmt,##x); \
- }while(0)
- #else
- #define YTSF_DEBUG(fmt, x...)
- #define YTSF_DEBUG1(fmt, x...)
- #define YTSF_DEBUG2(fmt, x...)
- #define YTSF_DEBUG_F(fmt, x...)
- #define YTSF_DEBUG_SN(fmt, x...)
- #endif
- #define YTSF_LOOP_TIME 20
- extern bool YTSF_OnUse; //英泰赛福模块在位
- extern bool PORT0_SN_CHANGED;
- extern bool PORT1_SN_CHANGED;
- extern volatile bool Port0_OnUse; //端口0使用标记
- extern volatile bool Port1_OnUse; //端口1使用标记
- extern volatile uint32_t YTSF_PORT0_Send_Delay;
- extern volatile uint32_t YTSF_PORT1_Send_Delay;
- extern volatile uint32_t YTSF_PORT0_Send_CNT;
- extern volatile uint32_t YTSF_PORT1_Send_CNT;
- extern uint8_t CMD_LIST_polling;
- extern uint8_t CMD_LIST[][6];
- typedef enum
- {
- YTSF_CMD_ERROR_CMD=-1,
- YTSF_CMD_ERROR_LEN=-2,
- YTSF_CMD_ERROR_TYPE=-3,
- YTSF_CMD_ERROR_SN=-4
- } tYtsfCMDErrorCodes;
- typedef enum
- {
- YTSF_RCV_ERROR_EXE=0,
- YTSF_RCV_OK,
- YTSF_RCV_ERROR_MODULE_BUSY,
- YTSF_RCV_ERROR_JK_BUSY,
- YTSF_RCV_ERROR_JK_TIMEOUT,
- YTSF_RCV_ERROR_JL_NOTEXIST,
- YTSF_RCV_ERROR_SN_NOTEXIST=0x10,
- YTSF_RCV_ERROR_DECODE,
-
- YTSF_RCV_ERROR_HEAD=0X20,
- YTSF_RCV_ERROR_LEN,
- YTSF_RCV_ERROR_PORT,
- YTSF_RCV_ERROR_GUN,
- YTSF_RCV_ERROR_INS,
- YTSF_RCV_ERROR_TYPE,
- YTSF_RCV_ERROR_CRC,
- YTSF_RCV_ERROR_SN
-
- } tYtsfRCVErrorCodes;
- typedef enum
- {
- YTSF_STATE_IDLE=0,
- YTSF_STATE_UART_RX_INIT,
- YTSF_STATE_UART_ANALYSIS_INIT,
- YTSF_STATE_UART_ANALYSIS_RUNNING,
- YTSF_STATE_UART_ANALYSIS_DONE,
- YTSF_STATE_UART_ANALYSIS_TIMEOUT,
- YTSF_STATE_UART_ANALYSIS_CHANGED,
- YTSF_STATE_UART_ANALYSIS_FAILED,
- YTSF_STATE_PORT_GET_MONITOR_SN_INIT,
- YTSF_STATE_PORT_GET_MONITOR_SN_RUNNING,
- YTSF_STATE_PORT_GET_MONITOR_SN_DONE,
- YTSF_STATE_PORT_GET_MONITOR_SN_TIMEOUT,
- YTSF_STATE_PORT_GET_MONITOR_SN_CHANGED,
- YTSF_STATE_PORT_GET_MONITOR_SN_FAILED,
- YTSF_STATE_PORT_GET_MONITOR_ID_INIT,
- YTSF_STATE_PORT_GET_MONITOR_ID_RUNNING,
- YTSF_STATE_PORT_GET_MONITOR_ID_DONE,
- YTSF_STATE_PORT_GET_MONITOR_ID_TIMEOUT,
- YTSF_STATE_PORT_GET_MONITOR_ID_CHANGED,
- YTSF_STATE_PORT_GET_MONITOR_ID_FAILED,
- YTSF_STATE_PORT_GET_MONITOR_VER_INIT,
- YTSF_STATE_PORT_GET_MONITOR_VER_RUNNING,
- YTSF_STATE_PORT_GET_MONITOR_VER_DONE,
- YTSF_STATE_PORT_GET_MONITOR_VER_TIMEOUT,
- YTSF_STATE_PORT_GET_MONITOR_VER_CHANGED,
- YTSF_STATE_PORT_GET_MONITOR_VER_FAILED,
- YTSF_STATE_PORT_GET_MONITOR_STATE_INIT,
- YTSF_STATE_PORT_GET_MONITOR_STATE_RUNNING,
- YTSF_STATE_PORT_GET_MONITOR_STATE_DONE,
- YTSF_STATE_PORT_GET_MONITOR_STATE_TIMEOUT,
- YTSF_STATE_PORT_GET_MONITOR_STATE_CHANGED,
- YTSF_STATE_PORT_GET_MONITOR_STATE_FAILED,
- YTSF_STATE_PORT_GET_CODE_SN_INIT,
- YTSF_STATE_PORT_GET_CODE_SN_RUNNING,
- YTSF_STATE_PORT_GET_CODE_SN_DONE,
- YTSF_STATE_PORT_GET_CODE_SN_TIMEOUT,
- YTSF_STATE_PORT_GET_CODE_SN_CHANGED,
- YTSF_STATE_PORT_GET_CODE_SN_FAILED,
- YTSF_STATE_PORT_GET_LCD_SN_INIT,
- YTSF_STATE_PORT_GET_LCD_SN_RUNNING,
- YTSF_STATE_PORT_GET_LCD_SN_DONE,
- YTSF_STATE_PORT_GET_LCD_SN_TIMEOUT,
- YTSF_STATE_PORT_GET_LCD_SN_CHANGED,
- YTSF_STATE_PORT_GET_LCD_SN_FAILED,
- YTSF_STATE_PORT_GET_CHEAT_STATE_INIT,
- YTSF_STATE_PORT_GET_CHEAT_STATE_RUNNING,
- YTSF_STATE_PORT_GET_CHEAT_STATE_DONE,
- YTSF_STATE_PORT_GET_CHEAT_STATE_TIMEOUT,
- YTSF_STATE_PORT_GET_CHEAT_STATE_CHANGED,
- YTSF_STATE_PORT_GET_CHEAT_STATE_FAILED,
- YTSF_STATE_MODEL_GET_ID_INIT,
- YTSF_STATE_MODEL_GET_ID_RUNNING,
- YTSF_STATE_MODEL_GET_ID_DONE,
- YTSF_STATE_MODEL_GET_ID_TIMEOUT,
- YTSF_STATE_MODEL_GET_ID_CHANGED,
- YTSF_STATE_MODEL_GET_ID_FAILED,
- YTSF_STATE_MODEL_GET_TIME_INIT,
- YTSF_STATE_MODEL_GET_TIME_RUNNING,
- YTSF_STATE_MODEL_GET_TIME_DONE,
- YTSF_STATE_MODEL_GET_TIME_TIMEOUT,
- YTSF_STATE_MODEL_GET_TIME_CHANGED,
- YTSF_STATE_MODEL_GET_TIME_FAILED,
- YTSF_STATE_MODEL_SET_TIME_INIT,
- YTSF_STATE_MODEL_SET_TIME_RUNNING,
- YTSF_STATE_MODEL_SET_TIME_DONE,
- YTSF_STATE_MODEL_SET_TIME_TIMEOUT,
- YTSF_STATE_MODEL_SET_TIME_CHANGED,
- YTSF_STATE_MODEL_SET_TIME_FAILED,
- YTSF_STATE_MODEL_GET_VER_INIT,
- YTSF_STATE_MODEL_GET_VER_RUNNING,
- YTSF_STATE_MODEL_GET_VER_DONE,
- YTSF_STATE_MODEL_GET_VER_VEROUT,
- YTSF_STATE_MODEL_GET_VER_CHANGED,
- YTSF_STATE_MODEL_GET_VER_FAILED,
- YTSF_STATE_GUN_GET_ZongLeiJi_INIT,
- YTSF_STATE_GUN_GET_ZongLeiJi_RUNNING,
- YTSF_STATE_GUN_GET_ZongLeiJi_DONE,
- YTSF_STATE_GUN_GET_ZongLeiJi_TIMEOUT,
- YTSF_STATE_GUN_GET_ZongLeiJi_CHANGED,
- YTSF_STATE_GUN_GET_ZongLeiJi_FAILED,
- YTSF_STATE_GUN_GET_DangCi_INIT,
- YTSF_STATE_GUN_GET_DangCi_RUNNING,
- YTSF_STATE_GUN_GET_DangCi_DONE,
- YTSF_STATE_GUN_GET_DangCi_TIMEOUT,
- YTSF_STATE_GUN_GET_DangCi_CHANGED,
- YTSF_STATE_GUN_GET_DangCi_FAILED,
- YTSF_STATE_DEVICE_HEARTBEAT_INIT,
- YTSF_STATE_DEVICE_HEARTBEAT_RUNNING,
- YTSF_STATE_DEVICE_HEARTBEAT_DONE,
- YTSF_STATE_DEVICE_HEARTBEAT_FAILED
- } tYtsfStateCodes;
- typedef struct
- {
- //uint8_t data[SQ_DEPTH][SQ_WIDTH]; //队列储存区
- uint8_t fhead; //帧头(1Byte)
- uint8_t flen; //帧长度(1Byte)
- uint8_t findex; //帧序号(1Byte)
- uint8_t fport; //税控口编号(1Byte),0税控口1,1税控口2
- uint8_t fcmd; //命令码(1Byte)
- //uint8_t fparm; //参数
- uint8_t ftype; //命令消息类型(1Byte)
- uint8_t fgun; //枪号(1Byte)
- uint8_t fresult; //读取结果(1Byte)
- uint8_t fstatus; //读取结果(1Byte)
- uint8_t fdata[32]; //读取数据(NByte)
- uint8_t fldata; //读取数据(NByte)
- uint16_t fcrc; //CRC校验(2Byte)
-
- }tYTSFRxFrame_t;
- extern tYTSFRxFrame_t YTSF_rx_frame;
- typedef struct
- {
- uint8_t state; //使能(1Byte),0不使能,1使能,2无效
- uint8_t index; //枪号索引
- uint8_t ZongLeiJi[14]; //总累计
- }tGun_t;
- typedef struct
- {
- uint8_t state_m; //状态机
- uint8_t zlj_state; //总累计状态,0未读取总累计,1已读取总累计未读取当次,2已读取总累计已读取当此为发送,3已发送,4完成,9异常
- uint8_t index; //当前端口索引,0 端口0,1端口1
- uint8_t gun_index; //根据税控口SN,判断枪数最大值
- uint8_t gun_max; //根据税控口SN,判断枪数最大值
- uint8_t sn_init_st; //税控口SN初始化状态,0未初始化,1已经初始化,2初始化失败,3初始化超时
- uint8_t mntr_sn[5+10]; //monitor监控序列号SN
- uint8_t mntr_id[12+4]; //税控芯片ID号
- uint8_t mntr_factory; //税控芯片厂家,1英泰赛福,2拓盛
- uint8_t mntr_ver[1+1+4]; //税控芯片版本号,
- uint8_t mntr_st[1+1+4+4+1+3]; //税控状态
- uint8_t code_sn[5+5]; //编码器SN号
- uint8_t lcd_sn[5+5]; //显示屏SN号
- uint8_t cht_st[1+1+1+1+1+1+2]; //防作弊状态
- uint32_t loop_sn_period; //总累计周期计数器
- uint32_t loop_sn_timeout; //总累计周期超时时间,ms
- uint32_t loop_zlj_period; //总累计周期计数器
- uint32_t loop_zlj_timeout; //总累计周期超时时间,ms
- uint32_t loop_state_period; //总累计周期计数器
- uint32_t loop_state_timeout; //总累计周期超时时间,ms
- uint32_t loop_dc_period; //当次周期计数器
- uint32_t loop_dc_timeout; //当次周期超时时间,ms,从总累计到当次的时间
- uint32_t disconn_time; //断开连接次数,超过N次,state变为3
- uint8_t dangci_lframe; //lora发送消息长度
- uint8_t dangci_frame[32]; //lora发送消息内容
- uint8_t lora_send_lmsg; //lora发送消息长度
- uint8_t lora_send_msg[128]; //lora发送消息内容
- tGun_t gun[8]; //枪
- }tPort_t;
- typedef struct
- {
- uint32_t state; //状态机
- uint32_t device_id; //采集器,ID
- uint8_t encrypt; //是否开启加密版,是否使用英泰赛富模块,0不使用,1使用
- uint8_t chk_zlj; //是否检查总累计变化
- uint8_t chan_index; //采集器,通道号
- uint8_t chan_total; //采集器,通道总数
- uint8_t zlj_chk; //是否判断总累计变化,1判断总累计变化,0不判断总累计变化,
- uint8_t lora_send_state; //lora 发送状态,0不使能,1使能,2无效
- uint32_t lora_nosend_period; //从开机到lora发送使能的时间,超时计数器
- uint32_t lora_nosend_timeout; //从开机到lora发送使能的时间,超时时间
-
- uint8_t ytsf_state; //英泰赛福数据模块,0不使用英泰赛福数据模块,1使能,2无效
- //uint8_t ver[4+4+4+7+1]; //英泰赛福数据模块,版本
- uint16_t ver;
- uint32_t loop_ytsf_period; //英泰赛福数据模块本身(不涉及税控口,如读取模块ID),周期计数器
- uint32_t loop_ytsf_timeout; //英泰赛福数据模块本身(不涉及税控口,如读取模块ID),周期超时间,ms
- uint8_t ytsf_id[12]; //英泰赛福数据模块,ID
- tPort_t port[2]; //端口
- uint8_t lmsg; //lora发送消息长度
- uint8_t msg[128]; //lora发送消息内容
- }tDevice_t;
- extern tYTSFRxFrame_t YTSF_rx_frame;
- extern tYTSFRxFrame_t YTSF_rx_frame_port[2];
- extern tDevice_t mDevice;
- #define CRC_INIT_VALUE 0x0000
- #define Ytsf_CMD_BUF_SIZE 32
- #define Ytsf_CMD_A1_SIZE 18
- #define Ytsf_CMD_A2_SIZE 15
- #define Ytsf_CMD_A5_SIZE 8
- #define Ytsf_CMD_MAX_LIST 94
- #define Ytsf_JK_SN_SIZE 5
- #define Ytsf_CMD_PARM_SIZE 8
- #define Ytsf_PORT_0 0x00
- #define Ytsf_PORT_1 0x01
- #define Ytsf_GUN_NUM_0 0x00
- #define Ytsf_GUN_NUM_1 0x01
- #define Ytsf_GUN_NUM_2 0x02
- #define Ytsf_GUN_NUM_3 0x03
- #define Ytsf_GUN_NUM_4 0x04
- #define Ytsf_GUN_NUM_5 0x05
- #define Ytsf_GUN_NUM_6 0x06
- #define Ytsf_GUN_NUM_7 0x07
- #define Ytsf_CMD_INSTRUCT_A0 0xa0
- #define Ytsf_CMD_INSTRUCT_A1 0xa1
- #define Ytsf_CMD_INSTRUCT_A2 0xa2
- #define Ytsf_CMD_INSTRUCT_A5 0xa5
- #define Ytsf_CMD_INSTRUCT_AF 0xaf
- #define Ytsf_CMD_TYPE_00 0x00
- #define Ytsf_CMD_TYPE_01 0x01
- #define Ytsf_CMD_TYPE_02 0x02
- #define Ytsf_CMD_TYPE_10 0x10
- #define Ytsf_CMD_TYPE_11 0x11
- #define Ytsf_CMD_TYPE_12 0x12
- #define Ytsf_CMD_TYPE_13 0x13
- #define Ytsf_CMD_TYPE_14 0x14
- #define Ytsf_CMD_TYPE_20 0x20
- #define Ytsf_CMD_TYPE_21 0x21
- #define Ytsf_CMD_TYPE_FF 0xff
- #define CMD_en 0x01
- #define CMD_dn 0x00
- #define YTSF_GPIO_SET() {GPIO_SetBits(GPIOC,GPIO_Pin_8);}
- #define YTSF_GPIO_RST() {GPIO_ResetBits(GPIOC,GPIO_Pin_8);}
- #define YTSF_GPIO_DETECT GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_11)
- #define YTSF_GPIO_EN() {GPIO_ResetBits(GPIOA,GPIO_Pin_12);}
- #define YTSF_GPIO_DN() {GPIO_SetBits(GPIOA,GPIO_Pin_12);}
- uint16_t GetCRC16(uint8_t *_buff,uint32_t _len);
- uint8_t Get_MAX_CMD_LIST(void);
- uint8_t Get_Ytsf_init(void);
- uint8_t YTSF_CMD_Tx(uint8_t size,uint8_t port,uint8_t gun,uint8_t instruct,uint8_t type);
- int16_t Get_CMD_Index_ByParm(uint8_t port,uint8_t gun,uint8_t instruct,uint8_t type);
- int16_t Set_CMD_Enable_ByIndex(uint16_t index);
- int16_t ReSet_CMD_Enable_ByIndex(uint16_t index);
- int16_t Set_CMD_Enable_ByParm(uint8_t port,uint8_t gun,uint8_t instruct,uint8_t type);
- int16_t ReSet_CMD_Enable_ByParm(uint8_t port,uint8_t gun,uint8_t instruct,uint8_t type);
- int16_t Set_CMD_Enable_ByPort(uint8_t port);
- int16_t ReSet_CMD_Enable_ByPort(uint8_t port);
- int16_t Set_CMD_Enable_ByGun(uint8_t port,uint8_t gun);
- int16_t ReSet_CMD_Enable_ByGun(uint8_t port,uint8_t gun);
- uint8_t Ytsf_CMD_TEST(void);
- uint8_t Get_Ytsf_init(void);
- uint8_t Ytsf_CMD_polling(void);
- uint8_t Ytsf_CMD_Analysis(uint8_t *buf,uint8_t slen);
- int8_t Ytsf_CMD_Analysis2(tYTSFRxFrame_t *frame,uint8_t *sbuf,uint8_t slen);
- uint8_t YTSF_GET_STATE(void);
- uint8_t YTSF_SET_STATE(uint8_t s);
- uint8_t Ytsf_UartRx_Process(void);
- void Ytsf_loop(void);
- void Tax_loop(void);
- #define TAX_PORT_0 0x00
- #define TAX_PORT_1 0x01
- #define TAX_GUN_NUM_0 0x00
- #define TAX_GUN_NUM_1 0x01
- #define TAX_GUN_NUM_2 0x02
- #define TAX_GUN_NUM_3 0x03
- #define TAX_GUN_NUM_4 0x04
- #define TAX_GUN_NUM_5 0x05
- #define TAX_GUN_NUM_6 0x06
- #define TAX_GUN_NUM_7 0x07
- #define STATE_M_MODE_INIT 0x00 //状态机的状态更新模式,初始化
- #define STATE_M_MODE_En 0x01 //状态机的状态更新模式,入队列
- #define STATE_M_MODE_De 0x02 //状态机的状态更新模式,出队列
- #define STATE_M_MODE_FORCE 0x03 //状态机的状态更新模式,强制设置状态机
- #endif /* _USART_H */
- /**** Copyright (C)2016 sun. All Rights Reserved **** END OF FILE ****/
|