В чем различие между ReadLine() и ReadExisting() у COM-Port'а

394
19 января 2017, 02:00

Необходимо считывать данные с COM-порта. Обычно рекомендуют пользоваться методом ReadLine(). Однако на моем устройстве этот метод часто возвращает пустую строку. Пробовал использовать ReadExisting() в сочетании с Thread.Sleep() почти 100 % положительный результат.

Thread.Sleep(100);
var response = comPort.ReadExisting();

Вот и вопрос: а где подвох? Почему везде и в Инете, и в литературе, и MSDN в том числе, рекомендуют использовать ReadLine()?

Answer 1

ReadExisting получает все данные их буфера. ReadLine ожидает значения окончания строки, затем возвращает строку. Если были получены данные, но не было значения окончания строки, ReadLine ничего не вернет. Поэтому, если вы работаете с текстом, используйте ReadLine. Если работаете с нетекстовой информацией, используйте ReadExisting.

READ ALSO
Не понятен смысл DI

Не понятен смысл DI

Мне не до конца понятен смысл использование DI (например autofac)Возможно, я не правильно трактую его смысл из-за неверной области применения

320
CQRS. Что является Command?

CQRS. Что является Command?

Какова область ответственности command? Например, регистрация пользователя :

302
Использование RegExp в JSON Schema

Использование RegExp в JSON Schema

Имеется JSON Schema, которая описывает массив директорий в JSON файлеДиректории могут содержать абсолютные локальные пути, либо быть в UNC формате...

369