Не удалось получить данные из последовательного порта - PullRequest
0 голосов
/ 19 декабря 2011

Я работаю с последовательным COM-портом. Я вставил этот код в мою программу. Я могу отправить данные на устройства и не могу прочитать данные с устройств. В режиме отладки я могу только получить serialport.BytesToRead = 0. Могу ли я знать, почему это произойдет ??

   while (serialport.BytesToRead > 0)
{
      int byte_count = serialport.BytesToRead;
      byte[] buffer = new byte[byte_count];
      int read_count = serialport.Read(buffer, 0, byte_count);
      string echo = ASCIIEncoding.ASCII.GetString(buffer, 0, read_count);
      echo = System.Text.Encoding.UTF8.GetString(buffer);
      Console.WriteLine(echo);
}

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Сначала используйте другую программу, такую ​​как Putty или HyperTerminal, чтобы убедиться, что устройство и соединение находятся в рабочем состоянии, и перепроверить, что вы используете правильный порт, скорость передачи, четность, стоп-биты и биты данных. Если вы не можете извлечь что-либо из устройства с помощью такой программы, то оно не будет работать и с использованием вашего собственного кода.

Далее сосредоточимся на рукопожатии. Распространенная ошибка состоит в том, чтобы оставить это в покое и затем не включать сигналы DtrEnable и RtsEnable. Устройство не отправляет ничего, когда считает, что вы не в сети. Утилита SysInternals 'PortMon может быть полезна, она показывает вам, что происходит на уровне драйвера устройства.

1 голос
/ 19 декабря 2011

Когда вам читать с SerialPort?Вы пытаетесь читать сразу после отправки?В этом случае вы можете попытаться выполнить чтение до того, как на самом деле будет что-либо читать с порта.

Для чтения данных следует использовать событие DataReceived.

Обратите внимание, что это событие может сработать раньшевсе данные получены, поэтому вам, возможно, придется получать данные по нескольким вызовам DataReceived, пока не получите все данные, которые вы должны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...