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