📄 icc.c
字号:
icc_buff[0]=0x00;
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_sam_in();
if(stat!=0){return 1;}
icc_buff[0]=0xc0;
icc_buff[1]=0xf9;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=8;
memcpy(&icc_buff[5],pin_data,8);
icc_sam_in();
//if(stat!=0){return 2;}
/*
ES=0;
for(i=0;i<length;i++)
rs232_send_byte (icc_buff[i]);
*/
if(!(sw1==0x61 && sw2==0x08))
{
stat=2;
if(sw1==0x69 && sw2==0x83)
{
cls();
DisHzLinYm("税控卡PIN锁定",Col1);
DL();
DL();
}
return 2;
}
icc_buff[0]=0x00;
icc_buff[1]=0xc0;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x08;
icc_sam_out();
//if(stat!=0){return 3;}
/*
ES=0;
for(i=0;i<length;i++)
rs232_send_byte (icc_buff[i]);
*/
if(!(sw1==0x90 && sw2==0x00)){stat=3;return 3;}
memcpy(pin_data,icc_buff,0x08);
icc_buff[0]=0xc0;
icc_buff[1]=0xf7;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x16;
memcpy(&icc_buff[5],icctempp,0x16);
icc_sam_in();
//if(stat!=0){return 4;}
// ES=0;
// for(i=0;i<length;i++)
// rs232_send_byte (icc_buff[i]);
if(!(sw1==0x90 && sw2==0x00)){stat=1;return 1;}
else return 0;
}
void issue_invoice(void)
{
uchar lrc;
icc_reset_sam();
icc_buff[0]=0x00;
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_sam_in();
//Verify_FISCAL_PIN (校验使用口令)
icc_buff[0]=0xc0;
icc_buff[1]=0xf9;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=8;
memcpy(&icc_buff[5],pin_data,8);
icc_sam_in();
if(!(sw1==0x61 && sw2==0x08))
{
stat=2;
if(sw1==0x69 && sw2==0x83)
{
cls();
DisHzLinYm("税控卡PIN锁定",Col1);
DL();
DL();
}
return;
}
icc_buff[0]=0x00;
icc_buff[1]=0xc0;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x08;
icc_sam_out();
if(!(sw1==0x90 && sw2==0x00))
{stat=3;return;}
memcpy(pin_data,icc_buff,0x08);
//ISSUE_Invoice1 (开票)
icc_buff[0]=0xc0;
icc_buff[1]=0xf2;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x2c;
lrc=compute_lrc(&inv_prn_cur_info.date[0],43);
memcpy(&icc_buff[5],&inv_prn_cur_info.date[0],43);
icc_buff[48]=lrc;
// for(i=0;i<44;i++)
// rs232_send_byte (icc_buff[i+5]);
icc_sam_in();
// ES=0;
// for(i=0;i<length;i++)
// rs232_send_byte (icc_buff[i]);
if(!(sw1==0x61 && sw2==0x08))
{stat=4;return;}
icc_buff[0]=0x00;
icc_buff[1]=0xc0;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x08;
icc_sam_out();
if(!(sw1==0x90 && sw2==0x00))
{stat=5;return;}
memcpy(fiscal_code,icc_buff,0x08);
memcpy(inv_prn_cur_info.fiscal_code,icc_buff,8);
stat=0;return;
}
uchar daily_collect_sign(void)
{
uchar lrc;
icc_reset_sam();
icc_buff[0]=0x00;
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_sam_in();
if(stat!=0){return 1;}
icc_buff[0]=0xc0;
icc_buff[1]=0xf9;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=8;
memcpy(&icc_buff[5],pin_data,8);
icc_sam_in();
if(stat!=0){return 1;}
if(!(sw1==0x61 && sw2==0x08))
{stat=1;
if(sw1==0x69 && sw2==0x83)
{
cls();
DisHzLinYm("税控卡PIN锁定",Col1);
DL();
DL();
}
return 1;
}
icc_buff[0]=0x00;
icc_buff[1]=0xc0;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x08;
icc_sam_out();
if(stat!=0){return 2;}
if(!(sw1==0x90 && sw2==0x00)){stat=2;return 2;}
memcpy(pin_data,icc_buff,0x08);
icc_buff[0]=0xc0;
icc_buff[1]=0xfb;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x41;
lrc=compute_lrc(&inv_cur_day.date[0],64);
memcpy(&icc_buff[5],&inv_cur_day.date[0],64);
icc_buff[69]=lrc;
icc_sam_in();
if(stat!=0){return 3;}
if(!(sw1==0x61 && sw2==0x81)){stat=3;return 3;}
icc_buff[0]=0x00;
icc_buff[1]=0xc0;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x81;
icc_sam_out();
if(stat!=0){return 4;}
if(!(sw1==0x90 && sw2==0x00)){stat=4;return 4;}
stat=0;return 0;
memcpy(inv_cur_day.sign_code,icc_buff,128);
}
uchar declare_fiscal(void)
{
uchar lrc,i;
icc_reset() ;
icc_buff[0]=0x00;//选择税控应用
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_in();
if(stat!=0){return 1;}
icc_buff[0]=0x00;
icc_buff[1]=0xb0;
icc_buff[2]=0x82;
icc_buff[3]=0x02;
icc_buff[4]=8;
icc_out();
if(stat!=0){return 1;}
//if(memcmp(icc_buff,Temp_All,8)!=0) {stat=1;return 1;}
for(i=0;i<3;i++)
{
icc_buff[0]=0x00;
icc_buff[1]=0xb2;
icc_buff[2]=i; //记录号
icc_buff[3]=0x24;
icc_buff[4]=220;
icc_out();
if(stat!=0){return 2;}
if(icc_buff[0]==0) break;
}
if(i==3){stat=2;return 2;}
icc_reset_sam();
icc_buff[0]=0x00;
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_sam_in();
if(stat!=0){return 3;}
//Verify_FISCAL_PIN (校验使用口令)
icc_buff[0]=0xc0;
icc_buff[1]=0xf9;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=8;
memcpy(&icc_buff[5],pin_data,8);
icc_sam_in();
if(stat!=0){return 3;}
if(!(sw1==0x61 && sw2==0x08))
{
stat=3;
if(sw1==0x69 && sw2==0x83)
{
cls();
DisHzLinYm("税控卡PIN锁定",Col1);
DL();
DL();
}
return 3;
}
icc_buff[0]=0x00;
icc_buff[1]=0xc0;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x08;
icc_sam_out();
if(stat!=0){return 4;}
if(!(sw1==0x90 && sw2==0x00)){stat=4;return 4;}
memcpy(pin_data,icc_buff,0x08);
icc_buff[0]=0xc0;
icc_buff[1]=0xf4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x47;
lrc=compute_lrc(&declare_data.st_date[0],0x46);
memcpy(&icc_buff[5],&declare_data.st_date[0],70);
icc_buff[75]=lrc;
icc_sam_in();
if(stat!=0){return 5;}
// ES=0;
// rs232_send_byte (sw1);
// rs232_send_byte (sw2);
if(!(sw1==0x61 && sw2==0x8e))
{stat=5;return 5;}
icc_buff[0]=0x00;
icc_buff[1]=0xc0;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x8e;
icc_sam_out();
if(stat!=0){return 6;}
if(!(sw1==0x90 && sw2==0x00))
{stat=6;return 6;}
memcpy(&declare_data.zc_total_sam,icc_buff,0x8d);
declare_data.lrc=compute_lrc(declare_data.sam_id,0xdb);
//p=declare_data.sam_id;
/* ES=0;
for(i=0;i<0xdc;i++)
rs232_send_byte (*p++);
*/
icc_buff[0]=0xc0;
icc_buff[1]=0xe6;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0xdc;
memcpy(&icc_buff[5],declare_data.sam_id,0xdc);
icc_in();
if(stat!=0){return 7;}
// ES=0;
//for(i=0;i<length;i++)
//rs232_send_byte (icc_buff[i]);
//
if(!(sw1==0x90 && sw2==0x00))
{stat=7;return 7;}
return 0;
}
/*
uchar declare_fiscal(void)
{
uchar lrc;
icc_reset() ;
icc_buff[0]=0x00;//选择税控应用
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_in();
if(stat!=0){return 1;}
icc_buff[0]=0x00;
icc_buff[1]=0xb0;
icc_buff[2]=0x82;
icc_buff[3]=0x02;
icc_buff[4]=8;
icc_out();
if(stat!=0){return 1;}
if(memcmp(icc_buff,Temp_All,8)!=0) {stat=1;return 1;}
icc_buff[0]=0x00;
icc_buff[1]=0xb2;
icc_buff[2]=1; //记录号
icc_buff[3]=0x24;
icc_buff[4]=220;
icc_out();
if(stat!=0){return 2;}
if(icc_buff[0]==1) {stat=2;return 2;}
icc_reset_sam();
icc_buff[0]=0x00;
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_sam_in();
if(stat!=0){return 3;}
//Verify_FISCAL_PIN (校验使用口令)
icc_buff[0]=0xc0;
icc_buff[1]=0xf9;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=8;
memcpy(&icc_buff[5],pin_data,8);
icc_sam_in();
if(stat!=0){return 3;}
if(!(sw1==0x61 && sw2==0x08))
{
stat=3;
if(sw1==0x69 && sw2==0x83)
{
cls();
DisHzLinYm("税控卡PIN锁定",Col1);
DL();
DL();
}
return 3;
}
icc_buff[0]=0x00;
icc_buff[1]=0xc0;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x08;
icc_sam_out();
if(stat!=0){return 4;}
if(!(sw1==0x90 && sw2==0x00)){stat=4;return 4;}
memcpy(pin_data,icc_buff,0x08);
icc_buff[0]=0xc0;
icc_buff[1]=0xf4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x47;
lrc=compute_lrc(&declare_data.st_date[0],0x46);
memcpy(&icc_buff[5],&declare_data.st_date[0],70);
icc_buff[75]=lrc;
icc_sam_in();
if(stat!=0){return 5;}
// ES=0;
// rs232_send_byte (sw1);
// rs232_send_byte (sw2);
if(!(sw1==0x61 && sw2==0x8e))
{stat=5;return 5;}
icc_buff[0]=0x00;
icc_buff[1]=0xc0;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0x8e;
icc_sam_out();
if(stat!=0){return 6;}
if(!(sw1==0x90 && sw2==0x00))
{stat=6;return 6;}
memcpy(&declare_data.zc_total_sam,icc_buff,0x8d);
declare_data.lrc=compute_lrc(declare_data.sam_id,0xdb);
icc_buff[0]=0xc0;
icc_buff[1]=0xe6;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=0xdc;
memcpy(&icc_buff[5],declare_data.sam_id,0xdc);
icc_in();
if(stat!=0){return 7;}
// ES=0;
//for(i=0;i<length;i++)
//rs232_send_byte (icc_buff[i]);
//
if(!(sw1==0x90 && sw2==0x00))
{stat=7;return 7;}
return 0;
}
*/
/*
uchar update_control(void)
{
uchar *p;
icc_reset() ;
//选择税控应用
icc_buff[0]=0x00;
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_in();
if(stat!=0){return 1;}
icc_buff[0]=0x00;
icc_buff[1]=0xb0;
icc_buff[2]=0x82;
icc_buff[3]=0x02;
icc_buff[4]=8;
icc_out();
if(stat!=0){return 1;}
if(memcmp(icc_buff,Temp_All,8)!=0) {stat=1;return 1;}
icc_buff[0]=0x00;
icc_buff[1]=0xb2;
icc_buff[2]=1;
icc_buff[3]=0x24;
icc_buff[4]=220;
icc_out();
if(stat!=0){return 8;}
if(memcmp(declare_temp,&icc_buff[13],4)>0) {stat=2;return 2;}
//if(memcmp(span.ed_date,&icc_buff[13],4)>0) {stat=2;return 2;}
icc_reset_sam();
icc_buff[0]=0x00;
icc_buff[1]=0xa4;
icc_buff[2]=0;
icc_buff[3]=0;
icc_buff[4]=2;
icc_buff[5]=0x2f;
icc_buff[6]=0x02 ;
icc_sam_in();
if(stat!=0){return 2;}
//Verify_FISCAL_PIN (校验使用口令)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -