private static void Console_Execute_ReadReaderID(DocInterfaceControl _docIntControl) { //First make sure DocInterfaceControl is initialized if (_docIntControl != null) { if (_docIntControl.IsInitialized) { try { //Call ReadReaderID and show result (no "thread" function available for this call. Should not block for a long time) var readerID = _docIntControl.ReadReaderID(); if (readerID != null) { Console.WriteLine(""); Console.WriteLine("ReaderID:"); Console.WriteLine(readerID.ToString()); } } catch { Console.WriteLine("Exception"); } } else { Console.WriteLine("DocInterfaceControl not initialized!"); } } }
private static void Console_Execute_GetSensor(DocInterfaceControl _docIntControl) { //First make sure DocInterfaceControl is initialized if (_docIntControl != null) { if (_docIntControl.IsInitialized) { Console.WriteLine(""); docOperationCompleted = false; //Start "GetSensor" process // SensorType --> 0xFC = scan all TELID® types // RepeatCount --> 5 (search for transponder 5 times) // DelayBetweenSearchs --> 0 (ms to wait between each search) // NotifySuccessOnly --> false (raise "DocResultChanged" event even if no transponder found) _docIntControl.StartGetSensorData(0xFC, 5, 0, false); //For demo purposes, just wait blocking execution until DOC process is completed (notified using "DocResultChanged" event, ProcessFinished = true) while (!docOperationCompleted) { Thread.Sleep(100); } Console.WriteLine(""); } else { Console.WriteLine("DocInterfaceControl not initialized!"); } } }
private static bool Console_ExecuteAndContinue(DocInterfaceControl _docIntControl) { //Main Console MENU Console.WriteLine(""); Console.WriteLine("--------------------"); Console.WriteLine(" Console MENU"); Console.WriteLine("--------------------"); Console.WriteLine("0 - ReadReaderID"); Console.WriteLine("1 - GetSensor"); Console.WriteLine("X - EXIT"); Console.Write("Selection (confirm with ENTER): "); string operationNumTxt = Console.ReadLine(); switch (operationNumTxt) { case "0": Console.WriteLine("\tReadReaderID"); Console_Execute_ReadReaderID(_docIntControl); break; case "1": Console.WriteLine("\tGetSensor"); Console_Execute_GetSensor(_docIntControl); break; case "X": case "x": return(false); default: break; } Thread.Sleep(500); return(true); }
private static void Console_Execute_ReadBytes(DocInterfaceControl _docIntControl) { //ReadBytes function needs a Tag ID as parameter --> Obtained using "Identify" if (m_LastTagID == null) { Console.WriteLine("Perform \"Identify\" until a transponder is found before calling ReadBytes"); return; } //First make sure DocInterfaceControl is initialized if (_docIntControl != null) { if (_docIntControl.IsInitialized) { Console.WriteLine(""); Console.WriteLine("Reading 16 Bytes from position 0 (for UHF using page 3)"); docOperationCompleted = false; //Start "ReadBytes" process // TagID --> m_LastTagID (contains TagID found in last call to Identify) // Page --> 3 (for HF tags not needed, for UHF page 3 is user-block) // From --> 0 (first byte in memory) // Length --> 16 (Bytes 0 - 15 will be read) _docIntControl.StartReadBytes(m_LastTagID, 3, 0, 16); //For demo purposes, just wait blocking execution until DOC process is completed (notified using "DocResultChanged" event, ProcessFinished = true) while (!docOperationCompleted) { Thread.Sleep(100); } Console.WriteLine(""); } else { Console.WriteLine("DocInterfaceControl not initialized!"); } } }
private async void ButtonInitialize_ClickAsync(object sender, RoutedEventArgs e) { if (m_DocInterface != null) { //First dispose previous instance m_DocInterface.Terminate(); m_DocInterface = null; } //Get Interface parameters and initialize class try { //Port type --> Get from UI // 0 = Serial // 2 = Bluetooth // 4 = USB byte portType = 4; //Default USB if (radioButtonInitialize_PortSerial.IsChecked.Value) { portType = 0; } if (radioButtonInitialize_PortBt.IsChecked.Value) { portType = 2; } var readerPortSettings = InterfaceCommunicationSettings.GetForSerialDevice(portType, textBoxInitialize_PortName.Text); //Interface Type --> 1356 = 13.56MHz (HF) //Initialize class. Then call "initialize" m_DocInterface = new DocInterfaceControl(readerPortSettings, 1356); //Initialize textBlockInitialize_ParamInterfaceType.Text = "InterfaceType: 1356"; textBlockInitialize_ParamPortType.Text = "PortType: " + portType; textBlockInitialize_ParamPortName.Text = "PortName: " + textBoxInitialize_PortName.Text; textBlock_ReaderInfo.Text = "Calling Initialize"; if (await m_DocInterface.InitializeAsync()) { //Initialize worked --> Enable UI & enable BackgroundWorker to check Reader-ID textBlock_ReaderInfo.Text = "Initialize Result: True"; if (m_Worker.IsBusy != true) { // Start the asynchronous operation. m_Worker.RunWorkerAsync(); } } else { //Initialize didn't work --> disable UI SetUiEnabled(false, 0); textBlock_ReaderInfo.Text = "Initialize Result: False"; } } catch { //TODO catch exception & notify } }
static async System.Threading.Tasks.Task MainAsync(string[] args) { Console.WriteLine(".NETCore Console"); Console.WriteLine("SampleAsync_C#"); Console.WriteLine("--------------------"); Console.WriteLine("Library Version: " + iIDReaderLibrary.Version.LibraryVersion); //Get DocInterfaceControl instance DocInterfaceControl docIntControl = await Console_InitializeDocInterfaceControlAsync(); if (docIntControl != null) { //DocInterfaceControl is initialized Console.WriteLine(""); Console.Write("Detecting reader.."); while (true) { //First of all, get the Reader Information Console.Write("."); var readerID = await docIntControl.ReadReaderIDAsync(); if (readerID != null) { Console.WriteLine(""); Console.WriteLine("Detected Reader:"); Console.WriteLine(readerID.ToString()); break; } } //Reader info obtained --> execute functions using menu Console.WriteLine(""); while (await Console_ExecuteAndContinueAsync(docIntControl)) { ; } docIntControl.Terminate(); Console.WriteLine(""); Console.Write("EXITING in 5"); Thread.Sleep(1000); Console.Write(", 4"); Thread.Sleep(1000); Console.Write(", 3"); Thread.Sleep(1000); Console.Write(", 2"); Thread.Sleep(1000); Console.Write(", 1"); Thread.Sleep(1000); } else { Console.Write("Initialization error <press ENTER to exit>"); Console.ReadLine(); } m_Completed = true; }
private static void Console_Execute_Identify(DocInterfaceControl _docIntControl) { m_LastTagID = null; //First make sure DocInterfaceControl is initialized if (_docIntControl != null) { if (_docIntControl.IsInitialized) { try { DateTime startTime = DateTime.UtcNow; //Call Identify and show result var tagScanInfo = _docIntControl.Identify(); TimeSpan processSpan = DateTime.UtcNow - startTime; if (tagScanInfo != null) { Console.WriteLine(""); Console.WriteLine("IdentifyResult:"); Console.WriteLine(tagScanInfo.ToString()); Console.WriteLine(string.Format("(Duration: {0})", processSpan)); //TagScanInfo can be either HfScanResultInfo (for HF scan) or UhfScanResultInfo (for UHF scan). // check type to obtain TagID and save it into global variable to be used by ReadBytes/WriteBytes if (tagScanInfo is HfScanResultInfo) { m_LastTagID = (tagScanInfo as HfScanResultInfo).TagID; } if (tagScanInfo is UhfScanResultInfo) { //For UHF more than one TAG can be found at once. For demo purposes select first TagID var uhfScan = (tagScanInfo as UhfScanResultInfo); if (uhfScan != null) { if (uhfScan.TagInfoList.Count > 0) { m_LastTagID = uhfScan.TagInfoList[0].UII.UII; } } } } else { //Update result in UI Console.WriteLine(string.Format("Result: FAIL. Duration: {0}", processSpan)); } } catch { Console.WriteLine("Exception"); } } else { Console.WriteLine("DocInterfaceControl not initialized!"); } } }
private static DocInterfaceControl Console_InitializeDocInterfaceControl() { Console.WriteLine("== Select initialize parameters =="); //Get PortType int portType = Console_InitializePortType(); string portName = ""; switch (portType) { case 0: case 2: //For Serial & bluetooth, PortName needed. portName = Console_InitializePortName(); break; } //Initialize InterfaceCommunicationSettings class var readerPortSettings = InterfaceCommunicationSettings.GetForSerialDevice(portType, portName); //InterfaceType = 13.56MHz for TELID®200 int interfaceType = 1356; //Parameters selected --> Initialize class instance Console.WriteLine(""); DocInterfaceControl result = new DocInterfaceControl(readerPortSettings, interfaceType); Console.WriteLine(string.Format("Selected parameters: PortType: {0} | PortName: {1} | IntType: {2}", portType, portName, interfaceType)); //Call initialize to open the communication port result.InitializeCompleted += DocInterfaceControl_InitializeCompleted; result.StartInitialize(); Console.Write("Initializing..."); //For demo purposes, just wait blocking execution until "Initialize" process is completed (notified using "InitializeCompleted" event) while (!initializeCompleted) //Alternative, call "IsInitializing" { Thread.Sleep(100); Console.Write("."); } Console.WriteLine(""); if (result.IsInitialized) { Console.WriteLine("\tInitialized"); result.DocResultChanged += DocInterfaceControl_DocResultChanged; return(result); } else { //Initialization failed: Terminate class instance & try again Console.WriteLine("\tInitialize failed"); result.Terminate(); return(Console_InitializeDocInterfaceControl()); } }
static void Main(string[] args) { Console.WriteLine(".NETCore Console"); Console.WriteLine("SampleThreads_C#"); Console.WriteLine("--------------------"); Console.WriteLine("Library Version: " + iIDReaderLibrary.Version.LibraryVersion); //Get DocInterfaceControl instance DocInterfaceControl docIntControl = Console_InitializeDocInterfaceControl(); if (docIntControl != null) { //DocInterfaceControl is initialized Console.WriteLine(""); Console.Write("Detecting reader.."); while (true) { //First of all, get the Reader Information Console.Write("."); var readerID = docIntControl.ReadReaderID(); if (readerID != null) { Console.WriteLine(""); Console.WriteLine("Detected Reader:"); Console.WriteLine(readerID.ToString()); break; } } //Reader info obtained --> execute functions using menu Console.WriteLine(""); while (Console_ExecuteAndContinue(docIntControl)) { Thread.Sleep(500); } docIntControl.Terminate(); Console.WriteLine(""); Console.Write("EXITING in 5"); Thread.Sleep(1000); Console.Write(", 4"); Thread.Sleep(1000); Console.Write(", 3"); Thread.Sleep(1000); Console.Write(", 2"); Thread.Sleep(1000); Console.Write(", 1"); Thread.Sleep(1000); } }
private static void Console_Execute_ReadBytes(DocInterfaceControl _docIntControl) { //ReadBytes function needs a Tag ID as parameter --> Obtained using "Identify" if (m_LastTagID == null) { Console.WriteLine("Perform \"Identify\" until a transponder is found before calling ReadBytes"); return; } //First make sure DocInterfaceControl is initialized if (_docIntControl != null) { if (_docIntControl.IsInitialized) { try { Console.WriteLine(""); Console.WriteLine("Reading 16 Bytes from position 0 (for UHF using page 3)"); DateTime startTime = DateTime.UtcNow; //Call ReadBytes and show result // TagID --> m_LastTagID (contains TagID found in last call to Identify) // Page --> 3 (for HF tags not needed, for UHF page 3 is user-block) // From --> 0 (first byte in memory) // Length --> 16 (Bytes 0 - 15 will be read) var readResult = _docIntControl.ReadBytes(m_LastTagID, 3, 0, 16); TimeSpan processSpan = DateTime.UtcNow - startTime; if (readResult != null) { Console.Write("Data read:"); Console.WriteLine(BitConverter.ToString(readResult)); Console.WriteLine(string.Format("(Duration: {0})", processSpan)); } else { //Update result in UI Console.WriteLine(string.Format("Result: FAIL. Duration: {0}", processSpan)); } } catch { Console.WriteLine("Exception"); } } else { Console.WriteLine("DocInterfaceControl not initialized!"); } } }
private static void Console_Execute_WriteBytes(DocInterfaceControl _docIntControl) { //WriteBytes function needs a Tag ID as parameter --> Obtained using "Identify" if (m_LastTagID == null) { Console.WriteLine("Perform \"Identify\" until a transponder is found before calling WriteBytes"); return; } //First make sure DocInterfaceControl is initialized if (_docIntControl != null) { if (_docIntControl.IsInitialized) { try { Console.WriteLine(""); Console.WriteLine("Writing \"00-11-22-33-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF\" from position 0 (for UHF using page 3)"); byte[] toWrite = new byte[] { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; DateTime startTime = DateTime.UtcNow; //Call WriteBytes and show result // TagID --> m_LastTagID (contins first TagID found in last call to Identify) // Page --> 3 (for HF tags not needed, for UHF page 3 is user-block) // From --> 0 (first byte in memory) // Data --> "toWrite" array containing the data to be written // Lock --> false (memory address will not be locked. Lock process is not reversible) if (_docIntControl.WriteBytes(m_LastTagID, 3, 0, toWrite, false)) { Console.WriteLine("Data written successfully"); Console.WriteLine(string.Format("(Duration: {0})", DateTime.UtcNow - startTime)); } else { Console.WriteLine("\tNOT WRITTEN"); Console.WriteLine(string.Format("Result: FAIL. Duration: {0}", DateTime.UtcNow - startTime)); } } catch { Console.WriteLine("Exception"); } } else { Console.WriteLine("DocInterfaceControl not initialized!"); } } }
private void ButtonInitialize_Click(object sender, RoutedEventArgs e) { if (m_DocInterface != null) { //First dispose previous instance m_DocInterface.Terminate(); m_DocInterface = null; } //Get Interface parameters and initialize class try { //Port type --> Get from UI // 0 = Serial // 2 = Bluetooth // 4 = USB byte portType = 4; //Default USB if (radioButtonInitialize_PortSerial.IsChecked.Value) { portType = 0; } if (radioButtonInitialize_PortBt.IsChecked.Value) { portType = 2; } var readerPortSettings = InterfaceCommunicationSettings.GetForSerialDevice(portType, textBoxInitialize_PortName.Text); //Interface Type --> 1356 = 13.56MHz (HF) //Initialize class. Then call "initialize" m_DocInterface = new DocInterfaceControl(readerPortSettings, 1356); //Initialize textBlockInitialize_ParamInterfaceType.Text = "InterfaceType: 1356"; textBlockInitialize_ParamPortType.Text = "PortType: " + portType; textBlockInitialize_ParamPortName.Text = "PortName: " + textBoxInitialize_PortName.Text; m_DocInterface.InitializeCompleted += DocInterface_InitializeCompleted; m_DocInterface.DocResultChanged += DocInterface_DocResultChanged; textBlock_ReaderInfo.Text = "Calling Initialize"; m_DocInterface.StartInitialize(); } catch { //TODO catch exception & notify } }
private static bool Console_ExecuteAndContinue(DocInterfaceControl _docIntControl) { //Main Console MENU Console.WriteLine(""); Console.WriteLine("--------------------"); Console.WriteLine(" Console MENU"); Console.WriteLine("--------------------"); Console.WriteLine("0 - ReadReaderID"); Console.WriteLine("1 - Identify"); Console.WriteLine("2 - ReadBytes"); Console.WriteLine("3 - WriteBytes"); Console.WriteLine("X - EXIT"); Console.Write("Selection (confirm with ENTER): "); string operationNumTxt = Console.ReadLine(); switch (operationNumTxt) { case "0": Console.WriteLine("\tReadReaderID"); Console_Execute_ReadReaderID(_docIntControl); break; case "1": Console.WriteLine("\tIdentify"); Console_Execute_Identify(_docIntControl); break; case "2": Console.WriteLine("\tReadBytes"); Console_Execute_ReadBytes(_docIntControl); break; case "3": Console.WriteLine("\tWriteBytes"); Console_Execute_WriteBytes(_docIntControl); break; case "X": case "x": return(false); default: break; } return(true); }
private static async System.Threading.Tasks.Task <DocInterfaceControl> Console_InitializeDocInterfaceControlAsync() { Console.WriteLine("== Select initialize parameters =="); //Get PortType int portType = Console_InitializePortType(); string portName = ""; switch (portType) { case 0: case 2: //For Serial & bluetooth, PortName needed. portName = Console_InitializePortName(); break; } //Initialize InterfaceCommunicationSettings class var readerPortSettings = InterfaceCommunicationSettings.GetForSerialDevice(portType, portName); //InterfaceType = 13.56MHz for TELID®200 int interfaceType = 1356; //Parameters selected --> Initialize class instance Console.WriteLine(""); DocInterfaceControl result = new DocInterfaceControl(readerPortSettings, interfaceType); Console.WriteLine(string.Format("Selected parameters: PortType: {0} | PortName: {1} | IntType: {2}", portType, portName, interfaceType)); Console.WriteLine("Initializing..."); //Call initialize to open the communication port try { if (await result.InitializeAsync()) { Console.WriteLine("\tInitialized"); return(result); } else { //Initialization failed: Terminate class instance & try again Console.WriteLine("\tInitialize failed"); result.Terminate(); return(await Console_InitializeDocInterfaceControlAsync()); } } catch { } return(null); }
private static void Console_Execute_ReadReaderID(DocInterfaceControl _docIntControl) { //First make sure DocInterfaceControl is initialized if (_docIntControl != null) { if (_docIntControl.IsInitialized) { try { DateTime startTime = DateTime.UtcNow; //Call ReadReaderID and show result var readerID = _docIntControl.ReadReaderID(); TimeSpan processSpan = DateTime.UtcNow - startTime; if (readerID != null) { Console.WriteLine(""); Console.WriteLine("ReaderID:"); Console.WriteLine(readerID.ToString()); Console.WriteLine(string.Format("(Duration: {0})", processSpan)); } else { //Update result in UI Console.WriteLine(string.Format("Result: FAIL. Duration: {0}", processSpan)); } } catch { Console.WriteLine("Exception"); } } else { Console.WriteLine("DocInterfaceControl not initialized!"); } } }
private static void Console_Execute_WriteBytes(DocInterfaceControl _docIntControl) { //WriteBytes function needs a Tag ID as parameter --> Obtained using "Identify" if (m_LastTagID == null) { Console.WriteLine("Perform \"Identify\" until a transponder is found before calling WriteBytes"); return; } //First make sure DocInterfaceControl is initialized if (_docIntControl != null) { if (_docIntControl.IsInitialized) { Console.WriteLine(""); Console.WriteLine("Writing \"00-11-22-33-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF\" from position 0 (for UHF using page 3)"); byte[] toWrite = new byte[] { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; docOperationCompleted = false; //Start WriteBytes // TagID --> m_LastTagID (contins first TagID found in last call to Identify) // Page --> 3 (for HF tags not needed, for UHF page 3 is user-block) // From --> 0 (first byte in memory) // Data --> "toWrite" array containing the data to be written _docIntControl.StartWriteBytes(m_LastTagID, 3, 0, toWrite); //For demo purposes, just wait blocking execution until DOC process is completed (notified using "DocResultChanged" event, ProcessFinished = true) while (!docOperationCompleted) { Thread.Sleep(100); } Console.WriteLine(""); } else { Console.WriteLine("DocInterfaceControl not initialized!"); } } }
private static async System.Threading.Tasks.Task Console_Execute_GetSensorAsync(DocInterfaceControl _docIntControl) { //First make sure DocInterfaceControl is initialized if (_docIntControl != null) { if (_docIntControl.IsInitialized) { try { //This function blocks & searches for a default time of 1 second (optional parameter) DateTime startTime = DateTime.UtcNow; //GetSensor --> Search for TELID® transponders var getSensorResult = await _docIntControl.GetSensorDataAsync(0xFC); //0xFC = scan all TELID® types TimeSpan processSpan = DateTime.UtcNow - startTime; if (getSensorResult != null) { Console.WriteLine(""); Console.WriteLine("SensorResult:"); Console.WriteLine(string.Format("SerNo: {0}", getSensorResult.SerialNumber)); Console.WriteLine(string.Format("Description: {0}", getSensorResult.Description)); Console.WriteLine("Measurements:"); foreach (var meas in getSensorResult.Measurements) { Console.WriteLine(string.Format("\tTimestamp: {0}", meas.Timestamp)); Console.WriteLine("\tValues:"); foreach (var value in meas.Values) { Console.WriteLine(string.Format("\t {0}{1}{2}", value.Symbol, value.Magnitude, value.Unit)); } } Console.WriteLine(string.Format("(Duration: {0})", processSpan)); } else { //Update result in UI Console.WriteLine(string.Format("Result: FAIL. Duration: {0}", processSpan)); } } catch { Console.WriteLine("Exception"); } } else { Console.WriteLine("DocInterfaceControl not initialized!"); } } }
private static async System.Threading.Tasks.Task <bool> Console_ExecuteAndContinueAsync(DocInterfaceControl _docIntControl) { //Main Console MENU Console.WriteLine(""); Console.WriteLine("--------------------"); Console.WriteLine(" Console MENU"); Console.WriteLine("--------------------"); Console.WriteLine("0 - ReadReaderID"); Console.WriteLine("1 - Identify"); Console.WriteLine("2 - ReadBytes"); Console.WriteLine("3 - WriteBytes"); Console.WriteLine("X - EXIT"); Console.Write("Selection (confirm with ENTER): "); string operationNumTxt = Console.ReadLine(); switch (operationNumTxt) { case "0": Console.WriteLine("\tReadReaderID"); await Console_Execute_ReadReaderIDAsync(_docIntControl); break; case "1": Console.WriteLine("\tIdentify"); await Console_Execute_IdentifyAsync(_docIntControl); break; case "2": Console.WriteLine("\tReadBytes"); await Console_Execute_ReadBytesAsync(_docIntControl); break; case "3": Console.WriteLine("\tWriteBytes"); await Console_Execute_WriteBytesAsync(_docIntControl); break; case "X": case "x": return(false); default: break; } Thread.Sleep(500); return(true); }