2009-08-27 76 views
4

我正在尋找一本書和或如何做串行端口重定向或端口分割的代碼示例。我編寫了很多com端口應用程序,並且希望編寫一個監視器應用程序,使我能夠觀看應用程序和設備之間的串行端口。串行端口重定向或分割

所以我想能夠將串口重定向到另一個端口,以便我可以監視端口之間的數據流動。

我理解在某些情況下,這必須在內核級完成。 (在USB情況下)

我已經用C#中的system.IO.Ports編寫了監視器應用程序。如果我必須調用一個很好的C++/C程序集。

感謝

回答

3

你可能會發現,通過PortMon馬克Russinovich的是你的工作有幫助的,雖然它不提供源代碼。它將記錄與端口有關的所有系統調用,並具有廣泛的過濾功能,可以將日誌保持在可管理的大小。

編輯: PortMon在運行時通過向系統中注入內核模式設備驅動程序來工作。該驅動程序通過將過濾器驅動程序插入堆棧來掛接要監視的端口。該過濾器驅動程序將所有通過它的IRP報告給應用程序。這不是一個簡單的野獸來實現任何延伸,它真的不能在用戶模式下完成。

Windows DDK確實有一個端口過濾驅動程序的示例代碼,但從樣本到一些有用的東西有很多工作要做。

純粹的用戶模式解決方案可能會解決的是使用兩個額外的串行端口來竊聽電線。一對USB轉串口適配器和一些接線可以滿足你的需求。那麼監控和關聯發送和接收線路只是「編程的一小部分」。單芯片解決方案可基於FT2232H device from FTDI,該解決方案有evaluation module。添加幾個RS232電平轉換器和一些D連接器,並且USB上有串口竊聽器,看起來像Windows的兩個COM端口。

另一種箱外方法是許多邏輯分析儀和混合信號示波器可以做串行協議解碼,通常作爲可選組件。便宜的USB +軟件解決方案的一個來源是Saelig。我自己也從他們那裏購買了芯片和模塊,但是他們並沒有任何與他們銷售的任何基於USB的邏輯分析儀的直接經驗,儘管我認爲我應該和我的筆記本一起在Netbook上有一個...

+0

感謝RB,我目前正在使用XPort,但想要在應用程序中嵌入端口拆分。 – 2009-08-27 19:05:41

+0

我已經更新了我的答案以及今天下午發生在我身上的其他一些想法...... – RBerteig 2009-08-28 02:15:26

+0

嘗試使用VSPE。剛開始使用它,對於32位機器似乎工作正常。也有64位的版本。使用任一應用程序來配置虛擬端口,或者您可以使用API​​。創建內核模式虛擬串行設備... http://www.eterlogic.com/Products.VSPE.html – ryyker 2011-11-15 01:58:07

0

我寫了很多年前的一篇。 DDK(設備驅動程序工具包)包含用於並行端口驅動程序的過濾器驅動程序的示例源代碼:我調整了此示例以便與串行端口驅動程序一起工作,然後添加了監視和分離等功能。

這是串口,不是 USB。

我還實現了另一個驅動程序,它是一個'虛擬'串行端口,即它實現了一個串行端口API,但隨後在其他地方重定向了數據I/O。

這是一個很多工作(許多個月)的實施。

0

購買RS232 DB9 Serial Data Tap。這是一個硬件設備,連接在兩個串行端口之間,被動地監聽設備之間的「喋喋不休」。我使用了以下設備兩年半,併爲我節省了大量的故障排除時間和精力。 (我每天晚上都會把它帶回家,以防止技術支持人員「借」它)。製作這種設備很容易,但以下數據點是靈活的。 「

」接入串行數據流並透明地監控數據活動,輸出可以輸入到監控打印機或其他設備,Dipswitch允許編程單獨或一起監控主傳輸線和接收線。所需的外部電源,易於安裝,透明連接理想的RS232 /串行軟件開發援助。「

或者,製作或購買串行分接頭監視器電纜。有關可能的配置,請參見NST documentation

我強烈建議您不要使用軟件解決方案,因爲監控軟件可能會受到物理情況的影響。

+0

感謝RB和Anthony。我一直在考慮這個解決方案。我們有一個串行陷阱設備,但我們的一個設備使用USB到COM映射。但我可能會嘗試爲USB製作陷阱監視器電纜。 – 2009-08-28 16:51:43

0

一如既往,這取決於你要做什麼。如果您需要了解兩個串行設備之間的線路是如何連接的或者需要一些「良好」的時間信息,那麼您可以得到的最好的結果就是安東尼已經告訴的外部break-out box

如果您只需要某種監控,您可以使用PortMonSerial Port Monitor

也許你寫了兩個要通過串行連接進行通信的應用程序。要在沒有本地環回電纜的單臺PC上完成此操作,您可以嘗試使用Com0Com

+0

感謝Oliver,我過去曾經使用Com0com,但是因爲一個設備是USB到COM端口,com0com似乎不工作。我嘗試過PortMon,但它捕獲的數據不完整。 Xport的工作原理,但我可能不得不把這個放在我們的生產線上,我不希望技術人員一次不得不加載兩個程序。 – 2009-08-28 16:47:34