Я получаю доступ к своему COM-порту, используя аппаратную DLL производителя в C# .Net 4. Подключенный к моему COM-порту, у меня есть Управление шаговым двигателем Nanotec SMCI 33.
Производитель предоставляет флаг «SetSendStatusWhenCompleted» для отправки байта состояния, когда движение аппаратного шагового двигателя завершено. К сожалению, нет функции прослушивания этого байта состояния. Я хочу добавить этот функционал.
Цель: отправить команду движения с помощью аппаратного драйвера. Ожидание: прослушайте ответ «байт состояния» перед отправкой следующей команды перемещения.
using System.IO; using System.IO.Ports;
(... access same com Port via driver of hardware manufacturer. ...)
sp = new SerialPort();
sp.PortName = "COM4";
sp.BaudRate = 115200;
sp.DataBits = 8;
sp.StopBits = System.IO.Ports.StopBits.One;
sp.Parity = System.IO.Ports.Parity.None;
sp.Handshake = System.IO.Ports.Handshake.None;
sp.Open();
Очевидно, я получаю UnauthorizedAccessException, потому что мой код запустил драйвер и пытается получить доступ к тому же COM-порту. A аналогичный SO-вопрос относится к COM-доступу из другой программы: Решением является анализатор портов (Portmon). Но мой вопрос требует простого кода.
Я могу остановить аппаратный драйвер. В настоящее время проблема заключается в дорогостоящей повторной инициализации. Есть ли другой способ прослушивания COM-порта, кроме отключения предыдущего аппаратного драйвера?