@@ -37,10 +37,11 @@ usage example:
3737 using System;
3838 using System.Collections.Generic;
3939 using System.Linq;
40+ using System.Collections.ObjectModel;
4041 using System.Threading.Tasks;
4142
4243 namespace ElatecNetSampleApp
43- {
44+ {
4445 internal class Program
4546 {
4647 static async Task Main(string[] args)
@@ -52,65 +53,93 @@ usage example:
5253 BaseChip chip = new BaseChip();
5354
5455 await reader.BeepAsync(100, 1500, 500, 100);
56+ await reader.LedInitAsync();
57+ await reader.LedBlinkAsync(Leds.All, 100, 300);
58+
59+ await reader.SetTagTypesAsync(LFTagTypes.NOTAG, HFTagTypes.AllHFTags);
5560 chip = await reader.GetSingleChipAsync();
5661
57- Console.WriteLine("CardType: {0}, UID: {1}, Multitype: ", Enum.GetName(typeof(ChipType), chip.ChipType), chip.UIDHexString);
62+ if(chip != null)
63+ {
64+ Console.WriteLine("CardType: {0}, UID: {1}, Multitype: ", Enum.GetName(typeof(ChipType), chip.ChipType), chip.UIDHexString);
65+
66+ switch (chip.ChipType)
67+ {
68+ case ChipType.MIFARE:
69+
70+ Console.WriteLine("Play Melody? 1: Saints, 2: CamptownRaces");
71+ switch(Console.ReadLine())
72+ {
73+ case "1":
74+ await reader.PlayMelody(90, MySongs.OhWhenTheSaints);
75+ break;
76+ default:
77+ break;
78+
79+ }
80+
81+
82+ MifareChip mifareChip = (MifareChip)chip;
83+
84+ Console.WriteLine("\nFound: {0}\n", mifareChip.SubType);
85+
86+ switch (mifareChip.SubType & MifareChipSubType.DESFire)
87+ {
88+ case MifareChipSubType.DESFire:
89+ if(reader.IsTWN4LegicReader)
90+ {
91+ // undocumented in elatec's devkit (as of customersupport): if the Reader is a TWN4 Multitec with LEGIC capabilities.
92+ // SelectTag is not working. Instead, a SearchTag must be used. The SelectTag is then executed internally.
93+ if(reader.IsTWN4LegicReader)
94+ {
95+ await reader.SearchTagAsync();
96+ }
97+ }
98+ else
99+ {
100+ await reader.ISO14443A_SelectTagAsync(chip.UID);
101+ }
102+
103+ try
104+ {
105+ var appIDs = await reader.MifareDesfire_GetAppIDsAsync();
106+
107+ foreach (var appID in appIDs)
108+ {
109+ Console.WriteLine("Found AppID(s): {0}", appID.ToString("X8"));
110+ }
111+
112+ await reader.MifareDesfire_SelectApplicationAsync(0);
113+ await reader.MifareDesfire_CreateApplicationAsync(
114+ DESFireAppAccessRights.KS_DEFAULT,
115+ DESFireKeyType.DF_KEY_AES,
116+ 1,
117+ 0x3060);
118+ }
119+ catch (Exception e)
120+ {
121+ Console.WriteLine("\nErr: {0}\n", e.Message);
122+ }
123+ break;
124+ }
125+ Console.ReadLine();
126+ break;
127+
128+ default:
129+ Console.WriteLine("Chip Found: {0}", Enum.GetName(typeof(ChipType), chip.ChipType));
130+ Console.ReadLine();
131+ break;
132+ }
133+ }
58134
59- switch (chip.ChipType)
135+ else
60136 {
61- case ChipType.MIFARE:
62-
63- await reader.PlayMelody(120, MySongs.OhWhenTheSaints);
64- await reader.LedBlinkAsync(Leds.Green, 500, 500);
65-
66- MifareChip mifareChip = (MifareChip)chip;
67-
68- Console.WriteLine("\nFound: {0}\n", mifareChip.SubType);
69-
70- switch (mifareChip.SubType)
71- {
72- case MifareChipSubType.DESFireEV1_256:
73- case MifareChipSubType.DESFireEV1_2K:
74- case MifareChipSubType.DESFireEV1_4K:
75- case MifareChipSubType.DESFireEV1_8K:
76- if(reader.IsTWN4LegicReader)
77- {
78- // undocumented in elatec's devkit (as customersupport said): if the reader is a TWN4 Multitec with LEGIC capabilities,
79- // SelectTag is not working. Instead, a SearchTag must be used. The SelectTag is then executed internally.
80- await reader.SearchTagAsync();
81- }
82- else
83- {
84- await reader.ISO14443A_SelectTagAsync(chip.UID);
85- }
86-
87- await reader.MifareDesfire_SelectApplicationAsync(0);
88- await reader.MifareDesfire_CreateApplicationAsync(
89- DESFireAppAccessRights.KS_DEFAULT,
90- DESFireKeyType.DF_KEY_AES,
91- 1,
92- 0x3060);
93-
94- var appIDs = await reader.MifareDesfire_GetAppIDsAsync();
95-
96- foreach(var appID in appIDs)
97- {
98- Console.WriteLine("\nFound AppID(s): {0}\n", appID.ToString("X8"));
99- }
100- break;
101- }
102-
103- break;
104-
105- default:
106- Console.WriteLine("Chip Found: {0}", Enum.GetName(typeof(ChipType), chip.ChipType));
107- break;
137+ await reader.DisconnectAsync();
108138 }
109139 }
110140 }
111141 }
112142
113-
114143 static class MySongs
115144 {
116145 public static List<TWN4ReaderDevice.Tone> OhWhenTheSaints
0 commit comments