⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 publishcard.~c

📁 linux serial example
💻 ~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); ShortBlockDetect(Device_Handle); if(ReadFromComm(Device_Handle,0)==-2) {  VoiceControl(0x0b);  ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex));  inBusy=0;  return -2; } return 0;}int ReadyCard(int Device_Handle,int DeviceIndex){ PCMachine[DeviceIndex].State=0xa0; MAPCState=DeviceIndex; Command=0x05; DataLength=0; CanverContentToBSYN(Device_Handle); WriteToComm(Device_Handle,WDataLength); ShortBlockDetect(Device_Handle); if(ReadFromComm(Device_Handle,0)==-2)return -2;/* ShortBlockDetect(Device_Handle); ReadFromComm(Device_Handle,0); return NeedSwitch(DataBuffer[0],Device_Handle,DeviceIndex);*/ inBusy=0x55aa; return 0;}int OutCard(int Device_Handle,int DeviceIndex){ if(CardKeep==1) {  if(ReadyCard(Device_Handle,DeviceIndex)==-2)   ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex));  ShortBlockDetect(Device_Handle);  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); ReadFromComm(Device_Handle,0); CardKeep=1;}int NeedSwitch(unsigned char State,int Device_Handle,int DeviceIndex){ byte_bit bb; int st; bb.ch=State; st=DeviceIndex; if(bb.bits.b5==1 && bb.bits.b0==0)//卡夹不在位  return -2; else if(bb.bits.b5==0 && bb.bits.b1==0 && bb.bits.b6==0 && bb.bits.b0==0)//卡已经发完  return -2; else if(bb.bits.b5==0 && bb.bits.b1==1 && bb.bits.b6==0 && bb.bits.b0==0)//卡机故障  return -2; else if(bb.bits.b0==0 && PCMachine[DeviceIndex].State==0xa0)  return -1; else if(bb.bits.b0==1 && PCMachine[DeviceIndex].State==0xa0)  return 0; else if(bb.bits.b4==0 && PCMachine[DeviceIndex].State==0xa1)  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;}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) {  PCMachine[DeviceIndex].State=0x00;  CardKeep=0;  inBusy=0;//  printf("card out ok123");  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;  }  if(ReadyCard(Device_Handle,DeviceIndex)==-2)   ReadyCard(HS2,SwitchMAPCWithTrue(DeviceIndex));  AllDevices.Publish='Y';  return 0; } else if(bb.bits.b0==1 && PCMachine[DeviceIndex].State==0xa0) {//  printf("Card Ready OK!!!");  PrintToNetwork("卡片已准备好\n");  PCMachine[DeviceIndex].State=0x00;  CardKeep=0;  inBusy=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;   }   if(ReadyCard(Device_Handle,DeviceIndex)==-2)    ReadyCard(HS2,SwitchMAPCWithTrue(DeviceIndex));   inBusy=0;   return 0;  }  PCMachine[DeviceIndex].State=0x00;//  VoiceControl(0x04);  PrintToNetwork("卡片准备失败,可能已经卡卡,请及时处理\n");  if(ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex))==-2)   ReadyCard(HS2,SwitchMAPCWithTrue(DeviceIndex));  inBusy=0;  return 0; } else if(bb.bits.b5==0 && bb.bits.b1==0 && bb.bits.b6==0 && bb.bits.b0==0)//modifyed {  PCMachine[DeviceIndex].State=0x00;//  VoiceControl(0x03);  PrintToNetwork("卡夹中无卡,请更换\n");  if(ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex))==-2)   ReadyCard(HS2,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;//  VoiceControl(0x03);  PrintToNetwork("卡夹中有卡,但准备卡片失败\n");  if(ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex))==-2)   ReadyCard(HS2,SwitchMAPCWithTrue(DeviceIndex));  inBusy=0;  return 0; } else if(bb.bits.b5==1 && bb.bits.b0==0) {  PCMachine[DeviceIndex].State=0x00;//  VoiceControl(0x03);  PrintToNetwork("卡夹不在位,请更换\n");  if(ReadyCard(Device_Handle,SwitchMAPCWithTrue(DeviceIndex))==-2)   ReadyCard(HS2,SwitchMAPCWithTrue(DeviceIndex));  inBusy=0;  return 0; }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -