Как использовать SerialPort SerialDataПолучить помощь - PullRequest
0 голосов
/ 09 марта 2010

Не уверен, как обращаться с SerialPort DataReceived. Сценарий

У меня есть приложение, которое связывается с устройством, и это устройство возвращает состояние. Это происходит на разных этапах. EG

публичное перечисление ActionState { Началось, В ходе выполнения, Завершенный так далее... }

Теперь, если бы я использовал DataReceivedEventHandler, как я могу сказать, какой метод выполняется? например, Action1 или Action2 и т.д ...? Я также хочу включить какой-то тайм-аут при получении данных с устройства. Любой пример или совет?

    public ActionState Action1
    {
        serialPort.write(myData);
        string result=serialPort.ReadExisting());


        //convertTo ActionState and return
         return ConvertToActionState(result);
    }

    public ActionState Action2
    {
        serialPort.write(myData);
        string result=serialPort.ReadExisting());

        //convertTo ActionState and return
         return ConvertToActionState(result);
    }


    private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
      //How can I use this to detect which method is firing and set the actionState Enum accordingly?
    }

    private ActionState(string result)
    {
       if(result==1)
          return ActionState.Started;
       else if (result==2)
          return ActionState.Completed

      etc...

    }

1 Ответ

1 голос
/ 01 ноября 2016

Событие DataReceived запускается последовательным портом, когда есть данные для чтения, даже если получен символ Eof. Как правило, это событие используется для получения этих данных и запуска процесса с ним или сохранения. Например, последовательный порт считывает штрих-код и находит его в базе данных.

private static void DataReceivedHandler(
                    object sender,
                    SerialDataReceivedEventArgs e)
{
    SerialPort sp = (SerialPort)sender;
    string indata = sp.ReadExisting();
    if(!String.IsEmptyOrNull( indata)) 
    {
        AddProductToCart(indata);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...