/// <summary>
        /// Send the command to Rpleth
        /// </summary>
        /// <returns>True if it succesfull or false otherwise</returns>
        public override bool Work(Interface inter, Options option)
        {
            RplethReaderProvider           readerProvider   = new RplethReaderProvider();
            IRplethReaderUnit              readerUnit       = readerProvider.CreateReaderUnit() as IRplethReaderUnit;
            IRplethReaderUnitConfiguration readerUnitConfig = readerUnit.Configuration as IRplethReaderUnitConfiguration;

            readerUnitConfig.mode   = RplethMode.WIEGAND;
            readerUnitConfig.Length = 0;
            readerUnitConfig.offset = 0;

            IRplethDataTransport dt = readerUnit.DataTransport as IRplethDataTransport;

            dt.IpAddress = TargetIp;
            dt.port      = option.TargetPort;

            Console.WriteLine();
            try
            {
                if (readerUnit.ConnectToReader())
                {
                    if (struc.Ip != null)
                    {
                        Console.Write("Send IP: ");
                        readerUnit.SetReaderIp(struc.Ip);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Mac != null)
                    {
                        Console.Write("Send MAC: ");
                        readerUnit.SetReaderMac(struc.Mac);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Port != 0)
                    {
                        Console.Write("Send PORT: ");
                        readerUnit.SetReaderPort(struc.Port);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Subnet != null)
                    {
                        Console.Write("Send SUBNET: ");
                        readerUnit.SetReaderSubnet(struc.Subnet);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Gateway != null)
                    {
                        Console.Write("Send GATEWAY: ");
                        readerUnit.SetReaderGateway(struc.Gateway);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Dhcp != 3)
                    {
                        Console.Write("Send DHCP: ");
                        readerUnit.SetDhcpState(Convert.ToBoolean(struc.Dhcp));
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Message != String.Empty)
                    {
                        Console.Write("Send MESSAGE: ");
                        readerUnit.SetReaderDefaultMessage(struc.Message);
                        Console.WriteLine("DONE.");
                    }

                    if (option.reboot == 1)
                    {
                        Console.Write("Send REBOOT: ");
                        readerUnit.ResetReader();
                        Console.WriteLine("DONE.");
                    }

                    readerUnit.DisconnectFromReader();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(false);
            }
            return(true);
        }
        /// <summary>
        /// Send the command to Rpleth
        /// </summary>
        /// <returns>True if it succesfull or false otherwise</returns>
        public override bool Work(Interface inter, Options option)
        {
            RplethReaderProvider readerProvider = new RplethReaderProvider();
            IRplethReaderUnit readerUnit = readerProvider.CreateReaderUnit() as IRplethReaderUnit;
            IRplethReaderUnitConfiguration readerUnitConfig = readerUnit.Configuration as IRplethReaderUnitConfiguration;

            readerUnitConfig.mode = RplethMode.WIEGAND;
            readerUnitConfig.Length = 0;
            readerUnitConfig.offset = 0;

            IRplethDataTransport dt = readerUnit.DataTransport as IRplethDataTransport;
            dt.IpAddress = TargetIp;
            dt.port = option.TargetPort;

            Console.WriteLine();
            try
            {
                if (readerUnit.ConnectToReader())
                {
                    if (struc.Ip != null)
                    {
                        Console.Write("Send IP: ");
                        readerUnit.SetReaderIp(struc.Ip);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Mac != null)
                    {
                        Console.Write("Send MAC: ");
                        readerUnit.SetReaderMac(struc.Mac);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Port != 0)
                    {
                        Console.Write("Send PORT: ");
                        readerUnit.SetReaderPort(struc.Port);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Subnet != null)
                    {
                        Console.Write("Send SUBNET: ");
                        readerUnit.SetReaderSubnet(struc.Subnet);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Gateway != null)
                    {
                        Console.Write("Send GATEWAY: ");
                        readerUnit.SetReaderGateway(struc.Gateway);
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Dhcp != 3)
                    {
                        Console.Write("Send DHCP: ");
                        readerUnit.SetDhcpState(Convert.ToBoolean(struc.Dhcp));
                        Console.WriteLine("DONE.");
                    }

                    if (struc.Message != String.Empty)
                    {
                        Console.Write("Send MESSAGE: ");
                        readerUnit.SetReaderDefaultMessage(struc.Message);
                        Console.WriteLine("DONE.");
                    }

                    if (option.reboot == 1)
                    {
                        Console.Write("Send REBOOT: ");
                        readerUnit.ResetReader();
                        Console.WriteLine("DONE.");
                    }

                    readerUnit.DisconnectFromReader();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
            return true;
        }