Я пытаюсь прочитать байты от сканера, подключенного к COM-порту, в массив байтов. В библиотеке Serial Port на C# уже есть функция Read, это функция, которую я использую для попытки чтения. У меня есть настройка так, чтобы прочитанные байты выводятся на консоль. Я работаю с протоколом, который очень предсказуем, поэтому я знаю, какой массив байтов я ожидаю, когда передаю эту строку в коде. Однако, если я запускаю программу, я получаю только один байт. Если я заново запустил тот же самый экземпляр программы (отправив ту же команду чтения), я получу оставшиеся ожидаемые байты. Только после того, как я запустил это в третий раз, я получу все байты, которые я ожидаю. Эта проблема полностью устранена, хотя, если я просто вставлю точку останова по строке чтения и перешагнув эту строку. Если я это сделаю, я получаю полный доступ каждый раз. Мой вопрос в том, как я могу получить полное чтение каждый раз, не вставляя точку останова? Я попытался использовать подход System Pause, чтобы остановить выполнение, и позволить COM-порту сканировать достаточно быстро, что не сработало. Я также пробовал использовать поток (см. Код ниже). Это тоже не сработало. Какие-либо предложения?Неполный последовательный порт Чтение C#
t = new Thread(() => device.Read(buffer));
t.Start();
t.Join();
Опять же, мой ожидаемый результат приходит только в полном пакете после повторной отправки команды чтения несколько раз или перешагивая вышеупомянутые команды с точкой останова. В противном случае я получаю ожидаемый результат в небольших «байтовых размерах». Любая помощь приветствуется!
Ваш код недопустим, нет функции 'SerialPort', которая принимает только массив байтов. Единственной функцией 'Read' являются [оба] (http://msdn.microsoft.com/en-us/library/ms143549.aspx) [есть] (http://msdn.microsoft.com/en-us /library/34t733fh.aspx) три параметра –
Почему бы не использовать данные последовательного порта для данных, чтобы получить данные? Нет необходимости использовать дополнительные потоки, поскольку обработчик, обработанный данными, находится в своем потоке. – user2019047
Чтение перегружено, чтобы принять байтовый массив –