完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
嗨! 我使用ST25R3911DiscoComm.dll并用C / C ++编写。 1.我发送9370和9570与你的iso14443a_select_by_uid.py相同。 一切都好,两者都返回0。 2.下一步RATS: char * rxRats = new char [1024]; for(int i = 0; i< 1024; i ++){ rxRats =' 0'; } size_t rxRatsSize = 0; res = iso14443aRATS(h,256,0x1,rxRats,& rxRatsSize); printf('%d r n',res); printf('%d r n',rxRatsSize); 还好,res = 0.但是我无法在rxRats中收到一些响应,因此我不知道PPS的ds和dr参数。 3.下一个PPS(dr和ds只是设置在我脑海中的随机8): printf('--- PPS:--- r n'); char * rxPPS = new char [1024]; for(int i = 0; i< 1024; i ++){ rxPPS =' 0'; } size_t rxPPSSize = 1024; res = iso14443aPPS(h,0x1,8,8,true,rxPPS,& rxPPSSize); printf('%d r n',res); printf('%d r n',rxPPSSize); 也一切OK,res = 0。 4.现在请求: printf('--- Req 3:--- r n'); PCB_t pcb; pcb.b1 = 0; //块号 pcb.b2 = 1; pcb.b3 = 0; //是NAD设置 pcb.b4 = 1; //是CID集 pcb.b5 = 0; //是Chaining pcb.b6 = 0; pcb.b7 = 0; pcb.b8 = 0; char * cl3 = new char [24]; cl3 [0] = *(char *)& pcb; cl3 [1] = 0x1; cl3 [2] // 2-21 - 一些APDU命令 unsigned char arr [] = {cl3 [0],cl3 [1],cl3 [2],cl3 [3],cl3 [4],cl3 [5],cl3 [6],cl3 [7],cl3 [8] ],cl3 [9],cl3 [10] ,cl3 [11],cl3 [12],cl3 [13],cl3 [14],cl3 [15],cl3 [16],cl3 [17],cl3 [18],cl3 [19],cl3 [20] ,cl3 [21]}; int crc16m = crc16(arr,1,0,036363,false); cl3 [22] =((unsigned char *)(& crc16m))[1]; cl3 [23] =((unsigned char *)(& crc16m))[0]; sak = new char [256]; sak_size = 256; for(int i = 0; i< 256; i ++){ sak =' 0'; } res = txrxBytes(h,cl3,24,sak,& sak_size,& us); printf('%d r n',res); printf('| SS:%d | r n',sak_size); for(int i = 0; i< sak_size; i ++){ printf('| s 0x%02hhx | r n',(unsigned char)sak ); } 结果我得到sak_size = 14个字节。我在控制台中将这些字节打印出来,它们100%正确吗?但是14个字节太少,这个“响应”甚至没有一些状态代码(9000或另一个)。 我在iso14443aPPS尝试了不同的2,4和8参数组合,但没有效果。 我应该怎么解决? #st25#st25r3911b-disco 以上来自于谷歌翻译 以下为原文
|
