@@ -17,6 +17,7 @@ byte TA2, TB2, TC2, TD2;
17
17
byte TA3, TB3, TC3, TD3 ;
18
18
byte TCK, T ;
19
19
String historicals_caracters;
20
+ char buf[8 ];
20
21
21
22
bool isntCardPresente = digitalRead(PRES); // Variable de détection de la présence de la carte : carte présente = 0 & carte absente = 1
22
23
@@ -123,13 +124,29 @@ byte stringToByte(String stb) {
123
124
return b;
124
125
}
125
126
126
- String transmitAPDU_T0 (String apdu) {
127
-
128
- String sub;
129
- char buf[2 ];
127
+ void transmitAPDU_T0 (char * apdu, uint8_t ln) {
130
128
131
129
pinMode (TX, OUTPUT);
132
130
serialCard.stopListening ();
131
+ for (int i = 0 ; i < ln; i ++){
132
+
133
+ serialCard.write_8E2 (apdu[i]);
134
+
135
+ }
136
+ pinMode (TX, INPUT);
137
+ }
138
+
139
+ /* String transmitAPDU_T0(String apdu) {
140
+
141
+
142
+
143
+
144
+
145
+ //String sub;
146
+ //char buf[2];
147
+
148
+ //pinMode(TX, OUTPUT);
149
+ //serialCard.stopListening();
133
150
for(int i = 0; i < apdu.length()+1; i += 2){
134
151
sub = apdu.substring(i, i+1);
135
152
sub.toCharArray(buf, 2);
@@ -144,7 +161,7 @@ String transmitAPDU_T0(String apdu) {
144
161
145
162
146
163
}
147
-
164
+ */
148
165
149
166
150
167
@@ -179,6 +196,7 @@ void card_activate () {
179
196
pinMode (CLK, OUTPUT);
180
197
pinMode (RX, INPUT_PULLUP);
181
198
pinMode (TX, INPUT_PULLUP);
199
+
182
200
delay (1 );
183
201
digitalWrite (RST, HIGH);
184
202
serialCard.stopListening ();
@@ -239,6 +257,7 @@ void loop() {
239
257
240
258
card_activate ();
241
259
260
+
242
261
// récup de l'ATR
243
262
String ATR = read_response ();
244
263
Serial.println (" ATR = " + ATR);
@@ -275,19 +294,29 @@ void loop() {
275
294
Serial.println (TCK, HEX);
276
295
Serial.print (" Protocole T = " );
277
296
Serial.println (T, DEC);
278
-
297
+
279
298
// Envoi première commande
280
299
// String First_Com = "00A4040C020520";
281
- String First_Com = " 00A40000023F00" ;
282
- String First_response = transmitAPDU_T0 (First_Com);
283
- Serial.println (First_response);
284
-
300
+ // String First_Com = "00A40000023F00";
301
+ // String First_response = transmitAPDU_T0(First_Com);
302
+ // Serial.println(First_response);
303
+
304
+ buf[0 ] = 0x00 ;
305
+ buf[1 ] = 0xA4 ;
306
+ buf[2 ] = 0x00 ;
307
+ buf[3 ] = 0x00 ;
308
+ buf[4 ] = 0x02 ;
309
+ buf[5 ] = 0x3F ;
310
+ buf[6 ] = 0x00 ;
311
+ transmitAPDU_T0 (buf,7 );
312
+
313
+ /*
285
314
Serial.println(F_CPU);
286
315
uint16_t bit_delay = (F_CPU / 10753) / 4;
287
316
Serial.println(bit_delay);
288
317
uint16_t _tx_delay = bit_delay - 15/4 ;
289
318
Serial.println(_tx_delay);
290
-
319
+ */
291
320
292
321
while (!isntCardPresente) {
293
322
isntCardPresente = digitalRead (PRES);
0 commit comments