Имам достъп до моя 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 порт. подобен SO въпрос третира COM достъпа от друга програма: Решението е снифър на порт (Portmon). Но въпросът ми изисква прост код.
Мога да спра хардуерния драйвер. Понастоящем проблемът е скъпоструващата повторна инициализация. Има ли друг начин да слушате COM порта, освен да изключите предишния хардуерен драйвер?