2012-11-23 18 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協議。 –