#ifndef __TXH_H__ #define __TXH_H__ #define QUEUE_SIZE 10 typedef struct spu_info { union { u8 byte[12]; u32 id[3]; }v; }cup_t; typedef union { u16 State; struct { u8 e_errFlashParameter : 1; //FLASH断线 u8 e_errFramParameter : 1; //铁电参数错误 u8 e_errPCBCheck : 1; //电路板验证 u8 e_errMessageEnd : 1; }Flag; }ErrState_TypeDef; __packed typedef struct { u8 Sec; u8 Min; u8 Hour; u8 Day; u8 Month; u8 Year; }CTIME_type; typedef enum { Message_Priority_1 = 1, Message_Priority_2, Message_Priority_3 , }Message_PriorityItem; typedef struct Message { u8 Priority; // 消息优先级,1-3之间的整数 u8 Content; // 消息内容 }Message_Type; typedef struct MessageQueue { u8 Front; // 队头指针 u8 Rear; // 队尾指针 Message_Type Messages[QUEUE_SIZE]; // 消息队列数组 }MessageQueue_Type; __packed typedef union { u8 Buff[16]; __packed struct { float OH; float OV; float WH; float TH; }Data; }TankData_Type; __packed typedef union { u8 State; __packed struct { u8 TankLeaked : 1; u8 GasLeakage : 1; u8 THOutOfLimits : 1; u8 TLOutOfLimits : 1; u8 PHHOutOfLimits : 1; u8 PLLOutOfLimits : 1; u8 Electrostatic : 1; u8 beiyong : 1; }Flag; }TankState_Type; __packed typedef struct { u32 OilCNT ; //实时油量 u32 MoneyCNT ; //实时金额 }FData_Type;//8byte __packed typedef struct { u64 TotalLit; //油量总累 u64 TotalMoney; //金额总累 }CTOTAL_Type;//16byte __packed typedef struct { u8 GunNumber; //枪号 FData_Type FData; //加油数据 u32 Price; //单价 CTOTAL_Type CTOTAL; //累计 CTIME_type RTIME; //完成时间 u32 OrderNumber; //订单号,离线授权的话为0 u8 CardNum[6]; //卡号 6BYTE BCD u8 Standby[51]; //预留 }PREXDATA_Type;// typedef struct { u8 PrintBuff[20][32]; }PrintInfo_Type; typedef union { u8 State; struct { u8 : 1; // u8 : 1; // u8 : 1; // u8 TitleFlag : 1; //受控标志1受控0自控 u8 : 1; // u8 StartFlag : 1; //开机标志1开机0停机 u8 Pause : 1; //暂停 u8 GunUp : 1; //提枪 }Flag; }fuelState_TypeDef; typedef union { u8 Buff[10]; __packed struct { float Longitude; //经度 u8 LongitudeType; //经度类型 float Latitude ; //纬度 u8 LatitudeType ; //纬度类型 }GPS; }GPS_Type; typedef enum { Display_664, Display_886, }Display_Typ; typedef enum { YWY_Bluesky, YWY_Probe_KY, YWY_Pressure, }YWY_Typ; typedef enum { Preset_Sale, Preset_Volume, }Preset_Typ; typedef enum { POS_Connect_Typ_Station, POS_Connect_Typ_Cloud, POS_Connect_Typ_Cloud_Tast, //POS_Connect_Typ_WifiStation, POS_Connect_Typ_End, }POS_Connect_Typ; typedef enum { POS_Net_Typ_4G_GM5, POS_Net_Typ_4G_L510, POS_Net_Typ_WiFi, POS_Net_Typ_WAN, POS_Net_Typ_End, }POS_Net_Typ; typedef enum { PosNormal, PosBlueSky, PosLY, PosJP, PosDart, PosYWY, PosRFID, PosYGao, PosHongYang, PosSSLan, PosBlueSkyPlus, PosPLC, PosPrice1_4, PosLanFeng, }PosItem; typedef enum { At45DB041, At45DB321, At45DB641, }At45DBTypeItem; typedef union { u8 State; struct { u8 State : 2; u8 PresetType : 2; // u8 PresetMode : 1; // u8 UpdateRecords: 1; //有信息标志1 u8 Unit : 1; // u8 GunUp : 1; //提枪标志1提枪0挂枪 }Flag; }YGGunState_TypeDef; typedef union { u8 State; struct { u8 GunNum : 3;//抢号 u8 State : 1; //状态0挂枪1提枪 u8 Null : 4; // }Flag; }DartGunState_TypeDef; typedef union { u8 State; struct { u8 : 1; u8 ErroFlag : 1; //有错误标志 u8 : 1; //1有未上传记录0没有 u8 TitleFlag : 1; //受控标志1受控0自控 u8 BatteryFlag : 1; //电池电量标志1有电0没电 u8 StartFlag : 1; //开机标志1开机0停机 u8 EventFlag : 1; //有事件标志 u8 GunUp : 1; //提枪标志1提枪0挂枪 }Flag; }LTGunState_TypeDef; typedef union { u8 State; struct { u8 PriceChange : 1; //单价变更 u8 ShiftChange : 1; //班累变更 u8 TotalChange : 1; //总累变更 u8 StartFlag : 1; //加油中 u8 TitleFlag : 1; //受控状态 u8 GunUp : 1; //提枪状态 u8 : 1; u8 : 1; // }Flag; }HYState_TypeDef; typedef union { u8 State; struct { u8 : 1; // u8 : 1; // u8 : 1; // u8 : 1; // u8 GunUp : 1; //提枪状态 u8 : 1; // u8 : 1; u8 : 1; // }Flag; }HYSelfTestState_TypeDef; typedef union { u8 State; struct { u8 GunUP_Flag : 1; //提枪状态 u8 Start_Flag : 1; //启动状态 u8 UpdateDisplay : 1; //需更新数据 u8 UpdateRecords : 1; //需入库 //慎重,非油机设备不要用这个标志 u8 : 1; // u8 AuthorizeState: 1; //授权状态 u8 LockState : 1; //枪锁定状态 u8 Online : 1; //在线 }Flag; }GunState_TypeDef; typedef struct { u8 VersionFindFlag; u8 Version[10]; }GunVersion_Type; typedef union { u8 State; struct { u8 Update_Flag : 1; //升级标志 u8 RightRun_Flag : 2; //待运行标志 u8 BaudRateSync_Flag : 1; //波特率同步标志 u8 HaveBackups : 1; //有备份过 u8 : 1; // u8 : 1; // u8 DisableUpdate : 1; //不允许更新 }Flag; }ROM_UpData_State_Type; typedef struct { u8 Number;//关联设备的设备号 u8 Port;//端口 u8 location;//内存位置 }AssociatedDevices_Type; typedef struct { u8 Handshake; //握手步骤进度 u8 DartSeq; //dart协议通讯序号 u8 LYGunNeedCMD; //下下个需要的命令 u8 LYGunState; //龙野协议枪状态 u8 LYHandshakeCRC; //龙野握手校验 u8 MB_CMD_Next; //下个命令 u8 MB_CMD_Next_End;//指令不自动转换,主要是在停止生成记录和启动的过程。用在改单价之火读取单价和单独预置指令 u8 PresteType; // u32 PresetValue; // timer_TypeDef LTDelayTimer; //蓝天协议下加油结束等待生成总累 GunState_TypeDef fuelState_B; //上次枪状态 u8 SlaveNeedReply; //回复wifi从机的状态,转接中心过来的枪状态的回复信息给从机 FData_Type FData; //实时数据 CTOTAL_Type CTOTAL; //累计 u32 Price; //单价 u8 PriceStete; //单价0=不生效;1=一次性生效;2=永久生效 u32 PulseCoefficient;//脉冲当量 u16 ValveValue; //提前关阀量 u16 MinDisplay; //最小显示值 u8 RSSI; //LORA信号强度 u8 Call; //请求授权 u8 WaitPREXDATA_flag;//等待记录形成,完成之前不能再次启动,防止形成记录之前再次授权 u8 CardNumber[10]; u8 RFIDUserName[15]; u8 CardPSWD[3]; u8 CarLicensePlate[15]; u32 Mileage; u8 BalanceDecimal; u8 Balance[5]; u8 RFIDState; AssociatedDevices_Type AssociatedDevices;//没有对应RFID为0(关联设备信息) GunVersion_Type GunVersion; u16 FrameNow; ROM_UpData_State_Type ROM_UpData_State; u8 FatherNum;//父设备号 u8 SonNum;//子设备在父设备中的位置 u8 ParameterNumber; YGGunState_TypeDef YGGunState; //龙野协议枪状态 }GunInfo_Type; typedef struct { ROM_UpData_State_Type ROM_UpData_State; u16 FrameTop; }ROM_UpData_Type; typedef enum { Control_POSAuto, Control_POSManual, Control_BoxAuto, Control_NoGun, }GunControlState_Item; typedef enum { NowAuthorizeType_Online, NowAuthorizeType_Offline_NoCard, NowAuthorizeType_Offline_Card, }NowAuthorizeType_Type; typedef struct { u8 GunNummber; u8 GunAddr; GunState_TypeDef GunState; u32 OrderNumber; u8 RFIDBinding;//绑定的RFID编号 ROM_UpData_State_Type ROM_UpData_State; u8 GunControlState;//授权模式 u8 NowAuthorizeType;//当前加油的授权方式0;在线;1离线非卡;2离线白名单 u8 Standby[3]; }GunData_Type; typedef enum { MD_RS485, MD_LORA, }MDConnectType; typedef union { u8 State; struct { u8 OilCNT : 2; u8 MoneyCNT : 2; u8 Price : 2; }Dec; }GunDec_TypeDef; typedef struct { u8 Number; u8 Type[7]; }PaymentType_Type; typedef struct { u32 BaudRate; u8 StopBits; u8 Parity_Even; u8 POSType; //协议类型 u8 DeviceNumber; //设备数量 u32 MBCountTime; //轮询时间ms u8 Device_Type; //设备类型 u8 MDConnectType;//连接形式 485/LORA u8 ROM_UpData_Version[10]; ROM_UpData_Type ROM_UpData; GunDec_TypeDef GunDec; PaymentType_Type PaymentType; u8 Standby[10]; }PortData_Type; typedef struct { PortData_Type PortData; GunData_Type GunData[16]; }MD_Port_Data_Type; typedef struct { u8 SonNumber;//子设备数量 u8 Address;//统一指令 u8 SonStart;//第一个子设备的内存位置 u8 SonNow;//当前要操作的枪 u8 Handshake;//握手序号 u8 MB_CMD_Next; u8 MB_CMD_Need; //下下个需要的命令 u8 Handshake_Top;//握手序号最大值 u8 Password_Lever; u32 Password; u8 LockType; u8 LockTime[3];//年月日 u16 lockNummber; u8 LockValue[6]; GunVersion_Type Version; u16 FrameNow; u8 Mac[12]; timer_TypeDef LTDelayTimer; //蓝天协议下加油结束等待生成总累,其他协议也可以用来判断是否行程记录的时间 }FatherDevice_Type; typedef struct { GunState_TypeDef State; u8 SingleOrDouble;//单双面0单1双 u8 PriceNumber;//面板数量 u8 Length;//单价长度2-6 u8 Brightness;//亮度0-8 u32 Price[12];// u8 Decimal[12];//小数位 }PriceTagData_Type; typedef struct { u8 pGunReturn;//插队之后返回 u8 pGunCapture;//插队的枪号 u8 pGunNow;//当前发送枪号 u8 PumpNow;//当前发送泵号 u8 LoopGunNextFlag;//允许继续发送下一枪 u8 Handshake_Top;//握手序号最大值 u8 FatherDeviceTop;//几个泵 FatherDevice_Type FatherDevice[16];//每个泵的信息 GunInfo_Type GunInfo[16]; PriceTagData_Type PriceTagData; }MD_Port_Info_Type; typedef struct { u8 DeviceNumber; PortData_Type PortData[5]; GunState_TypeDef State[5]; u8 Standby[20]; }MD_Multiplex_Port_Data_Type; typedef struct { u8 DevicerReturn;//插队之后返回 u8 DevicerCapture;//插队的枪号 u8 DevicerTypeNow;//当前发送的设备类型 u8 PrintPlaceNumber;//当前打印位置 u8 PrintType;//当前打印类型 u8 LoopDevicerNextFlag;//允许继续发送下一枪 u8 Handshake[5];//握手序号最大值 u8 MB_CMD_Next[5]; u8 Handshake_Top[5];//握手序号最大值 timer_TypeDef MultiplexDevicerTimer[5]; u8 MBCountCutNum[5]; GunState_TypeDef State[5]; PriceTagData_Type PriceTagData; }MD_Multiplex_Port_Info_Type; typedef struct { char CMD_SOCKA[50]; char IMEI[20]; char APN[40]; char WiFIName[40]; char WiFIPassWord[20]; }WirelessData_Type; typedef struct { WirelessData_Type WirelessData; union { u16 State; struct { u8 ConnectMode : 4; u8 NetworkSet : 4;//如果是wifi从机模式,参数当WiFiHostSet用 }Flag; }POSConnectTyye; u8 Address;//从机自身的地址,目的是分时发送数据 u8 WhiteListVersion; u8 Standby[19]; }POSData_Type; typedef struct { u8 Link_Flag; u8 ConnectType; u8 NetType; u8 POS_ConnectRXTask_Flag; u8 POS_CMD_Next; u8 WiFiSetState; u8 WiFiRSSI; u8 WiFiChannel; u8 AskCongfig_Num;//上电申请配置下发,1-2端口 u8 HostHandshake; u8 IP[50]; }POS_Info_Type; typedef union { u16 State; struct { u8 POSNetSetErrNummber : 3; //网络模块配置失败次数 u8 POSNetCMDNext : 4; //指令模式下待发送指令 u8 WorkMode : 1; //工作模式Bit6 0:指令 1:透传 }Flag; }POSNetSetState_TypeDef; typedef union { u16 State; struct { u8 ConnectSetErrNummber : 3; //网络模块配置失败次数 u8 SetModeCMDNext : 4; //指令模式下待发送指令 u8 WorkMode : 1; //工作模式Bit6 0:指令 1:透传 }Flag; }MDConnectState_TypeDef; typedef union { u8 State; struct { u8 APN : 1; //配置文件包含APN }Flag; }Sysconfig_Flag_TypeDef; typedef struct { u16 WhiteListTop; u8 CardNum[200][6]; }WhiteList_Type; typedef struct { u32 PREXDATA_NowWaitUpNummber;//这次上传时记录数量备份 u16 PREXDATA_NowFrame; //这次上传的帧 u8 PREXDATA_NowFrameLen;//这次上传的帧包含的条数 }PREXDATA_Upload_Type; typedef union { u8 State; struct { u8 Power10V : 1; u8 Power7V : 1; }Flag; }PowerDown_TypeDef; typedef union { u8 State; struct { u8 : 1; // u8 : 1; // u8 : 1; // u8 : 1; // u8 : 1; // u8 : 1; // u8 : 1; // u8 Online : 1; //在线 }Flag; }CNGPLCState_TypeDef; typedef union { u8 Buff[80]; //ModBus寄存器组 __packed struct { float PistonAValue;//A活塞当前值` float PistonBValue;//B活塞当前值 float IntakePressure; //进气压力 float LowPressure; //低压压力 float InstrumentAirPressure;//仪表风压力 float MediumPressure; //中压压力 float GasConcentration1;//橇内燃气浓度1 float HydraulicOilTemperature;//液压油温 float HighPressure; //高压压力 float ProtectPressure; //保护压力 float WaterTemperature; //水流温度 float GasConcentration2; //燃气浓度2 float GasConcentration3; //燃气浓度3 u16 MW28Alarm; //MW28报警 u16 MB5Alarm; //MB5报警 u16 MB10Alarm; //MB10报警 }REG; }CNGPLCData_Type; typedef struct { u16 Encryption[4]; ErrState_TypeDef ErrState; u8 BoardType;//靠按键状态识别是不是新版本的主板 u8 HardwareVersion;//硬件版本 ////24-31是大板,32-38是小板,小板没有第五端口 u8 WiFiSlaveMode; Sysconfig_Flag_TypeDef Sysconfig_Flag; PowerDown_TypeDef PowerDown; u8 SystemErr; u16 POS2MD_Buff_Len; u8 USART6_Drive; u8 SurfaceNow; u8 SurfaceNowLine; u8 SurfaceNowItem; u8 SurfaceSelected_Flag; u8 DisplayOn; u8 KeyNum; timer_TypeDef KeyFindTimer; u8 POS_MonitorModel;//监控模式 u8 OfflineAuthorize; u16 OfflineAuthorizeNumberMax; PREXDATA_Type PREXDATA[5]; u32 PREXDATA_WaitUpNummber;//待上传数量 PREXDATA_Upload_Type PREXDATA_Upload; u32 PREXDATA_TTC; PREXDATA_Type PrintLastRecord[64];//越南打印每把枪最后一笔数据 PREXDATA_Type PrintRecord;//历史记录打印,后台下发数据 PrintInfo_Type PrintInfo; ROM_UpData_Type ROM_UpData; u8 ROM_UpData_ProgressBar; u8 ROM_UpData_Port; LTGunState_TypeDef LTGunState; //蓝天协议枪状态 //YGGunState_TypeDef YGGunState; //龙野协议枪状态 DartGunState_TypeDef DartGunState;//Dart协议枪状态 HYState_TypeDef HYState; //弘扬协议状态 HYSelfTestState_TypeDef HYSelfTestState;//弘扬协议状态 u8 FRam_Flag; u8 ATDB45_Flag; u8 ATDB45Type; u8 Frame[513]; u8 UDisk_Flag; CTIME_type CTIME; CTIME_type PosCTIME; u32 RNGData; float Apacity[100]; u8 TankNumTop; TankState_Type TankState[5][12]; TankData_Type TankData[5][12]; CNGPLCData_Type CNGPLCData; CNGPLCState_TypeDef CNGPLCState; WhiteList_Type WhiteList;//白名单列表 //MessageQueue_Type POS_TX_MessageQueue; u8 POS_TX_CMDNow; u8 PCCountMail_Flag; u16 PCMail_RX_Len; u8 PosYWY_Pressure_Nummber; timer_TypeDef CTIMEReadTimer; timer_TypeDef HeartbeatTimer; timer_TypeDef POS_RS232Timer; timer_TypeDef ReSendDataTimer; //PCCount_RX_Buff_TypeDef PCCountMail; u8 ConnectType; timer_TypeDef DelayDetectionTimer; //网络延迟检测定时器 u32 DelayDetection;//网络延迟数据,0表示收不到信息 timer_TypeDef POSCutTimer; timer_TypeDef MDRestartTimer[4]; // u8 POSLOCK_Impower; POSNetSetState_TypeDef POSNetSetState; u8 ICCID[21]; POSData_Type POSData; POS_Info_Type POS_Info; timer_TypeDef GPSDataTimer; GPS_Type GPSData; u8 Timer_Num_Top; volatile timer_TypeDef *Timer_Buff[200]; timer_TypeDef AnalogTimer; MDConnectState_TypeDef MDConnectState[5]; u8 MD_Port_Num_Top; u8 MD_Gun_Num_Top; timer_TypeDef MBCountRXIDLETimer[4]; timer_TypeDef MBCountTimer[4]; u8 MBCountCutNum[4][16]; //断线定时器 MD_Multiplex_Port_Data_Type MD_Multiplex_Port_Data;//端口5,多路复用口 MD_Multiplex_Port_Info_Type MD_Multiplex_Port_Info; timer_TypeDef MD_MultiplexRXIDLETimer; timer_TypeDef MD_MultiplexTimer; u16 MD_Multiplex_Rec_Nummber; u16 MD_Multiplex_Rec_NummberB;//临时判断接受长度 MD_Port_Data_Type MD_Port_Data[4]; MD_Port_Info_Type MD_Port_Info[4]; u16 MD_Rec_Nummber[4]; u16 MD_Rec_NummberB[4];//临时判断接受长度 timer_TypeDef MD_FramContinuityTimer[4]; timer_TypeDef POSReLinkTimer; timer_TypeDef MD_LORA_SlaveTimer; u8 MD_LORA_Slave_Flag; u8 MD_LORA_Set_Flag; }TXHData_type; //****************************************************************************** extern volatile TXHData_type TXHData;//定义指针数据 extern const u8 BoxVersion[11]; extern cup_t STM32CPU; void TXH_Init(void); void TXH_Task(void); //------------------------------------------------------------------------------ #endif