📄 iso15693.cpp
字号:
Sendval[2*i-1]=Sendval[2*i-1]+0x30;
}
if(Sendval[2*i]>9){
Sendval[2*i]=Sendval[2*i]+0x37;
}else {
Sendval[2*i]=Sendval[2*i]+0x30;
}
if(Sendval[2*i+1]>9){
Sendval[2*i+1]=Sendval[2*i+1]+0x37;
}else {
Sendval[2*i+1]=Sendval[2*i+1]+0x30;
}
if(Sendval[2*i+2]>9){
Sendval[2*i+2]=Sendval[2*i+2]+0x37;
}else {
Sendval[2*i+2]=Sendval[2*i+2]+0x30;
}
ret=WriteCom(Sendval,45);
nBytestoRead=0;
ret=ReadCom(retval,nBytestoRead,500);
return 1;
}
int _stdcall LockBlock(BYTE Sendval[],BYTE retval[],int flag,int nBlock,BYTE UID[],DWORD &nBytestoRead)
{
//:02091400230386363301004005E00C9A
//3A30323039313430303233303338363336333330313030343030354530304339410A
char Sendval16[100];
//BYTE Sendval[][200];
char CRCval[10];
int ret;
int i;
int CRC16;
m_count++;
Sendval[0]=0x3A;
Sendval16[1]=m_count&0xff;
Sendval16[2]=0x09;
Sendval16[3]=0x14;
Sendval16[4]=0x00;
Sendval16[5]=flag;
Sendval16[6]=nBlock;
for(i=0;i<8;i++)
Sendval16[7+i]=UID[i];
for(i=1;i<16;i++)
{
if((0x0F&(Sendval16[i]>>4))>9)
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
else
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;
if((0x0F&(Sendval16[i]))>9)
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
else
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
}
CRC16=RFcrc_16(1,Sendval16,15,0xFFFF);
CRCval[5]=CRC16&0xff;
CRCval[6]=(CRC16>>8)&0xff;
Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
Sendval[2*i+2]=(CRCval[6]&0x0f);
Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
Sendval[2*i]=(CRCval[5]&0x0f);
Sendval[2*i+3]=0x0A;
Sendval[2*i+4]=0x0D;
if(Sendval[2*i-1]>9){
Sendval[2*i-1]=Sendval[2*i-1]+0x37;
}else {
Sendval[2*i-1]=Sendval[2*i-1]+0x30;
}
if(Sendval[2*i]>9){
Sendval[2*i]=Sendval[2*i]+0x37;
}else {
Sendval[2*i]=Sendval[2*i]+0x30;
}
if(Sendval[2*i+1]>9){
Sendval[2*i+1]=Sendval[2*i+1]+0x37;
}else {
Sendval[2*i+1]=Sendval[2*i+1]+0x30;
}
if(Sendval[2*i+2]>9){
Sendval[2*i+2]=Sendval[2*i+2]+0x37;
}else {
Sendval[2*i+2]=Sendval[2*i+2]+0x30;
}
ret=WriteCom(Sendval,2*i+7);
nBytestoRead=0;
ret=ReadCom(retval,nBytestoRead,500);
return 1;
}
int _stdcall ReadMultiBlock(BYTE Sendval[],char retval[],BYTE UID[],int nStartBlock,int nLength,int flag,DWORD &nBytestoRead)
{
//:020A18000423010286363301004005E09A15
//3A3032304131383030303432333031303238363336333330313030343030354530394131350A
char Sendval16[100];
//BYTE Sendval[][200];
char CRCval[10];
int ret;
int i;
int CRC16;
m_count++;
Sendval[0]=0x3A;
Sendval16[1]=m_count&0xff;
Sendval16[2]=0x0A;
Sendval16[3]=0x18;
Sendval16[4]=0x00;
Sendval16[5]=0x04;
Sendval16[6]=flag;
Sendval16[7]=nStartBlock;
Sendval16[8]=nLength;
for(i=0;i<8;i++)
Sendval16[9+i]=UID[i];
for(i=1;i<18;i++)
{
if((0x0F&(Sendval16[i]>>4))>9)
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
else
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;
if((0x0F&(Sendval16[i]))>9)
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
else
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
}
CRC16=RFcrc_16(1,Sendval16,17,0xFFFF);
CRCval[5]=CRC16&0xff;
CRCval[6]=(CRC16>>8)&0xff;
Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
Sendval[2*i+2]=(CRCval[6]&0x0f);
Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
Sendval[2*i]=(CRCval[5]&0x0f);
Sendval[2*i+3]=0x0A;
Sendval[2*i+4]=0x0D;
if(Sendval[2*i-1]>9){
Sendval[2*i-1]=Sendval[2*i-1]+0x37;
}else {
Sendval[2*i-1]=Sendval[2*i-1]+0x30;
}
if(Sendval[2*i]>9){
Sendval[2*i]=Sendval[2*i]+0x37;
}else {
Sendval[2*i]=Sendval[2*i]+0x30;
}
if(Sendval[2*i+1]>9){
Sendval[2*i+1]=Sendval[2*i+1]+0x37;
}else {
Sendval[2*i+1]=Sendval[2*i+1]+0x30;
}
if(Sendval[2*i+2]>9){
Sendval[2*i+2]=Sendval[2*i+2]+0x37;
}else {
Sendval[2*i+2]=Sendval[2*i+2]+0x30;
}
ret=WriteCom(Sendval,34);
nBytestoRead=0;
ret=ReadCom(retval,nBytestoRead,500);
return 1;
}
int _stdcall WriteMultiBlock(BYTE Sendval[],BYTE retval[],BYTE UID[],BYTE Bval[],int nStartBlock,int nLength,int flag,DWORD &nBytestoRead)
{
//:010B2000042301010102030486363301004005E07484
// 3A303130423230303030343233303130313031303230333034383633363333303130
char Sendval16[100];
//BYTE Sendval[][200];
char CRCval[10];
int ret;
int i;
int CRC16;
int temp;
m_count++;
Sendval[0]=0x3A;
Sendval16[1]=m_count&0xff;
Sendval16[2]=0x0B;
Sendval16[3]=0x18+0x08*nLength;
Sendval16[4]=0x00;
Sendval16[5]=0x04;
Sendval16[6]=flag;
Sendval16[7]=nStartBlock;
Sendval16[8]=nLength;
for(i=0;i<nLength;i++){
Sendval16[9+i*4]=Bval[i*4];
Sendval16[9+i*4+1]=Bval[i*4+1];
Sendval16[9+i*4+2]=Bval[i*4+2];
Sendval16[9+i*4+3]=Bval[i*4+3];
}
temp=8+i;
for(i=0;i<8;i++)
Sendval16[temp+i]=UID[i];
temp+=i;
for(i=1;i<temp;i++)
{
if((0x0F&(Sendval16[i]>>4))>9)
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
else
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;
if((0x0F&(Sendval16[i]))>9)
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
else
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
}
CRC16=RFcrc_16(1,Sendval16,temp,0xFFFF);
CRCval[5]=CRC16&0xff;
CRCval[6]=(CRC16>>8)&0xff;
Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
Sendval[2*i+2]=(CRCval[6]&0x0f);
Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
Sendval[2*i]=(CRCval[5]&0x0f);
Sendval[2*i+3]=0x0A;
Sendval[2*i+4]=0x0D;
if(Sendval[2*i-1]>9){
Sendval[2*i-1]=Sendval[2*i-1]+0x37;
}else {
Sendval[2*i-1]=Sendval[2*i-1]+0x30;
}
if(Sendval[2*i]>9){
Sendval[2*i]=Sendval[2*i]+0x37;
}else {
Sendval[2*i]=Sendval[2*i]+0x30;
}
if(Sendval[2*i+1]>9){
Sendval[2*i+1]=Sendval[2*i+1]+0x37;
}else {
Sendval[2*i+1]=Sendval[2*i+1]+0x30;
}
if(Sendval[2*i+2]>9){
Sendval[2*i+2]=Sendval[2*i+2]+0x37;
}else {
Sendval[2*i+2]=Sendval[2*i+2]+0x30;
}
ret=WriteCom(Sendval,2*i+7);
nBytestoRead=0;
ret=ReadCom(retval,nBytestoRead,500);
return 1;
}
int _stdcall WriteDSFID(BYTE Sendval[],BYTE retval[],int flag,int DSFID,BYTE UID[],DWORD &nBytestoRead)
{
//:020C1200230086363301004005E0DF58
//3A30323043313230303233303038363336333330313030343030354530444635380A
char Sendval16[100];
//BYTE Sendval[][200];
char CRCval[10];
int ret;
int i;
int CRC16;
m_count++;
Sendval[0]=0x3A;
Sendval16[1]=m_count&0xff;
Sendval16[2]=0x0C;
Sendval16[3]=0x12;
Sendval16[4]=0x00;
Sendval16[5]=flag;
Sendval16[6]=DSFID;
for(i=0;i<8;i++)
Sendval16[7+i]=UID[i];
for(i=1;i<8+7;i++)
{
if((0x0F&(Sendval16[i]>>4))>9)
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
else
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;
if((0x0F&(Sendval16[i]))>9)
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
else
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
}
CRC16=RFcrc_16(1,Sendval16,15,0xFFFF);
CRCval[5]=CRC16&0xff;
CRCval[6]=(CRC16>>8)&0xff;
Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
Sendval[2*i+2]=(CRCval[6]&0x0f);
Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
Sendval[2*i]=(CRCval[5]&0x0f);
Sendval[2*i+3]=0x0A;
Sendval[2*i+4]=0x0D;
if(Sendval[2*i-1]>9){
Sendval[2*i-1]=Sendval[2*i-1]+0x37;
}else {
Sendval[2*i-1]=Sendval[2*i-1]+0x30;
}
if(Sendval[2*i]>9){
Sendval[2*i]=Sendval[2*i]+0x37;
}else {
Sendval[2*i]=Sendval[2*i]+0x30;
}
if(Sendval[2*i+1]>9){
Sendval[2*i+1]=Sendval[2*i+1]+0x37;
}else {
Sendval[2*i+1]=Sendval[2*i+1]+0x30;
}
if(Sendval[2*i+2]>9){
Sendval[2*i+2]=Sendval[2*i+2]+0x37;
}else {
Sendval[2*i+2]=Sendval[2*i+2]+0x30;
}
ret=WriteCom(Sendval,2*i+7);
nBytestoRead=0;
ret=ReadCom(retval,nBytestoRead,500);
return 1;
}
int _stdcall LockDSFID(BYTE Sendval[],BYTE retval[],int flag,BYTE UID[],DWORD &nBytestoRead)
{
//:030D12002386363301004005E08848
//3A3033304431323030323338363336333330313030343030354530383834380A
char Sendval16[100];
//BYTE Sendval[][200];
char CRCval[10];
int ret;
int i;
int CRC16;
m_count++;
Sendval[0]=0x3A;
Sendval16[1]=m_count&0xff;
Sendval16[2]=0x0D;
Sendval16[3]=0x12;
Sendval16[4]=0x00;
Sendval16[5]=flag;
for(i=0;i<8;i++)
Sendval16[6+i]=UID[i];
for(i=1;i<7+7;i++)
{
if((0x0F&(Sendval16[i]>>4))>9)
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
else
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;
if((0x0F&(Sendval16[i]))>9)
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
else
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
}
CRC16=RFcrc_16(1,Sendval16,14,0xFFFF);
CRCval[5]=CRC16&0xff;
CRCval[6]=(CRC16>>8)&0xff;
Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
Sendval[2*i+2]=(CRCval[6]&0x0f);
Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
Sendval[2*i]=(CRCval[5]&0x0f);
Sendval[2*i+3]=0x0A;
Sendval[2*i+4]=0x0D;
if(Sendval[2*i-1]>9){
Sendval[2*i-1]=Sendval[2*i-1]+0x37;
}else {
Sendval[2*i-1]=Sendval[2*i-1]+0x30;
}
if(Sendval[2*i]>9){
Sendval[2*i]=Sendval[2*i]+0x37;
}else {
Sendval[2*i]=Sendval[2*i]+0x30;
}
if(Sendval[2*i+1]>9){
Sendval[2*i+1]=Sendval[2*i+1]+0x37;
}else {
Sendval[2*i+1]=Sendval[2*i+1]+0x30;
}
if(Sendval[2*i+2]>9){
Sendval[2*i+2]=Sendval[2*i+2]+0x37;
}else {
Sendval[2*i+2]=Sendval[2*i+2]+0x30;
}
ret=WriteCom(Sendval,2*i+7);
nBytestoRead=0;
ret=ReadCom(retval,nBytestoRead,500);
return 1;
}
int _stdcall GetSysInfo(BYTE Sendval[],BYTE retval[],int Flag,BYTE UID[],DWORD &nBytestoRead)
{
//:040E12002386363301004005E025D7
//3A3034304531323030323338363336333330313030343030354530323544370A
char Sendval16[100];
//BYTE Sendval[][200];
char CRCval[10];
int ret;
int i;
int CRC16;
m_count++;
Sendval[0]=0x3A;
Sendval16[1]=m_count&0xff;
Sendval16[2]=0x0E;
Sendval16[3]=0x12;
Sendval16[4]=0x00;
Sendval16[5]=Flag;
for(i=0;i<8;i++)
Sendval16[6+i]=UID[i];
for(i=1;i<7+7;i++)
{
if((0x0F&(Sendval16[i]>>4))>9)
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
else
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;
if((0x0F&(Sendval16[i]))>9)
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
else
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
}
CRC16=RFcrc_16(1,Sendval16,14,0xFFFF);
CRCval[5]=CRC16&0xff;
CRCval[6]=(CRC16>>8)&0xff;
Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
Sendval[2*i+2]=(CRCval[6]&0x0f);
Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
Sendval[2*i]=(CRCval[5]&0x0f);
Sendval[2*i+3]=0x0A;
Sendval[2*i+4]=0x0D;
if(Sendval[2*i-1]>9){
Sendval[2*i-1]=Sendval[2*i-1]+0x37;
}else {
Sendval[2*i-1]=Sendval[2*i-1]+0x30;
}
if(Sendval[2*i]>9){
Sendval[2*i]=Sendval[2*i]+0x37;
}else {
Sendval[2*i]=Sendval[2*i]+0x30;
}
if(Sendval[2*i+1]>9){
Sendval[2*i+1]=Sendval[2*i+1]+0x37;
}else {
Sendval[2*i+1]=Sendval[2*i+1]+0x30;
}
if(Sendval[2*i+2]>9){
Sendval[2*i+2]=Sendval[2*i+2]+0x37;
}else {
Sendval[2*i+2]=Sendval[2*i+2]+0x30;
}
ret=WriteCom(Sendval,2*i+7);
nBytestoRead=0;
ret=ReadCom(retval,nBytestoRead,500);
return 1;
}
int _stdcall GetMultiBlockSecirotuStatus(BYTE Sendval[],BYTE retval[],int flag,int nStartBlock,int nLength,BYTE UID[],DWORD &nBytestoRead)
{
//:050F160023000086363301004005E0FF60
//3A303530463136303032333030303038363336333330313030343030354530464636
char Sendval16[100];
//BYTE Sendval[][200];
char CRCval[10];
int ret;
int i;
int CRC16;
m_count++;
Sendval[0]=0x3A;
Sendval16[1]=m_count&0xff;
Sendval16[2]=0x0F;
Sendval16[3]=0x16;
Sendval16[4]=0x00;
Sendval16[5]=flag;
Sendval16[6]=nStartBlock;
Sendval16[7]=nLength;
for(i=0;i<8;i++)
Sendval16[8+i]=UID[i];
for(i=1;i<9+7;i++)
{
if((0x0F&(Sendval16[i]>>4))>9)
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x37;
else
Sendval[2*i-1]=(0x0F&(Sendval16[i]>>4))+0x30;
if((0x0F&(Sendval16[i]))>9)
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x37;
else
Sendval[2*i]=(0x0F&(Sendval16[i]))+0x30;
}
CRC16=RFcrc_16(1,Sendval16,16,0xFFFF);
CRCval[5]=CRC16&0xff;
CRCval[6]=(CRC16>>8)&0xff;
Sendval[2*i+1]=((CRCval[6]>>4)&0x0f);
Sendval[2*i+2]=(CRCval[6]&0x0f);
Sendval[2*i-1]=((CRCval[5]>>4)&0x0f);
Sendval[2*i]=(CRCval[5]&0x0f);
Sendval[2*i+3]=0x0A;
Sendval[2*i+4]=0x0D;
if(Sendval[2*i-1]>9){
Sendval[2*i-1]=Sendval[2*i-1]+0x37;
}else {
Sendval[2*i-1]=Sendval[2*i-1]+0x30;
}
if(Sendval[2*i]>9){
Sendval[2*i]=Sendval[2*i]+0x37;
}else {
Sendval[2*i]=Sendval[2*i]+0x30;
}
if(Sendval[2*i+1]>9){
Sendval[2*i+1]=Sendval[2*i+1]+0x37;
}else {
Sendval[2*i+1]=Sendval[2*i+1]+0x30;
}
if(Sendval[2*i+2]>9){
Sendval[2*i+2]=Sendval[2*i+2]+0x37;
}else {
Sendval[2*i+2]=Sendval[2*i+2]+0x30;
}
ret=WriteCom(Sendval,2*i+7);
nBytestoRead=0;
ret=ReadCom(retval,nBytestoRead,500);
return 1;
}
int RFcrc_16( char offset, char *pointer, int length, int crc16_preset )
{
int CRC16, m;
char n;
pointer += offset;
CRC16 = crc16_preset;
for (m=0 ; m < length ; m++)
{
CRC16 ^= *pointer;
pointer++;
for (n=0 ; n < 8 ; n++)
{ if (CRC16 & 0x0001)
CRC16 = (CRC16 >> 1) ^ RFCRC16_POLYNOM ;
else
CRC16 = (CRC16 >> 1);
}
}
return (CRC16);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -