在使用中复用或收听串行端口

时间:2012-11-23 10:56:37

标签: c# serial-port multiplexing

我使用C#.Net 4中的制造商硬件DLL访问我的COM端口。连接到我的COM端口我有一个Nanotec stepper motor control 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端口。 similar SO Question处理来自另一个程序的COM访问:端口嗅探器(Portmon)是解决方案。但我的问题需要简单的代码。

我可以停止硬件驱动程序。目前,问题是时间成本高的重新初始化。 有没有其他方法可以侦听COM端口,而不是关闭以前的硬件驱动程序?

1 个答案:

答案 0 :(得分:1)

您应该使用Monitor tool,以便更好地了解您的其他应用程序的确实做什么以及线路上的内容。此外,您可以设置two virtual com ports来测试一台计算机上的读写(即使在同一个应用程序中),以便更好地控制何时发送哪些数据。