找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5587|回复: 1
上一主题 下一主题
收起左侧

MFrc522程序问题,寻卡 防冲撞 选卡都成功,写入数据失败,求大佬们指点一下

[复制链接]
跳转到指定楼层
楼主
ID:348627 发表于 2018-8-30 18:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
寻卡 防冲撞  选卡 验证密码a  写块    验证密码b(前面都成功) 充值      到了充值这里就失败了 求指点一下哪里有错误 谢谢。下面附上代码

  1. unsigned char code data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};
  2. //M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令
  3. //4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反
  4. unsigned char code data2[4]  = {0,0,0,0x16};
  5. unsigned char code data3[4]  = {0,0,0,0x17};
  6. unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

  7. unsigned char g_ucTempbuf[20];
  8. void main( ) {
  9. unsigned char status,i;
  10. unsigned int temp;
  11. InitializeSystem( );
  12. PcdReset();
  13. PcdAntennaOff();
  14. PcdAntennaOn();
  15. while (1) {
  16.   status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡
  17.   if (status != MI_OK) {
  18.    InitializeSystem( );
  19.    PcdReset();
  20.    PcdAntennaOff();
  21.    PcdAntennaOn();
  22.    continue;
  23.   }
  24.   printf("卡的类型:");
  25.   for(i=0; i<2; i++) {
  26.    temp=g_ucTempbuf[i];
  27.    printf("%X",temp);
  28.   }
  29.   status = PcdAnticoll(g_ucTempbuf);//防冲撞
  30.   if (status != MI_OK) {
  31.    continue;
  32.   }

  33.   ////////以下为超级终端打印出的内容////////////////////////
  34.   printf("卡序列号:"); //超级终端显示,
  35.   for(i=0; i<4; i++) {
  36.    temp=g_ucTempbuf[i];
  37.    printf("%X",temp);
  38.   }
  39.   ///////////////////////////////////////////////////////////
  40.   status = PcdSelect(g_ucTempbuf);//选定卡片
  41.   if (status != MI_OK) {
  42.    continue;
  43.   }
  44.   status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//验证卡片密码
  45.   if (status != MI_OK) {
  46.    continue;
  47.   }
  48.   status = PcdWrite(1, data1);//写块
  49.   if (status != MI_OK) {
  50.    continue;
  51.   }
  52.    status = PcdAuthState(PICC_AUTHENT1B, 1, DefaultKey, g_ucTempbuf);//验证卡片密码
  53.   if (status != MI_OK) {
  54.    continue;
  55.   }

  56.      status=PcdValue(PICC_INCREMENT,1,data3);  //充值
  57.       if (status != MI_OK)
  58.     {
  59.     printf("充值失败\n");
  60.    continue;
  61.   }
复制代码




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:310046 发表于 2019-6-27 17:41 | 只看该作者
你好 解决问题了吗 我现在也遇到同样的问题 能甲流一下吗
回复

使用道具 举报

板凳
ID:310046 发表于 2019-6-27 18:32
你好 我遇到和你同样的问题  rc522调试的问题 能加下好友指点一下吗 万分感谢  qq286052543 手机 和微信 13338003826

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表