コード例 #1
0
ファイル: Form1.cs プロジェクト: unqx/KursNetworks
        private void button2_Click(object sender, EventArgs e)
        {
            bool               prev         = PhysLayer.IsOpen();
            string             port         = PhysLayer.GetPortName();
            ConnectionSettings SettingsForm = new ConnectionSettings();

            SettingsForm.ShowDialog();

            // Чисто для прикола)))
            if (PhysLayer.IsOpen())
            {
                if (!prev)
                {
                    textBox1.Text += "Etsablished connection via " + PhysLayer.GetPortName() + " with parameters: speed = " + PhysLayer.GetSpeed() + "\r\n";
                }
                textBox1.SelectionStart = textBox1.TextLength;
                textBox1.ScrollToCaret();
            }

            else
            {
                if (prev)
                {
                    textBox1.Text += "Connection via " + port + " was dropped.\r\n";
                }
                textBox1.SelectionStart = textBox1.TextLength;
                textBox1.ScrollToCaret();
            }
        }
コード例 #2
0
        private void ConnectionSettings_Load(object sender, EventArgs e)
        {
            // Выключаем до выбора ком-порта
            button1.Enabled = false;
            button2.Enabled = false;

            //Сканим порты
            foreach (string port in PhysLayer.scanPorts())
            {
                PortBox.Items.Add(port);
            }


            if (!PhysLayer.IsOpen())
            {
                // Дефолтные значения параметров
                SpeedBox.SelectedIndex   = 4;
                BitBox.SelectedIndex     = 3;
                StopBitBox.SelectedIndex = 0;
                EvenBox.SelectedIndex    = 0;
            }

            else
            {
                DisableAllBoxes();
                button2.Enabled = true;

                SpeedBox.Text   = PhysLayer.GetSpeed();
                BitBox.Text     = PhysLayer.GetDataBits();
                PortBox.Text    = PhysLayer.GetPortName();
                StopBitBox.Text = PhysLayer.GetStopBits();
                EvenBox.Text    = PhysLayer.GetParity();
            }
        }
コード例 #3
0
ファイル: DataLink.cs プロジェクト: unqx/KursNetworks
        // Кадр для установления логического соединения с названием порта
        public static void EstablishConnection()
        {
            List <byte> f = new List <byte>();

            // делаем массив байтов для имени порта
            byte[] fBytes = Encoding.Default.GetBytes(PhysLayer.GetPortName());

            //побайтово кладем в массив
            foreach (byte b in fBytes)
            {
                f.Add(b);
            }

            byte[] a = pack('E', f.ToArray());
            a = DataLink.EncodeFrame(a);
            PhysLayer.Write(a);
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: unqx/KursNetworks
        private void ConnectionWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true)
            {
                if (PhysLayer.DsrSignal())
                {
                    label3.Invoke((MethodInvoker) delegate
                    {
                        label3.Text      = "Соединение активно";
                        label3.ForeColor = Color.Green;
                    });

                    UpdateButton.Invoke((MethodInvoker) delegate
                    {
                        if (!DataLink.FileRecieving && !DataLink.FileSending)
                        {
                            UpdateButton.Enabled = true;
                        }
                        else
                        {
                            UpdateButton.Enabled = false;
                        }
                    });

                    ActionLabel.Invoke((MethodInvoker) delegate
                    {
                        if (!DataLink.FileRecieving && !DataLink.FileSending)
                        {
                            ActionLabel.Text = "";
                        }
                    });

                    // Если есть соединение логическое, то пишем название порта к которому подключены
                    if (PhysLayer.PortReciever != "" && DataLink.Connection)
                    {
                        label1.Invoke((MethodInvoker) delegate
                        {
                            label1.Text = "Подключение через " + PhysLayer.GetPortName() + " к " + PhysLayer.PortReciever;
                        });
                    }
                    else
                    {
                        label1.Invoke((MethodInvoker) delegate
                        {
                            label1.Text = "Подключен к порту " + PhysLayer.GetPortName();
                        });

                        if (!DataLink.Connection)
                        {
                            DataLink.EstablishConnection();
                            DataLink.Connection = true;
                        }
                    }
                }
                else
                {
                    label3.Invoke((MethodInvoker) delegate
                    {
                        label3.Text      = "Соединение отсутствует";
                        label3.ForeColor = Color.Red;
                    });

                    UpdateButton.Invoke((MethodInvoker) delegate
                    {
                        UpdateButton.Enabled = false;
                    });

                    label1.Invoke((MethodInvoker) delegate
                    {
                        if (PhysLayer.IsOpen())
                        {
                            label1.Text = "Подключен к порту " + PhysLayer.GetPortName();
                        }
                        else
                        {
                            label1.Text = "Порт закрыт";
                        }
                    });

                    progressBar1.Invoke((MethodInvoker) delegate
                    {
                        progressBar1.Value = 0;
                    });

                    ActionLabel.Invoke((MethodInvoker) delegate
                    {
                        ActionLabel.Text = "";
                    });

                    DataLink.Connection    = false;
                    PhysLayer.PortReciever = "";
                }

                System.Threading.Thread.Sleep(1000);
            }
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: unqx/KursNetworks
        private void textBox1_DoubleClick(object sender, EventArgs e)
        {
            if (PhysLayer.IsOpen())
            {
                textBox1.Text += PhysLayer.GetDataBits() + " " + PhysLayer.GetSpeed() + " / " + PhysLayer.GetPortName() + "\r\n" + Convert.ToString(PhysLayer.DsrSignal());
            }

            else
            {
                textBox1.Text += "FALSE\r\n";
            }
        }