Odbiór danych z portu szeregowego

0

Cześć!

Mam taką klasę:

 
class Connection
    {
        SerialPort Port = new SerialPort();
        

        public void ConfigurePort( string name, int speed)
        {
            Port.PortName = name;
            Port.BaudRate =  speed;
            Port.DataBits = 8;
            Port.Parity = Parity.None;
            Port.StopBits = StopBits.One;
            Port.Encoding = Encoding.BigEndianUnicode;
            Port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
            
        }

       public void Write()
        {
            Port.Write("LIST");
        }

     
        public void OpenPort()
        {
            try
            {
            Port.Open();
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString(),"Error",  MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            
        }

        public void ClosePort()
        {
            try
            {
                Port.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public static void DataReceivedHandler( object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            string indata = sp.ReadExisting();
        }

    }

W głównym pliku robię tak:

 private void PM10_Load(object sender, EventArgs e)
        {
            port.ConfigurePort("COM5", 115200);

            
        }

 private void button2_Click(object sender, EventArgs e)
        {
            port.OpenPort();
            port.Write();
            port.ClosePort();
        }
 

Dlaczego "DataReceivedHandler" nie odpowiada?

0

a masz do tego portu podpięte coś co wysyła do niego dane i ma tą samą prędkość, parzystość, bity stopu i danych ustawione?

0

Wszystko jest dobrze. Na port wysyłane jest polecenie ale zdarzenie odbioru nie jest wywoływane. Dlaczego?

Gdy to samo napiszę w głównej pętli to wszystko od razu działa. Gdy podzielę na klasy to już nie...

0

jeśli zamykasz port zaraz o otwarciu i wysłaniu to czego się spodziewasz?

0

To jeden problem ale drugim było to

 Encoding.BigEndianUnicode; 

po zmianie na

 Encoding.Default; 

pojawiły się odpowiedzi z urządzenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1