DataReceived Обработчик событий не получает сообщения - PullRequest
0 голосов
/ 09 апреля 2010

Я использую приведенный ниже код для получения сообщений с помощью обработчика событий последовательного порта. Но он не получает никаких. Я не получаю ошибок. Код ломается в "string msg = comport.Readline()" Я что-то не так делаю?

public partial class SerialPortScanner : Form
{
    private SerialPort comPort = new SerialPort();

    public SerialPortScanner()
    {
        InitializeComponent();
        comPort.Open();
        comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);

    }


    void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        if (comPort.IsOpen == true)
        {
            string msg = comPort.ReadLine();
            MessageBox.Show(msg);
        }
    }
}

Ответы [ 2 ]

1 голос
/ 09 апреля 2010

ReadLine зависит от наличия символа NewLine. Возможно, вам повезет больше с методом Read. См. Также свойство BytesToRead.

1 голос
/ 09 апреля 2010

Событие DataReceived возникает во вторичном потоке при получении данных от объекта SerialPort. Поскольку это событие возникает во вторичном потоке, а не в основном потоке, попытка изменить некоторые элементы в основном потоке, такие как элементы пользовательского интерфейса, может вызвать исключение потока.

Источник: Проверьте это

...