嗨!
我使用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
以上来自于谷歌翻译
以下为原文
- Hi!
- I working with ST25R3911DiscoComm.dll and writing in C/C++.
- 1. I sending 9370 and 9570 same as in your iso14443a_select_by_uid.py.
- All is OK with them, both returns 0.
- 2. Next RATS:
- char *rxRats = new char[1024];
- for (int i = 0; i < 1024; i++) {
- rxRats = '