3

Мы тестируем новый клиент Wyse (модель Z90D7), который имеет последовательный порт для подключения к ПК. У нас есть внешний клиент, который использует выделенное оборудование, но для тестирования мы используем ПК. Мы запускаем приложение C # на клиентах через Citrix. Когда мы запускаем приложение, которое используем на нашем старом оборудовании Wyse, все работает без ошибок. Однако на новом оборудовании последовательный порт работает примерно раз в 10 попыток. В остальное время он выдаст либо ошибку переполнения, ошибку четности, либо ошибку RXOver.

Я проверил через логирование, что порт действительно открывается и несколько команд выполняются после того, как он открывается. Однако случайные ошибки происходят еще до того, как могут быть переданы какие-либо фактические данные. Я читал во многих местах, что это может быть проблемой с буфером, однако я не видел ни одного сообщения, в котором бы упоминались ошибки, возникающие до получения данных, поэтому я не совсем уверен.

Я также попытался использовать рукопожатие и большие буферы для чтения / записи без удачи. Я попробовал новый кабель и второй COM-порт на этом устройстве, тоже не повезло. Наши настройки по умолчанию:

9600 бод, четная четность, 8 бит данных, 1 стоповый бит

Учитывая, что это работает на Citrix, мы также должны запустить показанные здесь команды net use, прежде чем что-либо делать. В противном случае последовательное соединение всегда говорит, что оно подключено, и не получает никаких данных (это также происходит на старом оборудовании). Точная команда, которую мы выполняем (с измененным именем приложения, конечно):

net use com1 /DELETE
net use com2 /DELETE
net use com1: \\client\com1:
net use com2: \\client\com2:
start /d "D:\myapp" MyApplication.exe

Кто-нибудь, кто имел дело с последовательными портами, когда-либо слышал об этих трех чередующихся ошибках? Есть ли что-нибудь кроме неисправного порта (или, скорее, двух неисправных портов), которое могло бы вызвать это? Я думаю, что размер аппаратного буфера может быть проблемой, но не могу найти способ преодолеть это.

1 ответ1

1

Все ошибки, кажется, говорят о том, что данные не движутся, и в обоих направлениях.

RXOver недостаточно быстро очищает приемный буфер. Переполнение - драйвер последовательного порта недостаточно быстро очищает буфер отправки чипа.

Я не уверен, что существует способ увеличить размер аппаратного буфера. Буфер Windows может быть увеличен с помощью API, но драйвер может его игнорировать.

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

В статье 5 «Общие проблемы с последовательным портом» перечислены некоторые возможные причины таких проблем:

  • Неверные параметры связи
    Оба устройства должны быть настроены с одинаковыми параметрами связи, включая скорость передачи, четность, количество битов данных и количество стоп-битов.

  • Неверный последовательный кабель

  • Bad Serial Cables
  • Неисправная проводка

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .