📄 kbv10work.c
字号:
{
READER_CLK=1;
Delay_10us();
READER_CLK=0;
temp_trk=~READER_DATA; //fanxiang collect trk11's data;
if(temp_trk==0x01)
{
SS_num=ddd;
break ; //break for
}
} // end for(ddd=0;ddd<553;ddd++)
mag_trk1[0]=temp_trk;
for(i=1;i<7;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk1[0]+=temp_trk<<i; //b6--->b0;
}
READER_CLK=1;
if(mag_trk1[0]==0x45 ) //0x45
{
mag_trk1[1]=0;
for(j=1;j<79;j++)
{
for(i=0;i<7;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk1[j]+=temp_trk<<i; //b6-->b0; fanxiang==zhengxiang save trk1 data
}
if(mag_trk1[j]==0x1f) //0x1f
{ES_num=j;break;} //break for();
} //end for(j=1;j<79;j++)
if(((553-SS_num)%7)==0) //LRC don't lose bit 0
{
for(i=0;i<7;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk1[ES_num+1]+=temp_trk<<i; //LRC //faxiang trk11's data is over
}
}
else
{
for(i=0;i<(553-SS_num)%7;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk1[ES_num+1]+=temp_trk<<i; //LRC //faxiang trk11's data is over
}
}
READER_CLK=1;
trk_xor=(mag_trk1[0]&0x3f);
for(i=1;i<(ES_num+1);i++)
{
trk_xor^=(mag_trk1[i]&0x3f);
}
if(trk_xor!=(mag_trk1[ES_num+1]&0x3f))
{
error=1;
}
}
////////////the trk11 is over and begin the next trk1 ///////
for(ddd=0;ddd<608;ddd++)
{
READER_CLK=1; // new trk1 is over
READER_CLK=0;
}
READER_CLK=1;
}
else //Dir is zhengxiang
{
for(ddd=0;ddd<608;ddd++)
{
READER_CLK=1; // trk11 is over
READER_CLK=0;
}
READER_CLK=1;
//////////the trk11 is over and begin the next trk1
for(j=0;j<79;j++)
{
for(i=0;i<7;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA;
mag_trk1[j]+=temp_trk<<(i); //if zhengxiang ,collect new trk1 's data
}
if(!mag_trk1[j])
{
ES_num=j; //don't break, or the clk !=79*7
}
}
READER_CLK=1;
trk_xor=(mag_trk1[0]&0x3f);
for(i=1;i<(ES_num-1);i++)
{
trk_xor^=(mag_trk1[i]&0x3f);
}
if(trk_xor!=(mag_trk1[ES_num-1]&0x3f))
{
error=1;
}
for(j=0;j<55;j++)
{
READER_CLK=1;
READER_CLK=0; /// new trk1 is over
}
READER_CLK=1;
}
}
else //trk1 is blank
{
for(ddd=0;ddd<608;ddd++)
{
READER_CLK=1; // trk11 is over
READER_CLK=0;
}
READER_CLK=1;
for(ddd=0;ddd<608;ddd++)
{
READER_CLK=1; // new trk1 is over
READER_CLK=0;
}
READER_CLK=1;
}
/////////////////////////////new trk2 begin/////////////////////////
if(Dir_trk2)
{
for(j=0;j<40;j++)
{
for(i=0;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA; //zhengxiang collect trk2's data
mag_trk2[j]+=temp_trk<<i; //b4--->b0 //// zhengxiang save the trk2 data ==b4--->b0;
}
if(!mag_trk2[j])
{
ES_num=j;
}
}
trk_xor=(mag_trk2[0]&0x0f);
for(i=1;i<(ES_num-1);i++)
{
trk_xor^=(mag_trk2[i]&0x0f);
}
if(trk_xor!=(mag_trk2[ES_num-1]&0x0f))
{
error=1;
}
READER_CLK=1;
for(ddd=0;ddd<408;ddd++)
{
READER_CLK=1;
READER_CLK=0;
}
READER_CLK=1; //zhengxiang trk2 is over
} //end if(Dir_trk2==1)
else //(Dir_trk2==0)
{
for(ddd=0;ddd<608;ddd++)
{
READER_CLK=1;
READER_CLK=0; //fanxiang trk2 is over
}
READER_CLK=1;
} //end else (Dir_trk2==0)
/////////////////////////////new trk3 begin/////////////////////////
if(Dir_trk3)
{
for(j=0;j<107;j++)
{
for(i=0;i<5;i++)
{
READER_CLK=1;
Delay_25us();
READER_CLK=0;
temp_trk=~READER_DATA; //zhengxiang collect trk3's data
mag_trk3[j]+=temp_trk<<i; //b4--->b0 //*************// zhengxiang save the trk3 data ==b4--->b0;
}
if(!mag_trk3[j])
{
ES_num=j; //dont break now
}
}
READER_CLK=1;
trk_xor=(mag_trk3[0]&0x0f);
for(i=1;i<(ES_num-1);i++)
{
trk_xor^=(mag_trk3[i]&0x0f);
}
if(trk_xor!=(mag_trk3[ES_num-1]&0x0f))
{
error=1;
}
for(i=0;i<73;i++)
{
READER_CLK=1;
READER_CLK=0; // zhengxiang trk3 is over
}
READER_CLK=1;
} //end if(Dir_trk3==1)
else //Dir_trk3==0
{
for(ddd=0;ddd<608;ddd++)
{
READER_CLK=1;
READER_CLK=0; //fanxiang trk3 is over
}
READER_CLK=1;
} // end else (Dir_trk3==0)
///////////////////TRK1 TRK2 TRK3 TRK33 TRK22 TRK11 TRK1 is over/////////////////////
///////////////////Send TRK1 TRK2 TRK3 ////////////////////////
for(ddd=0;ddd<608*17;ddd++)
{
READER_CLK=1;
READER_CLK=0;
}
READER_CLK=1;
if((!error)|| (error&&CheckCard_Flag)) // error=0,send all, error=1&&check , send error msg
{
ddd=0;
while(XBYTE[0x7000+13+ddd]!=0xff)
{
SendMakeToHostCount(XBYTE[0x7000+13+ddd]);
ddd++;
}
switch(XBYTE[CONFIG_BASE+0X01])
{
case 0x00: SendTrkFlag=0;break;
case 0x01: SendTrkFlag=1;break;
case 0x02: SendTrkFlag=2;break;
case 0x03: SendTrkFlag=3;break;
case 0x04: SendTrkFlag=4;break;
case 0x05: SendTrkFlag=5;break;
case 0xff: SendTrkFlag=0;break; //default is 0
default: break;
}
for(ii=0;ii<3;ii++)
{
if((((SendTrkFlag==0)||(SendTrkFlag==1))&&(ii==0))||(((SendTrkFlag==2)||(SendTrkFlag==4))&&(ii==1))||(((SendTrkFlag==3)||(SendTrkFlag==5))&&(ii==2)))
{
if(trk1_send)
{
if(XBYTE[CONFIG_BASE+0x04])
{
if(mag_trk1[0]==0x45) //0x45
{
if(XBYTE[CONFIG_BASE+0x04]&0x0c) //ss enable
{
if ((XBYTE[CONFIG_BASE+0x05]==0x25)||(XBYTE[CONFIG_BASE+0x05]==0xff)) // send %
{
SendMakeToHostCount(0x12);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0x2e); // scancode 5
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(3);
SendMakeToHostCount(0x2e);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(3);
SendMakeToHostCount(0X12);
Delay_ms(TRK1DELAY_MS);
}
else if(XBYTE[CONFIG_BASE+0x05]==0x00)
{
}
else
{
for(i=0;i<48;i++)
{
if(XBYTE[CONFIG_BASE+0X05]==tableChar[i])
{
SendMakeToHostCount(0x12);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(tableScan[i]);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(2);
SendMakeToHostCount(tableScan[i]);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(2);
SendMakeToHostCount(0x12);
break ; //break for
}
else if (XBYTE[CONFIG_BASE+0X05]==tableChar1[i])
{
SendMakeToHostCount(tableScan[i]);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(2);
SendMakeToHostCount(tableScan[i]);
break ; //break for
}
}
}
}
for(j=1;j<79;j++)
{
trk_bit=(mag_trk1[j]&0X3F)+0x20; //ascii
if(trk_bit==0x3f) //ES
{
if((XBYTE[CONFIG_BASE+0x04]&0x0c)) // send tail format-code
{
if ((XBYTE[CONFIG_BASE+0x06]==0x3f)||(XBYTE[CONFIG_BASE+0x06]==0xff)) // ascii ?
{
SendMakeToHostCount(0x12);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0x4a); // scancode ?
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(3);
SendMakeToHostCount(0x4a);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(3);
SendMakeToHostCount(0X12);
Delay_ms(TRK1DELAY_MS);
}
else if(XBYTE[CONFIG_BASE+0x06]==0x00)
{
}
else
{
for(i=0;i<48;i++)
{
if(XBYTE[CONFIG_BASE+0X06]==tableChar[i])
{
SendMakeToHostCount(0x12);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(tableScan[i]);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(2);
SendMakeToHostCount(tableScan[i]);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(2);
SendMakeToHostCount(0x12);
break ; //break for i
}
else if (XBYTE[CONFIG_BASE+0X06]==tableChar1[i])
{
SendMakeToHostCount(tableScan[i]);
Delay_ms(TRK1DELAY_MS);
SendMakeToHostCount(0xf0);
Delay_ms(2);
SendMakeToHostCount(tableScan[i]);
break ; //break i
}
}
}
} //endif
if(!error)
break; // don't send format_code and break for j ()
}
else //trk_bit!=0x3f
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -