📄 publishcard.c
字号:
#include "PublishCard.h"int BCDtoDEC(char HeightChar,char LowChar){ char buf[4]; char *p; buf[3]='\0'; p=&buf[0]; buf[0]=(HeightChar&0x0f)+0x30; buf[1]=(LowChar>>4 & 0x0f)+0x30; buf[2]=(LowChar&0x0f)+0x30; return p;}int SwitchMAPC(int DeviceIndex){ int rel; switch(DeviceIndex) { case 0:rel=1;break; case 1:rel=0;break; case 2:rel=3;break; case 3:rel=2;break; } return rel;}int SwitchMAPCWithTrue(int DeviceIndex){ int rel; switch(DeviceIndex) { case 0:rel=1;AllDevices.CurrentUpPC=1;SET_RTS(HS4);break; case 1:rel=0;AllDevices.CurrentUpPC=0;CLR_RTS(HS4);break; case 2:rel=3;AllDevices.CurrentDownPC=3;SET_RTS(HS2);break; case 3:rel=2;AllDevices.CurrentDownPC=2;CLR_RTS(HS2);break; } return rel;}int CarderState(int Device_Handle,int DeviceIndex){ PCMachine[DeviceIndex].State=0xa2; MAPCState=DeviceIndex; Command=0x06; DataLength=0; CanverContentToBSYN(Device_Handle); WriteToComm(Device_Handle,WDataLength); return 0;}int ReadyCard(int Device_Handle,int DeviceIndex){ if(Errorcount>=3) { PrintToNetwork("12号 请及时处理\n"); return -1; } switch(DeviceIndex) { case 0:Leap(0x42,0x00,0x00);break; case 1:Leap(0x42,0x01,0x00);break; case 2:Leap(0x42,0x02,0x00);break; case 3:Leap(0x42,0x03,0x00);break; } PCMachine[DeviceIndex].State=0xa0; MAPCState=DeviceIndex; Command=0x05; DataLength=0; CanverContentToBSYN(Device_Handle); WriteToComm(Device_Handle,WDataLength); inBusy=0x55aa; return 0;}int OutCard(int Device_Handle,int DeviceIndex){ if(CardKeep==1) { ReadyCard(Device_Handle,DeviceIndex); ReadFromComm(Device_Handle,0); inBusy=0; if((DataBuffer[0] & 0x10)==0x10)return 0; else CardKeep=0; } PCMachine[DeviceIndex].State=0xa1; MAPCState=DeviceIndex; Command=0x01; DataLength=0; CanverContentToBSYN(Device_Handle); WriteToComm(Device_Handle,WDataLength); CardKeep=1;}int ExecMAPCFunc(unsigned char comm,int Device_Handle,int DeviceIndex){ byte_bit bb; int rel; bb.ch=DataBuffer[0]; if(Device_Handle==HS2)DeviceIndex+=2;#ifdef __DEBUG__ printf("in ExecMAPC Func DeviceIndex is:%i--%i",DeviceIndex,MAPCState);#endif if((bb.bits.b4==0 && PCMachine[DeviceIndex].State==0xa1) || DataBuffer[0]==0x8a) { PCMachine[DeviceIndex].State=0x00; CardKeep=0; inBusy=0; PrintToNetwork("卡已经被取走\n"); VoiceControl(0x05); switch(DeviceIndex) { case 0:Leap(0x42,0x00,0x00);break; case 1:Leap(0x42,0x01,0x00);break; case 2:Leap(0x42,0x02,0x00);break; case 3:Leap(0x42,0x03,0x00);break; } ReadyCard(Device_Handle,DeviceIndex); AllDevices.Publish='Y'; Errorcount=0; return 0; } else if(bb.bits.b7==0) { PCMachine[DeviceIndex].State=0x00; Errorcount+=1; PrintToNetwork("导轨中无卡夹,请安装\n"); ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex)); inBusy=0; return 0; } else if(bb.bits.b0==1 && PCMachine[DeviceIndex].State==0xa0) { PrintToNetwork("卡片已准备好\n"); PCMachine[DeviceIndex].State=0x00; CardKeep=0; inBusy=0; Errorcount=0; if(MLoop==0x5a) OutCard(Device_Handle,DeviceIndex); return 0; } else if(bb.bits.b0==0 && PCMachine[DeviceIndex].State==0xa0) { if(CardKeep==1) { CardKeep=0; VoiceControl(0x05); switch(DeviceIndex) { case 0:Leap(0x42,0x00,0x00);break; case 1:Leap(0x42,0x01,0x00);break; case 2:Leap(0x42,0x02,0x00);break; case 3:Leap(0x42,0x03,0x00);break; } ReadyCard(Device_Handle,DeviceIndex); inBusy=0; return 0; } PCMachine[DeviceIndex].State=0x00; Errorcount+=1; PrintToNetwork("卡片准备失败,可能已经卡卡,请及时处理\n"); ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex)); inBusy=0; return 0; }/* else if(bb.bits.b0==1 && inBusy==0x55aa) { OutCard(Device_Handle,DeviceIndex); inBusy=0; }*/ else if(bb.bits.b5==0 && bb.bits.b1==0 && bb.bits.b6==0)// && bb.bits.b0==0)//modifyed { PCMachine[DeviceIndex].State=0x00; Errorcount+=1;// VoiceControl(0x03); PrintToNetwork("卡夹中无卡,请更换\n"); ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex)); inBusy=0; return 0; }/* else if(bb.bits.b5==0 && bb.bits.b1==1 && bb.bits.b6==0 && bb.bits.b0==0) { PCMachine[DeviceIndex].State=0x00; Errorcount+=1; PrintToNetwork("卡夹中有卡,但准备卡片失败\n"); ReadyCard(HS2,SwitchMAPCWithTrue(DeviceIndex)); inBusy=0; return 0; } */ else if(bb.bits.b5==1)// && bb.bits.b0==0) { PCMachine[DeviceIndex].State=0x00; Errorcount+=1; PrintToNetwork("卡夹不在位,请更换\n"); ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex)); inBusy=0; return 0; }}int InitializeMAPC(){ int m1,m2; byte_bit bb; Command=0x06; DataLength=0; CanverContentToBSYN(HS4); WriteToComm(HS4,WDataLength); ShortBlockDetect(HS4); ReadFromComm(HS4,0); ShortBlockDetect(HS4); ReadFromComm(HS4,0); m1=-1; PCMachine[0].CardNumber=BCDtoDEC(DataBuffer[1],DataBuffer[2]); bb.ch=DataBuffer[0]; if(bb.bits.b5==1) //no card packeg { AllDevices.CurrentUpPC=UPLEFT; PCMachine[0].State=0x02; } else if(bb.bits.b1==0) //no card { AllDevices.CurrentUpPC=UPLEFT; } else m1=0; PCMachine[0].State=0x00; PCMachine[0].State=0x00; PCMachine[0].MaxCard=450; PCMachine[0].Params=0; PCMachine[0].ID=0;#ifdef __DEBUG__ printf("MAPC1 Data is:"); for(m2=0;m2<DataLength;m2++) printf("%x ",DataBuffer[m2]); printf("\nMAPC1 Card Number is:%x ID is:%x MAX Card is:%x\n",PCMachine[0].CardNumber,PCMachine[0].ID,PCMachine[0].MaxCard);#endif bzero(&DataBuffer,DataLength); Command=0x06; DataLength=0; SET_RTS(HS4); CanverContentToBSYN(HS4); WriteToComm(HS4,WDataLength); ShortBlockDetect(HS4); ReadFromComm(HS4,0); ShortBlockDetect(HS4); ReadFromComm(HS4,0); CLR_RTS(HS4); PCMachine[1].CardNumber=BCDtoDEC(DataBuffer[1],DataBuffer[2]); bb.ch=DataBuffer[0]; if(m1==-1) { if(bb.bits.b5==1) //no card packeg { // AllDevices.CurrentUpPC=1; PrintToNetwork("1号和2号卡机没有卡夹,请及时处理\n"); PCMachine[1].State=0x02; } else if(bb.bits.b1==0) //no card { // AllDevices.CurrentUpPC=1; PrintToNetwork("1号和2号卡机无卡,请及时处理\n"); PCMachine[1].State=0x01; } else AllDevices.CurrentUpPC=UPRIGHT; } PCMachine[1].State=0x00; PCMachine[1].MaxCard=450; PCMachine[1].Params=0; PCMachine[1].ID=0;#ifdef __DEBUG__ printf("MAPC2 Data is:"); for(m2=0;m2<DataLength;m2++) printf("%x ",DataBuffer[m2]); printf("\nMAPC2 Card Number is:%x ID is:%i MAX Card is:%i\n",PCMachine[1].CardNumber,PCMachine[1].ID,PCMachine[1].MaxCard);#endif Command=0x06; DataLength=0; CanverContentToBSYN(HS4); m2=-1; WriteToComm(HS2,WDataLength); ShortBlockDetect(HS2); ReadFromComm(HS2,0); ShortBlockDetect(HS2); ReadFromComm(HS2,0); PCMachine[2].CardNumber=BCDtoDEC(DataBuffer[1],DataBuffer[2]); bb.ch=DataBuffer[0]; if(bb.bits.b5==1) { AllDevices.CurrentDownPC=3; PCMachine[2].State=0x02; } else if(bb.bits.b1==0) { AllDevices.CurrentDownPC=3; PCMachine[2].State=0x01; } else m2=2; PCMachine[2].State=0x00; PCMachine[2].State=0x00; PCMachine[2].MaxCard=450; PCMachine[2].Params=0; PCMachine[2].ID=0;#ifdef __DEBUG__ printf("MAPC3 Data is:"); for(m2=0;m2<DataLength;m2++) printf("%x ",DataBuffer[m2]); printf("\nMAPC3 Card Number is:%x ID is:%x MAX Card is:%x\n",PCMachine[2].CardNumber,PCMachine[2].ID,PCMachine[2].MaxCard);#endif Command=0x06; DataLength=0; SET_RTS(HS2); CanverContentToBSYN(HS4); WriteToComm(HS2,WDataLength); ShortBlockDetect(HS2); ReadFromComm(HS2,0); ShortBlockDetect(HS2); ReadFromComm(HS2,0); CLR_RTS(HS2); PCMachine[3].CardNumber=BCDtoDEC(DataBuffer[1],DataBuffer[2]); bb.ch=DataBuffer[0]; if(m2==-1) { if(bb.bits.b5==1) { PrintToNetwork("3号和4号卡机没有卡夹,请及时处理\n"); PCMachine[3].State=0x02; } else if(bb.bits.b1==0) { PrintToNetwork("3号和4号卡机无卡,请及时处理\n"); PCMachine[3].State=0x01; } else AllDevices.CurrentDownPC=3; } PCMachine[3].State=0x00; PCMachine[3].State=0x00; PCMachine[3].MaxCard=450; PCMachine[3].Params=0; PCMachine[3].ID=0;#ifdef __DEBUG__ printf("MAPC4 Data is:"); for(m2=0;m2<DataLength;m2++) printf("%x ",DataBuffer[m2]); printf("\nMAPC4 Card Number is:%x ID is:%x MAX Card is:%x\n",PCMachine[3].CardNumber,PCMachine[3].ID,PCMachine[3].MaxCard);#endif Errorcount=0; CardKeep=0; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -