private void connectToHostAndBeginPlayback(bool reconnect = false)
        {
            for (int retries = 0; retries < 5; retries++)
            {
                networkConnection = new NetworkConnection(tbServerHost.Text.Trim(), Convert.ToInt32(tbServerPort.Text.Trim()));
                networkConnection.connectDone.WaitOne();

                if (networkConnection.connectionStatus != NetworkConnection.ConnectionStatus.Connected)
                {
                    Thread.Sleep(1000);
                }
                else
                {
                    break;
                }
            }

            if (networkConnection.connectionStatus == NetworkConnection.ConnectionStatus.Connected)
            {
                Encryption enc = new Encryption();

                string password = enc.Encrypt(tbPassword.Text);
                networkConnection.Login(string.Format("STARTDAT 00048 PS17,VERSION=6.6,PASSWORD={0} ENDDAT",
                    string.IsNullOrEmpty(password) ? string.Empty : password));
                networkConnection.loginDone.WaitOne();

                if (networkConnection.loginStatus == NetworkConnection.LoginStatus.LoggedIn)
                {
                   _scannerScreen = new ScannerScreen();
                   _scannerLog = new ScannerLog();

                    _startTime = DateTime.Now;
                    _timerCounter = DateTime.Now;
                    _timer.Start();
                    _timerSys.Start();

                }
                else
                {
                    Console.WriteLine(networkConnection._loginStatusMessage);

                    networkConnection.LogOut("STARTDAT 00026 PS05 ENDDAT");
                    networkConnection.logoutDone.WaitOne();

                    networkConnection.Close();
                    networkConnection.closeDone.WaitOne();
                }
            }
            else
            {
                listBox1.Items.Add(string.Format("{0} (SCANNER) {1}", DateTime.Now, networkConnection._connectionStatusMessage));
                listBox1.TopIndex = listBox1.Items.Count - 1;
            }
        }
        private void StopScanner()
        {
            _timer.Stop();
            _timerSys.Stop();

            if (_scannerScreen != null)
                _scannerScreen.Dispose();

            if (_scannerLog != null)
                _scannerLog.Dispose();

            if (networkConnection != null && networkConnection.connectionStatus == NetworkConnection.ConnectionStatus.Connected)
            {
                networkConnection.LogOut("STARTDAT 00026 PS05 ENDDAT");
                networkConnection.logoutDone.WaitOne();

                networkConnection.Close();
                networkConnection.closeDone.WaitOne();

                networkConnection = null;
            }

            btConnect.Text = "Connect";
        }
 private void btConnect_Click(object sender, EventArgs e)
 {
     if (networkConnection == null)
     {
         listBox1.Items.Add(string.Format("{0} (SCANNER) Connecting to ProScan server...", DateTime.Now));
         listBox1.TopIndex = listBox1.Items.Count - 1;
         Application.DoEvents();
         connectToHostAndBeginPlayback();
         if (networkConnection.connectionStatus == NetworkConnection.ConnectionStatus.Error)
         {
             listBox1.Items.Add(string.Format("{0} (SCANNER) Cannot connect to ProScan server", DateTime.Now));
             listBox1.TopIndex = listBox1.Items.Count - 1;
             networkConnection = null;
         }
         else
         {
             listBox1.Items.Add(string.Format("{0} (SCANNER) Starting scanner playback", DateTime.Now));
             listBox1.TopIndex = listBox1.Items.Count - 1;
             btConnect.Text = "Close";
         }
     }
     else
     {
         listBox1.Items.Add(string.Format("{0} (SCANNER) Stopping scanner playback", DateTime.Now));
         listBox1.TopIndex = listBox1.Items.Count - 1;
         StopScanner();
         saveListSystems();
         saveSettings();
     }
 }