📄 scanner.c
字号:
if(sc == 0x0d0a)
{
serialPortOutput1byte(sc>>8);
serialPortOutput1byte(sc&0xff);
}
else serialPortOutput1byte(sc&0xff);//send out sc
serialPortOutput1byte(Day);
serialPortOutput1byte(Hour);
serialPortOutput1byte(Minute);
serialPortOutput1byte(Second); //send out time
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
serialPortOutput1byte(ec&0xff);
}
else serialPortOutput1byte(ec&0xff);//sendout ec
}
}
else
{;} //error
}
static void db(void)
{
uchar i,j,m,k;
uchar flags = 0;
uchar num_card;
myInvOut();
num_card = labeldata[0];
if(num_card != 0)bReadTag = 1;
if( num_card == 1)
{
for(i=0;i<8;i++)currUid[i] = labeldata[3+i]; //copy uid to current UID
if(compareUid()==0 ) // same uid
{
if(trigger == 0) // single read
{
viccdata[0] = 15; //len
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x20; // address_flag ,no security
if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
viccdata[1] = flags; //flags
viccdata[2] = 0x23; //cmd
for(j=0;j<8;j++) // copy uid
{
viccdata[3+j] = labeldata[10-j];
}
viccdata[11] = db_adr; //start addr
viccdata[12] = (db_n+1); // length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
m = sendISOCmd(ISOMode);
CS_RAM_1;
if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
{
for(k=0;k<(db_n+1)*5;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
else //不含有块状态信息
{
for(k=0;k<(db_n+1)*4;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
serialPortOutput1byte(ec&0xff);
}
else serialPortOutput1byte(ec&0xff);//sendout ec
}
}
else //different uid
{
viccdata[0] = 15; //len
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x20; // address_flag ,no security
if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
viccdata[1] = flags; //flags
viccdata[2] = 0x23; //cmd
for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j]; // copy uid
viccdata[11] = db_adr; //start addr
viccdata[12] = (db_n+1); // length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
m = sendISOCmd(ISOMode);
CS_RAM_1;
if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
{
for(k=0;k<(db_n+1)*5;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
else //不含有块状态信息
{
for(k=0;k<(db_n+1)*4;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
serialPortOutput1byte(ec&0xff);
}
else serialPortOutput1byte(ec&0xff);//sendout ec
}
for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid
}
else if( num_card >= 2) //exist card
{
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x20; // address_flag ,no security
if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
for(i=0;i<num_card;i++) // read multiple blocks
{
viccdata[0] = 15; //len
viccdata[1] = flags; //flags
viccdata[2] = 0x23; //cmd
for(j=0;j<8;j++) // copy uid
{
viccdata[3+j] = labeldata[i*10+10-j];
}
viccdata[11] = db_adr; //start addr
viccdata[12] = (db_n+1);// length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
m = sendISOCmd(ISOMode);
CS_RAM_1;
if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
{
for(k=0;k<(db_n+1)*5;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
else //不含有块状态信息
{
for(k=0;k<(db_n+1)*4;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
serialPortOutput1byte(ec&0xff);
}
else serialPortOutput1byte(ec&0xff);//sendout ec
}
}
else
{;} //error
}
static void dbTime(void)
{
uchar i,j,m,k;
uchar flags = 0;
uchar num_card;
myInvOut();
num_card = labeldata[0];
if(num_card != 0)bReadTag = 1;
if( num_card == 1)
{
for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID
if(compareUid()==0 ) // same uid
{
if(trigger == 0)// single read
{
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x20; // address_flag ,no security
if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
viccdata[0] = 15; //len
viccdata[1] = flags; //flags
viccdata[2] = 0x23; //cmd
for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j]; // copy uid
viccdata[11] = db_adr; //start addr
viccdata[12] = (db_n+1); // length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
m = sendISOCmd(ISOMode);
CS_RAM_1;
getBufferTime();
if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
{
for(k=0;k<(db_n+1)*5;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
else //不含有块状态信息
{
for(k=0;k<(db_n+1)*4;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
if(sc == 0x0d0a)
{
serialPortOutput1byte(sc>>8);
serialPortOutput1byte(sc&0xff);
}
else serialPortOutput1byte(sc&0xff);//send out sc
serialPortOutput1byte(Day);
serialPortOutput1byte(Hour);
serialPortOutput1byte(Minute);
serialPortOutput1byte(Second); //send out time
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
serialPortOutput1byte(ec&0xff);
}
else serialPortOutput1byte(ec&0xff);//sendout ec
}
}
else //different uid
{
viccdata[0] = 15; //len
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x20; // address_flag ,no security
if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
viccdata[1] = flags; //flags
viccdata[2] = 0x23; //cmd
for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j]; // copy uid
viccdata[11] = db_adr; //start addr
viccdata[12] = (db_n+1); // length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
m = sendISOCmd(ISOMode);
CS_RAM_1;
getBufferTime();
if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
{
for(k=0;k<(db_n+1)*5;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
else //不含有块状态信息
{
for(k=0;k<(db_n+1)*4;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
if(sc == 0x0d0a)
{
serialPortOutput1byte(sc>>8);
serialPortOutput1byte(sc&0xff);
}
else serialPortOutput1byte(sc&0xff);//send out sc
serialPortOutput1byte(Day);
serialPortOutput1byte(Hour);
serialPortOutput1byte(Minute);
serialPortOutput1byte(Second); //send out time
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
serialPortOutput1byte(ec&0xff);
}
else serialPortOutput1byte(ec&0xff);//sendout ec
}
for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid
}
else if( num_card >= 2) //exist card
{
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x20; // address_flag ,no security
if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
for(i=0;i<num_card;i++) // read multiple blocks
{
viccdata[0] = 15; //len
viccdata[1] = flags; //flags
viccdata[2] = 0x23; //cmd
for(j=0;j<8;j++) // copy uid
{
viccdata[3+j] = labeldata[i*10+10-j];
}
viccdata[11] = db_adr; //start addr
viccdata[12] = (db_n+1); // length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
m = sendISOCmd(ISOMode);
CS_RAM_1;
getBufferTime();
if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
{
for(k=0;k<(db_n+1)*5;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
else //不含有块状态信息
{
for(k=0;k<(db_n+1)*4;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
if(sc == 0x0d0a)
{
serialPortOutput1byte(sc>>8);
serialPortOutput1byte(sc&0xff);
}
else serialPortOutput1byte(sc&0xff);//send out sc
serialPortOutput1byte(Day);
serialPortOutput1byte(Hour);
serialPortOutput1byte(Minute);
serialPortOutput1byte(Second); //send out time
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
serialPortOutput1byte(ec&0xff);
}
else serialPortOutput1byte(ec&0xff);//sendout ec
}
}
else
{;} //error
}
static void dbComPrefix(void)
{
uchar i,j,m,k;
uchar flags = 0;
uchar num_card;
myInvOut();
num_card = labeldata[0];
if(num_card != 0)bReadTag = 1;
if( num_card == 1)
{
for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID
if(compareUid()==0 ) // same uid
{
if(trigger == 0)// single read
{
viccdata[0] = 15; //len
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x20; // address_flag ,no security
if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
viccdata[1] = flags; //flags
viccdata[2] = 0x23; //cmd
for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j]; // copy uid
viccdata[11] = db_adr; //start addr
viccdata[12] = (db_n+1);// length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
m = sendISOCmd(ISOMode);
CS_RAM_1;
serialPortOutput1byte(deviceAddr); //send out addr
if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
{
for(k=0;k<(db_n+1)*5;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
else //不含有块状态信息
{
for(k=0;k<(db_n+1)*4;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
serialPortOutput1byte(ec&0xff);
}
else serialPortOutput1byte(ec&0xff);//sendout ec
}
}
else //different uid
{
viccdata[0] = 15; //len
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x20; // address_flag ,no security
if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
viccdata[1] = flags; //flags
viccdata[2] = 0x23; //cmd
for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j]; // copy uid
viccdata[11] = db_adr; //start addr
viccdata[12] = (db_n+1);// length
wr_crc_send();
ISOMode = ISOModeSys&0xe7;//read ,all
m = sendISOCmd(ISOMode);
CS_RAM_1;
serialPortOutput1byte(deviceAddr); //sen out addr
if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
{
for(k=0;k<(db_n+1)*5;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
else //不含有块状态信息
{
for(k=0;k<(db_n+1)*4;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
serialPortOutput1byte(ec&0xff);
}
else serialPortOutput1byte(ec&0xff);//sendout ec
}
for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid
}
else if( num_card >= 2) //exist card
{
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x20; // address_flag ,no security
if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
for(i=0;i<num_card;i++) // read multiple blocks
{
viccdata[0] = 15; //len
viccdata[1] = flags; //flags
viccdata[2] = 0x23; //cmd
for(j=0;j<8;j++) // copy uid
{
viccdata[3+j] = labeldata[i*10+10-j];
}
viccdata[11] = db_adr; //start addr
viccdata[12] = (db_n+1);// length
wr_crc_send();
ISOMode = ISOModeSys&0xe7;//read ,all
m = sendISOCmd(ISOMode);
CS_RAM_1;
serialPortOutput1byte(deviceAddr); //sen out addr
if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
{
for(k=0;k<(db_n+1)*5;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
else //不含有块状态信息
{
for(k=0;k<(db_n+1)*4;k++) //send out block data
serialPortOutput1byte(viccdata[2+k]);
}
if(ec == 0x0d0a)
{
serialPortOutput1byte(ec>>8);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -