Skip to content

Commit d16974a

Browse files
committed
Update README.md
1 parent b14d74c commit d16974a

File tree

1 file changed

+80
-51
lines changed

1 file changed

+80
-51
lines changed

README.md

Lines changed: 80 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)