2012-11-23 17 views
1

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

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

+1

不确定,但您可能需要一些COM重定向器或多路复用器。开箱即用,不可能。 – leppie

+1

感谢您的复用关键字。来自[com0com项目](http://com0com.cvs.sourceforge.net/viewvc/com0com/hub4com/ReadMe.txt?revision=RELEASED)的hub4com提供多路复用。我会看看它的来源。 –

+0

这就是我想要的应用:)希望它有帮助。 – leppie

回答

1

您应该使用Monitor tool,以更好地了解您的其他应用程序的真正功能以及线路上发生了什么。另外,您可以设置two virtual com ports来测试一台机器上的读写操作(即使在同一个应用程序中),以更好地控制发送数据的时间。

+0

我有[Nanotec编程手册](http://en.nanotec.com/technology_programming.html),它提供了用于串行通信的ASCII协议。 –