260 lines
9.9 KiB
C
260 lines
9.9 KiB
C
/*C*****************************************************************************
|
|
* NAME: DOBCNT1010.c
|
|
*-------------------------------------------------------------------------------
|
|
* RELEASE:
|
|
* REVISION: 1.0
|
|
*-------------------------------------------------------------------------------
|
|
* PURPOSE:
|
|
* 双枪计数器应用程序
|
|
*******************************************************************************/
|
|
|
|
#include "config.h"
|
|
volatile TXHData_type TXHData;//定义指针数据
|
|
const u8 BoxVersion[11]="TXH_V1.4.7";
|
|
|
|
cup_t STM32CPU;
|
|
void TXH_Init(void)
|
|
{
|
|
u8 i= 0;
|
|
Pluse_InPut_Init();
|
|
Timer_Init();
|
|
FM_Init();
|
|
TXHData.ROM_UpData.ROM_UpData_State.Flag.Update_Flag = 0;
|
|
TXHData.ROM_UpData.ROM_UpData_State.Flag.DisableUpdate = 0;
|
|
TXHData.ROM_UpData.ROM_UpData_State.Flag.RightRun_Flag = 3;
|
|
FMItemWrite(CF_ROM_UpData,0);
|
|
//GPSConnect_Init();
|
|
AT45DB_Init();
|
|
DS1307_Init();
|
|
Log_Init();
|
|
OLED_Init();
|
|
Surface_Init();
|
|
FindSysconfigFile();
|
|
MD_Connect_Init();
|
|
Multiplex_Port_Init();
|
|
POS_Connect_Init();
|
|
Pluse_Putout_Init();
|
|
|
|
TXHData.ROM_UpData.ROM_UpData_State.Flag.Update_Flag = 0;
|
|
TXHData.ROM_UpData.ROM_UpData_State.Flag.DisableUpdate = 0;
|
|
TXHData.ROM_UpData.ROM_UpData_State.Flag.RightRun_Flag = 3;
|
|
//TXHData.ROM_UpData.FrameTop = 0;
|
|
FMItemWrite(CF_ROM_UpData,0);
|
|
|
|
TXHData.OfflineAuthorizeNumberMax = 10000;//允许离线授权次数
|
|
TXHData.OfflineAuthorize = 1;//允许离线授权
|
|
// TXHData.PREXDATA_WaitUpNummber = 0;
|
|
// TXHData.CTIME.Year = 0x22;//年
|
|
// TXHData.CTIME.Month = 0x01;//月
|
|
// TXHData.CTIME.Day = 0x11;//日
|
|
// //TXHData.CTIME.Week = 0x02;//周
|
|
// TXHData.CTIME.Hour = 0x14;//时
|
|
// TXHData.CTIME.Min = 0x20;//分
|
|
// TXHData.CTIME.Sec = 0x00;//秒
|
|
// DS1307_Write();
|
|
//PCBEncryption();
|
|
PCBEncryption_Check();
|
|
}
|
|
void TXH_Task(void)
|
|
{
|
|
u8 Port = 0,DeviceNumber = 0;
|
|
//GPSConnectTast();
|
|
if(TXHData.CTIMEReadTimer.Flag == 1)
|
|
{
|
|
TXHData.CTIMEReadTimer.Flag = 0;
|
|
DS1307_Read();
|
|
if(TXHData.SurfaceNow <= Surface_Wait)
|
|
TXHData.DisplayOn = 1;
|
|
}
|
|
if(TXHData.ErrState.Flag.e_errPCBCheck == 0)//PCB验证通过
|
|
{
|
|
for(Port = 0;Port < TXHData.MD_Port_Num_Top;Port ++)
|
|
{
|
|
if(TXHData.MDRestartTimer[Port].Flag == 1)
|
|
{
|
|
TXHData.MDRestartTimer[Port].Flag = 0;
|
|
}
|
|
if(TXHData.MDRestartTimer[Port].ON_OFF == 0)
|
|
{
|
|
if(TXHData.MBCountTimer[Port].Flag == 1 && TXHData.MD_Port_Data[Port].PortData.POSType)
|
|
{
|
|
TXHData.MBCountTimer[Port].Flag = 0;
|
|
{
|
|
switch(TXHData.MD_Port_Data[Port].PortData.POSType)
|
|
{
|
|
case PosBlueSky:
|
|
case PosHongYang:
|
|
case PosYGao:
|
|
case PosLY:
|
|
case PosJP:
|
|
case PosYWY:
|
|
case PosRFID:
|
|
case PosPrice1_4:
|
|
case PosPLC:
|
|
{
|
|
if(TXHData.MD_Port_Info[Port].LoopGunNextFlag == 1 || (TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].pGunNow].Handshake == 0x0))
|
|
{
|
|
TXHData.MD_Port_Info[Port].pGunNow ++;
|
|
if(TXHData.MD_Port_Info[Port].pGunReturn)
|
|
{
|
|
TXHData.MD_Port_Info[Port].pGunNow = TXHData.MD_Port_Info[Port].pGunReturn;
|
|
TXHData.MD_Port_Info[Port].pGunReturn = 0;
|
|
}
|
|
if(TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].pGunNow].Handshake != TXHData.MD_Port_Info[Port].Handshake_Top)
|
|
{
|
|
TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].pGunNow].Handshake = 0x0;
|
|
}
|
|
}
|
|
|
|
if(TXHData.MD_Port_Info[Port].pGunNow >= TXHData.MD_Port_Data[Port].PortData.DeviceNumber)
|
|
TXHData.MD_Port_Info[Port].pGunNow = 0;
|
|
MD_ConnectTXTask(Port,TXHData.MD_Port_Info[Port].pGunNow,TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].pGunNow].MB_CMD_Next);
|
|
}
|
|
break;
|
|
case PosDart:
|
|
{
|
|
if(TXHData.MD_Port_Info[Port].LoopGunNextFlag == 1 || (TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].PumpNow].Handshake == 0x0))
|
|
{
|
|
TXHData.MD_Port_Info[Port].PumpNow ++;
|
|
if(TXHData.MD_Port_Info[Port].pGunReturn)
|
|
{
|
|
TXHData.MD_Port_Info[Port].PumpNow = TXHData.MD_Port_Info[Port].pGunReturn;
|
|
TXHData.MD_Port_Info[Port].pGunReturn = 0;
|
|
}
|
|
if(TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].PumpNow].Handshake != TXHData.MD_Port_Info[Port].Handshake_Top)
|
|
{
|
|
TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].PumpNow].Handshake = 0x0;
|
|
}
|
|
}
|
|
if(TXHData.MD_Port_Info[Port].PumpNow >= TXHData.MD_Port_Info[Port].FatherDeviceTop)
|
|
TXHData.MD_Port_Info[Port].PumpNow = 0;
|
|
if(TXHData.MD_Port_Info[Port].pGunCapture)
|
|
{
|
|
TXHData.MD_Port_Info[Port].pGunReturn = TXHData.MD_Port_Info[Port].PumpNow;
|
|
TXHData.MD_Port_Info[Port].PumpNow = TXHData.MD_Port_Info[Port].pGunCapture - 1;
|
|
TXHData.MD_Port_Info[Port].pGunCapture = 0;
|
|
}
|
|
MD_ConnectTXTask(Port,TXHData.MD_Port_Info[Port].PumpNow,TXHData.MD_Port_Info[Port].FatherDevice[TXHData.MD_Port_Info[Port].PumpNow].MB_CMD_Next);
|
|
}
|
|
break;
|
|
case PosSSLan:
|
|
{
|
|
if(TXHData.MD_Port_Info[Port].LoopGunNextFlag == 1 || (TXHData.MD_Port_Info[Port].FatherDevice[TXHData.MD_Port_Info[Port].PumpNow].Handshake == 0x0))
|
|
{
|
|
TXHData.MD_Port_Info[Port].PumpNow ++;
|
|
if(TXHData.MD_Port_Info[Port].pGunReturn)
|
|
{
|
|
TXHData.MD_Port_Info[Port].PumpNow = TXHData.MD_Port_Info[Port].pGunReturn;
|
|
TXHData.MD_Port_Info[Port].pGunReturn = 0;
|
|
}
|
|
if(TXHData.MD_Port_Info[Port].FatherDevice[TXHData.MD_Port_Info[Port].PumpNow].Handshake != TXHData.MD_Port_Info[Port].Handshake_Top)
|
|
{
|
|
TXHData.MD_Port_Info[Port].FatherDevice[TXHData.MD_Port_Info[Port].PumpNow].Handshake = 0x0;
|
|
}
|
|
}
|
|
if(TXHData.MD_Port_Info[Port].PumpNow >= TXHData.MD_Port_Info[Port].FatherDeviceTop)
|
|
TXHData.MD_Port_Info[Port].PumpNow = 0;
|
|
if(TXHData.MD_Port_Info[Port].pGunCapture)
|
|
{
|
|
TXHData.MD_Port_Info[Port].pGunReturn = TXHData.MD_Port_Info[Port].PumpNow;
|
|
TXHData.MD_Port_Info[Port].PumpNow = TXHData.MD_Port_Info[Port].pGunCapture - 1;
|
|
TXHData.MD_Port_Info[Port].pGunCapture = 0;
|
|
}
|
|
MD_ConnectTXTask(Port,TXHData.MD_Port_Info[Port].PumpNow,TXHData.MD_Port_Info[Port].FatherDevice[TXHData.MD_Port_Info[Port].PumpNow].MB_CMD_Next);
|
|
}
|
|
break;
|
|
case PosBlueSkyPlus:
|
|
{
|
|
if(TXHData.MD_Port_Info[Port].LoopGunNextFlag == 1 || (TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].PumpNow].Handshake == 0x0))
|
|
{
|
|
TXHData.MD_Port_Info[Port].PumpNow ++;
|
|
if(TXHData.MD_Port_Info[Port].pGunReturn)
|
|
{
|
|
TXHData.MD_Port_Info[Port].PumpNow = TXHData.MD_Port_Info[Port].pGunReturn;
|
|
TXHData.MD_Port_Info[Port].pGunReturn = 0;
|
|
}
|
|
if(TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].PumpNow].Handshake != TXHData.MD_Port_Info[Port].Handshake_Top)
|
|
{
|
|
TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].PumpNow].Handshake = 0x0;
|
|
}
|
|
}
|
|
if(TXHData.MD_Port_Info[Port].PumpNow >= TXHData.MD_Port_Info[Port].FatherDeviceTop)
|
|
TXHData.MD_Port_Info[Port].PumpNow = 0;
|
|
// if(TXHData.MD_Port_Info[Port].pGunCapture)
|
|
// {
|
|
// TXHData.MD_Port_Info[Port].pGunReturn = TXHData.MD_Port_Info[Port].PumpNow;
|
|
// TXHData.MD_Port_Info[Port].PumpNow = TXHData.MD_Port_Info[Port].GunInfo[TXHData.MD_Port_Info[Port].pGunCapture].FatherNum;
|
|
// TXHData.MD_Port_Info[Port].pGunCapture = 0;
|
|
// }
|
|
MD_ConnectTXTask(Port,TXHData.MD_Port_Info[Port].PumpNow,TXHData.MD_Port_Info[Port].FatherDevice[TXHData.MD_Port_Info[Port].PumpNow].MB_CMD_Next);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(TXHData.MD_MultiplexTimer.Flag == 1 && TXHData.MD_Multiplex_Port_Data.PortData[TXHData.MD_Multiplex_Port_Info.DevicerTypeNow].POSType)
|
|
{
|
|
TXHData.MD_MultiplexTimer.Flag = 0;
|
|
if(TXHData.MD_Multiplex_Port_Info.DevicerTypeNow < TXHData.MD_Multiplex_Port_Data.DeviceNumber - 1)
|
|
TXHData.MD_Multiplex_Port_Info.DevicerTypeNow ++;
|
|
else
|
|
TXHData.MD_Multiplex_Port_Info.DevicerTypeNow = 0;
|
|
if(TXHData.MD_Multiplex_Port_Info.MultiplexDevicerTimer[TXHData.MD_Multiplex_Port_Info.DevicerTypeNow].Flag)
|
|
{
|
|
TXHData.MD_Multiplex_Port_Info.MultiplexDevicerTimer[TXHData.MD_Multiplex_Port_Info.DevicerTypeNow].Flag = 0;
|
|
switch(TXHData.MD_Multiplex_Port_Data.PortData[TXHData.MD_Multiplex_Port_Info.DevicerTypeNow].POSType)
|
|
{
|
|
case Multiplex_Print:
|
|
{
|
|
TXHData.MD_MultiplexTimer.TimerCountMax =(115200/TXHData.MD_Multiplex_Port_Data.PortData[TXHData.MD_Multiplex_Port_Info.DevicerTypeNow].BaudRate) * 66;//根据不同波特率计算等待时间
|
|
}
|
|
break;
|
|
case Multiplex_YWY:
|
|
{
|
|
TXHData.MD_MultiplexTimer.TimerCountMax = 1000;
|
|
}
|
|
break;
|
|
case Multiplex_Price:
|
|
{
|
|
TXHData.MD_MultiplexTimer.TimerCountMax = 100;
|
|
}
|
|
break;
|
|
case Multiplex_GPS:
|
|
{
|
|
TXHData.MD_MultiplexTimer.TimerCountMax = 1000;
|
|
}
|
|
break;
|
|
}
|
|
|
|
Multiplex_PortTXTask(TXHData.MD_Multiplex_Port_Info.DevicerTypeNow,TXHData.MD_Multiplex_Port_Info.MB_CMD_Next[TXHData.MD_Multiplex_Port_Info.DevicerTypeNow]);
|
|
}
|
|
}
|
|
}
|
|
if(TXHData.POS_Info.ConnectType == POS_Connect_Typ_Station)
|
|
{
|
|
if(TXHData.POS_RS232Timer.Flag == 1)
|
|
{
|
|
TXHData.POS_RS232Timer.Flag = 0;
|
|
POS_ConnectTXTask(TXHData.POS_Info.ConnectType,TXHData.POS_Info.Link_Flag,TXHData.POS_Info.POS_CMD_Next);
|
|
}
|
|
}
|
|
else if(TXHData.HeartbeatTimer.Flag == 1)
|
|
{
|
|
TXHData.HeartbeatTimer.Flag = 0;
|
|
POS_ConnectTXTask(TXHData.POS_Info.ConnectType,TXHData.POS_Info.Link_Flag,TXHData.POS_Info.POS_CMD_Next);
|
|
}
|
|
if(TXHData.PowerDown.State == 0)//断电就不处理数据了,防止在断电期间操作存储数据
|
|
{
|
|
MD_ConnectRXTask();
|
|
Multiplex_PortRXTask();
|
|
if(TXHData.POS_Info.POS_ConnectRXTask_Flag)
|
|
{
|
|
TXHData.POS_Info.POS_ConnectRXTask_Flag = 0;
|
|
POS_ConnectRXTask();
|
|
}
|
|
}
|
|
SurfaceTast();
|
|
}
|