📄 buffer.c
字号:
break;
case 0x22:
{
len = buffer[0]*(2+(c_db_n+1)*5+4)+6+2;
pcdata[0] = 6+buffer[0]*(2+(c_db_n+1)*5+4)+2;
pcdata[1] = deviceAddr;
pcdata[2] = 0x21;
if(len<=0xff)pcdata[3] = OK;
else pcdata[3] = 0x94;
pcdata[4] = c_tr_data;
pcdata[5] = buffer[0];
for(i=0;i<buffer[0]*(2+(c_db_n+1)*5+4);i++)
{
pcdata[6+i] = buffer[1+i];
}
wr_crc_resp();
}
break;
case 0x23:
{
len = buffer[0]*(1+8+2+(c_db_n+1)*5+4)+6+2;
pcdata[0] = 6+buffer[0]*(9+2+(c_db_n+1)*5+4)+2;
pcdata[1] = deviceAddr;
pcdata[2] = 0x21;
if(len<=0xff)pcdata[3] = OK;
else pcdata[3] = 0x94;
pcdata[4] = c_tr_data;
pcdata[5] = buffer[0];
for(i=0;i<buffer[0]*(9+2+(c_db_n+1)*5+4);i++)
{
pcdata[6+i] = buffer[1+i];
}
wr_crc_resp();
}
break;
}
}
}
else
{
pcdata[0] = 6;
pcdata[1] = deviceAddr;
pcdata[2] = 0x32;
pcdata[3] = 0x92;
wr_crc_resp();
}
}
}
static void clearBufferData()
{
uchar i;
if( (bufferInitFlag == 1) && (bufferReadFlag == 1) )
{
for(i=0;i<BuffLen;i++){buffer[i] = 0;}
bufferClrFlag = 1;
bufferReadFlag = 0;
if(pcdata[1] == deviceAddr)
{
pcdata[0] = 6;
pcdata[1] = deviceAddr;
pcdata[2] = 0x32;
pcdata[3] = OK;
wr_crc_resp();
}
}
else
{
if(pcdata[1] == deviceAddr)
{
pcdata[0] = 6;
pcdata[1] = deviceAddr;
pcdata[2] = 0x32;
pcdata[3] = 0x92;
wr_crc_resp();
}
}
}
static void serialNum( )
{
uchar i,j;
uchar num_card;
myInvOut();
num_card = labeldata[0];
if( num_card != 0 )
{
if(buffer[0] >= 0x0b) {return;}
buffer[0] += num_card;
for(i=0;i<num_card;i++)
{
buffer[(buffer[0]-num_card+i)*9 + 1] = 0x03; //tr-type
for(j=0;j<8;j++)
{
buffer[(buffer[0]-num_card+i)*9+2+j] = labeldata[i*10+3+j]; // copy uid
}
}
}
else if( labeldata[0] == 0 )
{
}
}
static void db( )
{
uchar i,j;
uchar flags = 0;
uchar num_card;
uchar len;
myInvOut();
num_card = labeldata[0];
if( num_card != 0 )
{
bReadTag = 1;
if(buffer[0] >= 0x0b) {return;}
//buffer[0] += num_card;
len = 1+1+(c_db_n+1)*5;
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x60; // address_flag ,option_flag
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] = c_db_adr; //start addr
viccdata[12] = c_db_n; // length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
sendISOCmd();
CS_RAM_1;
if(viccdata[1] == 0) // read correctly
{
buffer[0] ++;
buffer[(buffer[0]-num_card+i)*len+1] = c_db_adr;
buffer[(buffer[0]-num_card+i)*len+2] = c_db_n;
for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
{
buffer[(buffer[0]-num_card+i)*len+3+j] = viccdata[2+j];
}
}
}
}
else
{
}
}
static void serialNumDb( )
{
uchar i,j;
uchar flags = 0;
uchar num_card;
uchar len;
myInvOut();
num_card = labeldata[0];
if( num_card != 0 )
{
bReadTag = 1;
if(buffer[0] >= 0x0b) {return;}
//buffer[0] += num_card;
len = 1+8+1+1+(c_db_n+1)*5;
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x60; // address_flag ,option_flag
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] = c_db_adr; //start addr
viccdata[12] = c_db_n; // length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
sendISOCmd();
CS_RAM_1;
if(viccdata[1] == 0) // read correctly
{
buffer[0] ++;
buffer[(buffer[0]-num_card+i)*len+1] = 0x03; //tr_typ
for(j=0;j<8;j++)//copy uid
{
buffer[(buffer[0]-num_card+i)*len+2+j] = labeldata[i*10+3+j];
}
buffer[(buffer[0]-num_card+i)*len+10] = c_db_adr;
buffer[(buffer[0]-num_card+i)*len+11] = c_db_n;
for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
{
buffer[(buffer[0]-num_card+i)*len+12+j] = viccdata[2+j];
}
}
}
}
else if( labeldata[0] == 0 )
{
}
}
static void serialNumTimer()
{
uchar i,j;
uchar flags = 0;
uchar num_card;
uchar len;
myInvOut();
num_card = labeldata[0];
if( num_card != 0 )
{
bReadTag = 1;
if(buffer[0] >= 0x0b) {return;}
buffer[0] += num_card;
len = 1+8+4; //tr_typ+snr+timer
for(i=0;i<num_card;i++)
{
buffer[(buffer[0]-num_card+i)*13 + 1] = 0x03; //tr-type
for(j=0;j<8;j++)
{
buffer[(buffer[0]-num_card+i)*13+2+j] = labeldata[i*10+3+j]; // copy uid
}
getBufferTime(); //get time
buffer[(buffer[0]-num_card+i)*13+10] = Day;
buffer[(buffer[0]-num_card+i)*13+11] = Hour;
buffer[(buffer[0]-num_card+i)*13+12] = Minute;
buffer[(buffer[0]-num_card+i)*13+13] = Second;
}
}
else if( labeldata[0] == 0 )
{
}
}
static void dbTimer( )
{
uchar i,j;
uchar flags = 0;
uchar num_card;
uchar len;
myInvOut();
num_card = labeldata[0];
len = 1+1+(c_db_n+1)*5+4; // db_adr+db_n+db+timer
if( num_card != 0 )
{
bReadTag = 1;
if(buffer[0] >= 0x0b){return;}
//buffer[0] += num_card;
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x60; // address_flag ,option_flag
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] = c_db_adr; //start addr
viccdata[12] = c_db_n; // length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
sendISOCmd();
CS_RAM_1;
if(viccdata[1] == 0) // read correctly
{
buffer[0] ++;
buffer[(buffer[0]-num_card+i)*len+1] = c_db_adr;
buffer[(buffer[0]-num_card+i)*len+2] = c_db_n;
for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
{
buffer[(buffer[0]-num_card+i)*len+3+j] = viccdata[2+j];
}
getBufferTime(); //get time
buffer[(buffer[0]-num_card+i)*len+(len-3)] = Day;
buffer[(buffer[0]-num_card+i)*len+(len-2)] = Hour;
buffer[(buffer[0]-num_card+i)*len+(len-1)] = Minute;
buffer[(buffer[0]-num_card+i)*len+(len-0)] = Second;
}
}
}
else
{
}
}
static void serialDbTimer()
{
uchar i,j;
uchar flags = 0;
uchar num_card;
uchar len;
myInvOut();
num_card = labeldata[0];
if( num_card != 0 )
{
bReadTag = 1;
if(buffer[0] >= 0x0b) {return;}
//buffer[0] += num_card;
len = 1+8+1+1+(c_db_n+1)*5+4; //tr_typ+snr+db_adr+db_n+snr
flags = ISOFlagsSys&0xfb; // not inventory
flags |= 0x60; // address_flag ,option_flag
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] = c_db_adr; //start addr
viccdata[12] = c_db_n; // length
wr_crc_send();
ISOMode = ISOModeSys&0xe7; //read ,all
sendISOCmd();
CS_RAM_1;
if(viccdata[1] == 0) // read correctly
{
buffer[0] ++;
buffer[(buffer[0]-num_card+i)*len+1] = 0x03; //tr_typ
for(j=0;j<8;j++)//copy uid
{
buffer[(buffer[0]-num_card+i)*len+2+j] = labeldata[i*10+3+j];
}
buffer[(buffer[0]-num_card+i)*len+10] = c_db_adr;
buffer[(buffer[0]-num_card+i)*len+11] = c_db_n;
for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
{
buffer[(buffer[0]-num_card+i)*len+12+j] = viccdata[2+j];
}
getBufferTime(); //get time
buffer[(buffer[0]-num_card+i)*len+(len-3)] = Day;
buffer[(buffer[0]-num_card+i)*len+(len-2)] = Hour;
buffer[(buffer[0]-num_card+i)*len+(len-1)] = Minute;
buffer[(buffer[0]-num_card+i)*len+(len-0)] = Second;
}
}
}
else if( labeldata[0] == 0 )
{
}
}
void getBufferTime()
{
uchar day,hour,minute,second;
uchar addr02=0,addr03=0,addr04=0,addr05=0;/*addr in the pcf8583*/
uint pcf8583_flag = 0;
addr02 = ReadByte(0x02);
if(addr02 == 0xffff)
pcf8583_flag = 1; /*read i2c error*/
addr03 = ReadByte(0x03);
if(addr03 == 0xffff)
pcf8583_flag = 1;
addr04 = ReadByte(0x04);
if(addr04 == 0xffff)
pcf8583_flag = 1;
addr05 = ReadByte(0x05);
if(addr05 == 0xffff)
pcf8583_flag = 1;
day = addr05&0x3f;
hour = addr04&0x3f;
minute = addr03;
second = addr02;
Day = day;
Hour = hour;
Minute = minute;
Second = second;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -