none
Recebendo dados de Porta Serial (COM1) RRS feed

  • Pergunta

  • Boa Tarde!

    Estou tentando ler dados de uma porta Serial COM1 com C# porém não estou recebendo nada utilizando a classe "System.IO.Ports.SerialPort".

    Utilizando os programas putty e o HypperTerminal eu consigo receber os dados sem problema, porém em C# com a classe "System.IO.Ports.SerialPort" eu não recebo nenhum dado. Já tentei os comandos ReadLine(), Read(), ReadByte() porém não recebo nada. Seguem o trecho de código e os prints do putty e HyperTerminal:

    Obs.: O dispositivo ao qual estou me conectando é uma Central Impacta 140 da Intelbras e ela não espera nenhuma comando para o envio dos dados, ela simplesmente dispara os alertas de chamada dos ramais.


    SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
    
            public Form1()
            {
                InitializeComponent();
    
                serialPort.Open();
    
                backgroundWorker1.RunWorkerAsync();
            }
    
            private void Form1_FormClosed(object sender, FormClosedEventArgs e)
            {
                serialPort.Close();
            }
    
            private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                while (!backgroundWorker1.CancellationPending)//loop enquanto o componente não for cancelado.
                {
                    try
                    {
                        if (serialPort.BytesToRead > 0)
                        {
                            //backgroundWorker1.ReportProgress(serialPort.ReadChar());//se for ler um byte de cada vez.
    
                            string palavra = serialPort.ReadLine();
                            backgroundWorker1.ReportProgress(0,palavra);//se for ler uma linha inteira.
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
    
            private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
            {
                textBox1.Text += e.UserState.ToString();
            }
    Alguém pode me ajudar?


    terça-feira, 16 de fevereiro de 2016 16:39

Respostas