override public bool Connect(string ip, ref string errorMessage)
        {
            try
            {
                if (Connected)
                {
                    if (!Disconnect(ref errorMessage))
                    {
                        return(false);
                    }
                }

                reader = new ReaderAccessor(ip);

                if (reader.Connect())
                {
                    ipOrComport = ip;
                    Connected   = true;
                    return(true);
                }
                else
                {
                    errorMessage = String.Concat("連線失敗, IP : ", ip, ", ErrorCode : ", reader.LastErrorInfo.ToString());
                    return(false);
                }
            }
            catch (Exception ex)
            {
                errorMessage = String.Concat("連線失敗 : ", ex.ToString());
                return(false);
            }
        }
 /// <summary>
 /// 條碼讀取器連線,傳入條件:1.liveviewForm物件、2.readerAccessor物件、3.讀取器IP
 /// 回傳:成功:true、失敗:false
 /// </summary>
 /// <param name="liveviewForm">liveviewForm物件</param>
 /// <param name="readerAccessor">readerAccessor物件</param>
 /// <param name="ip">讀取器IP</param>
 /// <returns></returns>
 public static bool ReadConnect(LiveviewForm liveviewForm, ReaderAccessor readerAccessor, string ip)
 {
     liveviewForm.EndReceive();
     liveviewForm.IpAddress = readerAccessor.IpAddress = ip;
     liveviewForm.BeginReceive();
     return(readerAccessor.Connect());
 }
        private void upload_Click(object sender, EventArgs e)
        {
            openFileDialog1.Title       = "Select a CONFIG file.";
            openFileDialog1.Multiselect = true;
            openFileDialog1.FileName    = "";
            openFileDialog1.Filter      = "(*.PTC*,*.LUA)|*.PTC;*.LUA";

            if (LiveViewReaderList.SelectedItem == null)
            {
                return;
            }

            if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
            {
                string         key    = LiveViewReaderList.SelectedItem.ToString();
                ReaderAccessor reader = new ReaderAccessor(getSearchResultFromKey(key).IpAddress);
                reader.OpenFtp();

                foreach (string filePath in openFileDialog1.FileNames)
                {
                    if (Path.GetExtension(filePath) == ".PTC")
                    {
                        reader.PutFile((filePath), @"CONFIG\" + Path.GetFileName(filePath));
                    }
                    else if (Path.GetExtension(filePath) == ".LUA")
                    {
                        reader.PutFile((filePath), @"LUA\" + Path.GetFileName(filePath));
                    }
                }
                reader.CloseFtp();
            }
        }
        private void getAllFilesInSrFolder(ReaderAccessor reader, string srcFolder, string dstFolder)
        {
            List <string> fileList = reader.GetFileList(srcFolder);

            if (fileList != null)
            {
                foreach (string fileName in fileList)
                {
                    reader.GetFile(srcFolder + "\\" + fileName, dstFolder + "\\" + fileName);
                }
            }
        }
        static void Main(string[] args)
        {
            ReaderAccessor m_reader   = new ReaderAccessor();
            ReaderSearcher m_searcher = new ReaderSearcher();

            //LER ARGUMENTO
            try
            {
                string CodConfig = args[0].ToString();
                string Ipconfig  = args[1].ToString();
                //string CodConfig = "123456";
                //string Ipconfig = "192.168.100.1";

                string codComparacao = CodConfig;//Codigo de comparação
                Console.WriteLine("Enviar codigo para camera: " + codComparacao);

                //CONECTAR COM A CAMERA
                try
                {
                    //Stop liveview.
                    // liveviewForm1.EndReceive();
                    //Set ip address of liveview.
                    //liveviewForm1.IpAddress = Ipconfig;
                    ////Start liveview.
                    //liveviewForm1.BeginReceive();
                    ////Set ip address of ReaderAccessor.
                    m_reader.IpAddress = Ipconfig;
                    //Connect TCP/IP.
                    m_reader.Connect((data) =>
                    {
                        //Define received data actions here.Defined actions work asynchronously.
                        //"ReceivedDataWrite" works when reading data was received.
                        //BeginInvoke(new delegateUserControl(ReceivedDataWrite), Encoding.ASCII.GetString(data));
                    });

                    //TRANSFORMAR CODIGO E ENVIAR
                    try
                    {
                        //transf string em hex
                        codComparacao = toHex(CodConfig);
                        // Mandar código de comparacao
                        ReceivedDataWrite(m_reader.ExecCommand("WP,402," + codComparacao));
                        ReceivedDataWrite(m_reader.ExecCommand("SAVE"));
                        Console.WriteLine(String.Format("Código enviado..."));
                    }

                    catch (Exception ex2)
                    {
                        Console.WriteLine(String.Format("Não foi possível enviar o código de comparação!  Erro {0}/r/n", ex2.Message));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(String.Format("Falha na comunicação!  Erro {0}/r/n", ex.Message));
                }
            }
            catch
            {
                Console.WriteLine(String.Format("Não há argumento para alterar o código!  Erro {0}/r/n"));
            }

            //FECHAR PORTA
            m_reader.CloseFtp();
            //Console.Clear();

            //Console.ReadKey();
        }
 /// <summary>
 /// 條碼讀取器關閉,傳入條件:1.liveviewForm物件、2.readerAccessor物件
 /// </summary>
 /// <param name="liveviewForm">liveviewForm物件</param>
 /// <param name="readerAccessor">readerAccessor物件</param>
 public static void ReadClose(LiveviewForm liveviewForm, ReaderAccessor readerAccessor)
 {
     liveviewForm.EndReceive();
     readerAccessor.Dispose();
 }