我使用 C# .Net 4 中的制造商硬件 DLL 访问我的 COM 端口。连接到我的 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 端口吗?