示例#1
0
 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);
        }
示例#4
0
 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
            }
        }
示例#6
0
        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;
        }
示例#7
0
 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());
            }
        }
示例#9
0
        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);
            }
        }
示例#10
0
 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!");
         }
     }
 }
示例#11
0
 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
            }
        }
示例#13
0
        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);
        }
示例#14
0
        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!");
         }
     }
 }
示例#16
0
 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!");
         }
     }
 }
示例#17
0
        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);
        }