读卡器应用函数整理 1.转换金额

1.转换金额

//读取金额数据    
        icWrite[0]=0x00;    //nad
        icWrite[1]=0x40;    //pcb
        icWrite[2]=5;       //len
        icWrite[3]=0x00;
        icWrite[4]=0xb0;
        icWrite[5]=0x86;
        icWrite[6]=0x00;
        icWrite[7]=0x04;
        icWrite[8]=0x00;     // init bcc
        for(st=0;st<8;st++)
             icWrite[8]=icWrite[8]^icWrite[st]; //校验位
       if(cpu_protocol(icdev,9,icWrite,icRead)!=0)//按照CPU卡T=1的传输协议向读写器发送命令串
       {
            printf("\ntransfer err\n");
            ic_exit(icdev);
            return;
       } 
       printf("\nnad:  %02X\n",icRead[0]);
       printf("pcb:  %02X\n",icRead[1]);
       printf("len:  %d\n",icRead[2]);
       printf("SW1SW2:  %02X%02X\n",icRead[icRead[2]+1],icRead[icRead[2]+2]);
       printf("Data:  ");
       for(st=0;st<icRead[2]-2;st++)
     { 
          
  
        printf("%02X",icRead[st+3]);
  if(icRead[st+3]==0)
  {
    if(i!=0)
   {
    i+=1;
    a[i]=icRead[st+3];
   
   }
  }
  else
  {
  i+=1;
  a[i]=icRead[st+3];
  
  }
  }
   printf("\n");
       
//十进制显示带小数点的具体金额
       for(j=1;j<=i;j++)
    {
    count+=a[j]*adp(i,j);
   
    }
    count=count/100;
    h=count;
    printf("the balance is: %5.2f\n",h);//printf中小数点左边的数字表示最小字段宽度,右边的表示精度
    printf("the balance is: %d\n",count);
       ic_exit(icdev);
       printf("\n");

int adp(int a, int b)
       { 
  int i;
        int c=1;
        for(i=b;i<a;i++) c=c*16*16;
        return c;
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值