Недокументированное исключение при использовании перенаправления COM -порта через RDPC#

Место общения программистов C#
Ответить
Anonymous
 Недокументированное исключение при использовании перенаправления COM -порта через RDP

Сообщение Anonymous »

Меня попросили поработать над небольшим инструментом, который один из моих предшественников сделал давно в .net 3.5 (если он имеет значение, инструмент использует Winforms). Основная особенность этого инструмента - перепрограммировать машины путем передачи через последовательный порт. Таким образом, машина подключена кабелем Com/USB к компьютеру, а компьютер использует драйвер для эмуляции COM -порта, на котором инструмент может читать/записать.
Потому что Инструмент должен получить доступ к безопасным ресурсам, он запускается на далеком сервере через удаленный рабочий стол. Мы используем функцию перенаправления последовательного порта в удаленном рабочем столе, чтобы инструмент передавал общение на COM -порту локального компьютера, что позволяет ему, в свою очередь, общаться с машиной для перепрограммирования. < /P>
Вскоре: машина для перепрограммирования подключается через кабель Com-USB на моем локальном компьютере. Драйвер на моем локальном компьютере позволяет использовать USB в качестве эмулированного COM -порта. Этот эмулированный COM -порт пересылается через RDP на сервер, работающий на инструменте. Затем инструмент читает и записывает на порте COM. Полем Код для соответствующей части выглядит примерно так: < /p>

Код: Выделить всё

serialPort = new SerialPort();
serialPort.PortName = "COM1";
serialPort.BaudRate = 115200;
serialPort.Parity = Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.Handshake = Handshake.None;
serialPort.NewLine = "\r";

serialPort.Open();

serialPort.ReadTimeout = 2000;
do
{
try
{
sMessage = serialPort.ReadLine();
AddLog(sMessage);
}
catch (TimeoutException) {}
} while (!sMessage.Contains("Starting Reprogramming Process"));
< /code>
Это, кажется, прекрасно работает на Old Windows Server 2012. Однако, когда инструмент работает на новом Windows Server 2019, который должен заменить старый, System.io .IoException сразу же брошено из метода serialport.readline () 
.
(сообщение об ошибке переводится на «Конец файла достигнут», извините за французский перевод)

Я попытался запустить инструмент напрямую на моем локальном компьютере, и он хорошо считывается из Com -порта. < /p>
Я использовал пута Кроме того, и сначала я ничего не мог получить на удаленном рабочем столе. Это заставило меня подозревать проблему драйвера, которую я переустановил на сервере. Теперь это позволяет мне читать порт COM с замазкой на удаленном рабочем столе, но он не исправил поведение инструмента. ) и все они хорошо. Либо так, либо я работаю с неправильной документацией? Самая близкая проблема, которую я обнаружил, заключается в ошибке сервера, но тот факт, что я могу прочитать COM -порт через Putty, кажется, больше указывает на проблему с моим кодом или с модулем Serialport.
У меня закончились лиды, чтобы следовать. Кто -нибудь когда -нибудь сталкивался с аналогичной проблемой? Или в моем коде есть ошибка, заставляя его работать в определенных условиях, а не работать в других?

Подробнее здесь: https://stackoverflow.com/questions/794 ... hrough-rdp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»