下載
在 sourceforge 網站下載安裝器:下載鏈接
安裝完成后可以在設備管理器中看到默認創建的一對虛擬串口
使用串口調試助手收發
使用串口調試助手分別打開。如下圖所示,在端口選擇的下拉列表中可以看到剛才在設備管理器中看到的 COM3 和 COM5
分別打開
在 COM3 中發送 你好 COM5,我是 COM3
在 COM5 就可以收到數據了
反過來也一樣
除了 COM3 和 COM5 以外,還可以看到如下 2 個虛擬串口
這 2 個也是一對,同樣可以互相收發
readme
開始菜單中可以找到如下文件夾
打開 ReadMe
下面是 ReadMe 內容的翻譯
============================= 虛擬串口模擬器(com0com) ============================= 簡介
============ 虛擬串口模擬器是一款開源的Windows內核模式虛擬串口驅動程序,遵循GPL許可協議免費提供。
您可以創建無限數量的虛擬COM端口對,并通過任意端口對連接兩個應用程序。
每個COM端口對提供兩個默認名稱為CNCA0和CNCB0的COM端口。一個端口的輸出即為另一個端口的輸入,反之亦然。 通常端口對中的一個端口由需要與設備通信的Windows應用程序使用,另一個端口由設備模擬程序使用。 例如要通過IP傳真,您可以將Windows傳真應用程序連接到CNCA0端口,將t38modem(http://t38modem.sourceforge.net/)連接到CNCB0端口。此時t38modem充當傳真調制解調器模擬程序。 結合hub4com使用,com0com可實現以下功能: - 讓多個應用程序共享單個真實串口設備的數據和信號。例如多個應用程序可共享同一個GPS設備的數據; - 像使用本地計算機的真實串口一樣使用遠程計算機的串口(支持RFC 2217協議)。 com0com項目主頁:http://com0com.sourceforge.net/。 安裝指南
========== 注意(基于x64的Windows Vista/Windows Server 2008/Windows 7/8系統): com0com.sys是經過測試簽名的內核模式驅動程序,默認不會加載。要啟用測試簽名,請執行命令: bcdedit.exe -set TESTSIGNING ON 然后重啟計算機。 注意: 啟用測試簽名會降低計算機安全性。 直接運行安裝程序(setup.exe)。安裝向導將引導您完成必要步驟。
如果彈出"找到新硬件向導": - 選擇"否,暫時不",點擊下一步; - 選擇"自動安裝軟件(推薦)",點擊下一步。
安裝完成后,系統中將出現名為CNCA0和CNCB0的COM端口對。 您可以通過安裝命令提示符添加更多端口對: 1. 運行"安裝命令提示符"快捷方式 2. 輸入安裝命令,例如: 命令> install - - 系統將創建3個新的虛擬設備。其中一個設備名為"com0com - 串口對模擬器總線",另外兩個名為"com0com - 串口模擬器"并位于CNCAn和CNCBn端口。 輸入help命令獲取更多信息,例如: 命令> help 作為替代方案,您可以通過運行"設置"快捷方式調用基于GUI的設置工具(需要Microsoft .NET Framework 2.0)。 測試方法
======= 1. 在CNCA0端口啟動超級終端 2. 在CNCB0端口啟動超級終端 3. CNCA0端口的輸出應顯示為CNCB0端口的輸入,反之亦然 卸載指南
============ 直接通過開始菜單中的com0com卸載快捷方式,或通過控制面板"添加/刪除程序"中的"虛擬串口模擬器(com0com)"條目進行卸載。卸載向導將引導您完成必要步驟。 提示:要卸載舊版com0com(無安裝程序的版本),請先安裝新版再執行卸載。 常見問題解答
============= 問:能在Windows 9x平臺上運行com0com嗎?
答:不能。需要Windows 2000或更新版本的操作系統。 問:能否以靜默方式安裝/卸載com0com(無需用戶干預和界面)?
答:可以,使用/S參數,例如: setup.exe /S "%ProgramFiles%\com0com\uninstall.exe" /S 可使用/D參數指定安裝目錄,例如: setup.exe /S /D=C:\Program Files\com0com 注意:靜默安裝默認不會創建任何端口對(可通過設置CNC_INSTALL_CNCA0_CNCB0_PORTS和/或CNC_INSTALL_COMX_COMX_PORTS環境變量覆蓋此行為)。 問:setup.exe還有哪些命令行參數?
答:setup.exe和uninstall.exe的命令行參數列在NSIS用戶手冊第3.2節: http://nsis.sourceforge.net/Docs/Chapter3.html#3.2 此外還可使用以下環境變量: 影響setup.exe行為的環境變量: CNC_INSTALL_START_MENU_SHORTCUTS={是|否} - 選擇/取消"開始菜單快捷方式" CNC_INSTALL_CNCA0_CNCB0_PORTS={是|否} - 選擇/取消"CNCA0 <-> CNCB0" CNC_INSTALL_COMX_COMX_PORTS={是|否} - 選擇/取消"COM# <-> COM#" CNC_INSTALL_SKIP_SETUP_PREINSTALL={是|否} - 跳過驅動預安裝/更新 影響uninstall.exe行為的環境變量: CNC_UNINSTALL_SKIP_SETUP_UNINSTALL={是|否} - 跳過設備和驅動卸載 問:能否將CNCA0和CNCB0改名為COM8和COM9?
答:可以。改名步驟: 1. 運行"安裝命令提示符"快捷方式 2. 輸入修改命令,例如: 命令> change CNCA0 PortName=COM8 命令> change CNCB0 PortName=COM9 也可設置為'COM#'形式,例如: 命令> change CNCA0 PortName=COM# 命令> change CNCB0 PortName=COM# 使用'PortName=COM#'參數時,將調用端口類安裝程序設置實際端口名。端口類安裝程序會選擇COM端口號并將實際端口名設為COM<n>。安裝后可通過list命令查看實際端口名,使用RealPortName=COM<n>參數修改實際端口名,例如: 命令> list CNCA0 PortName=COM#,RealPortName=COM3 CNCB0 PortName=COM#,RealPortName=COM4 命令> change CNCA0 RealPortName=COM8 命令> change CNCB0 RealPortName=COM9 命令> list CNCA0 PortName=COM#,RealPortName=COM8 CNCB0 PortName=COM#,RealPortName=COM9 問:波特率設置似乎無效:數據傳輸速度始終相同。如何啟用波特率模擬?
答:要為CNCA0到CNCB0的數據傳輸啟用波特率模擬: 1. 運行"安裝命令提示符"快捷方式 2. 輸入修改命令,例如: 命令> change CNCA0 EmuBR=yes 問:超級終端測試成功,但使用CreateFile("CNCA0", ...)打開端口時失敗。GetLastError()返回ERROR_FILE_NOT_FOUND。
答:必須在端口名前添加特殊字符"\\.\"。嘗試使用CreateFile("\\\\.\\CNCA0", ...)打開端口。 問:我的應用程序在啟動時向配對的COM端口發送數據會掛起。唯一的恢復方法是運行連接到另一個配對端口的超級終端。使用物理串口時沒有這個問題。
答:應用程序掛起是因為默認禁用接收緩沖區溢出。可以通過為接收端口啟用接收緩沖區溢出來解決此問題。同時為避免流控制問題,需要為發送端口啟用波特率模擬。如果您的應用程序使用CNCA0端口,配對端口是CNCB0,則: 1. 運行"安裝命令提示符"快捷方式 2. 輸入修改命令,例如: 命令> change CNCB0 EmuOverrun=yes 命令> change CNCA0 EmuBR=yes 問:當配對端口未打開時,部分字符會保留在發送端口的輸出緩沖區中,并在下次連接時輸出。有什么解決方法?
答:如果接收緩沖區溢出被禁用(默認),這是正常行為。如果需要像真實零調制解調器那樣丟失這些字符的行為,請為接收端口啟用接收緩沖區溢出。同時為避免流控制問題,為發送端口啟用波特率模擬。如果發送端口是CNCA0,接收端口是CNCB0,則: 1. 運行"安裝命令提示符"快捷方式 2. 輸入修改命令,例如: 命令> change CNCB0 EmuOverrun=yes 命令> change CNCA0 EmuBR=yes 問:我需要編寫一個連接到com0com端口對一側的應用程序,但不想讓用戶"看到"com0com創建的所有虛擬端口,只顯示真正可用的端口。
答:如果您的應用程序使用CNCB0端口,用戶使用的配對端口是CNCA0,則可以通過以下方式"隱藏"CNCB0并在應用程序打開CNCB0時"顯示"CNCA0: 1. 運行"安裝命令提示符"快捷方式 2. 輸入修改命令: 命令> change CNCB0 ExclusiveMode=yes 命令> change CNCA0 PlugInMode=yes 問:添加端口對時,為什么Windows XP總是彈出"找到新硬件向導"?驅動程序已經存在,它可以靜默安裝并在后臺報告設備就緒狀態。
答:這是因為缺少已簽名的com0com.cat目錄文件。可在測試計算機上按以下方式創建: 1. 創建目錄文件,例如: cd "C:\Program Files\com0com" inf2cat /driver:. /os:XP_X86 2. 創建測試證書,例如: makecert -r -n "CN=com0com (test)" -sv com0com.pvk com0com.cer pvk2pfx -pvk com0com.pvk -spc com0com.cer -pfx com0com.pfx 3. 用測試證書簽名目錄文件,例如: signtool sign /v /f com0com.pfx com0com.cat 4. 將測試證書安裝到"受信任的根證書頒發機構"和"受信任的發布者"證書存儲區,例如: certmgr -add com0com.cer -s -r localMachine root certmgr -add com0com.cer -s -r localMachine trustedpublisher inf2cat、makecert、pvk2pfx、signtool和certmgr工具包含在Windows驅動工具包(WDK)中。 或者您可以取消"找到新硬件向導"并通過update命令安裝驅動,例如: setupc install - - setupc update 此外可以臨時禁用即插即用相關UI消息,例如: reg add HKLM\Software\Policies\Microsoft\Windows\DeviceInstall\Settings /v SuppressNewHWUI /t REG_DWORD /d 1 /f setupc install - - setupc update reg add HKLM\Software\Policies\Microsoft\Windows\DeviceInstall\Settings /v SuppressNewHWUI /t REG_DWORD /d 0 /f 更多信息參見http://support.microsoft.com/kb/938596。 問:如何監控和獲取配對端口的設置(波特率、數據位、校驗位和停止位)?
答:可通過擴展IOCTL_SERIAL_LSRMST_INSERT實現。示例參見: http://com0com.sourceforge.net/examples/LSRMST_INSERT/tstser.cpp 問:如何將狀態傳輸到DCD和RING?CTS和DSR已連接到RTS和DTR。
答:OUT1可連接到DCD,OUT2連接到RING。使用擴展IOCTL_SERIAL_SET_MODEM_CONTROL和IOCTL_SERIAL_GET_MODEM_CONTROL來改變OUT1和OUT2的狀態。示例參見: http://com0com.sourceforge.net/examples/MODEM_CONTROL/tstser.cpp 問:如何查看當前運行版本?
答:在設備管理器中,驅動程序屬性頁顯示INF文件的版本和日期,而驅動程序詳細信息頁顯示com0com.sys文件的版本。com0com.sys文件的版本即為您正在運行的版本。 問:當com2tcp的"服務器"和"客戶端"都運行在同一臺計算機上時,我可以用某些應用程序通過com2tcp與硬件通信。但當嘗試將客戶端移到遠程計算機時,應用程序顯示超時消息且沒有增加超時時間的設置。如何解決?
答:嘗試調整應用程序COM端口的AddRTTO和AddRITO參數: 1. 運行"安裝命令提示符"快捷方式 2. 輸入修改命令,例如: 命令> change CNCA0 AddRTTO=100,AddRITO=100 問:能否通過自定義應用程序添加、刪除和重命名虛擬串口?是否有可用API或命令行工具?
答:setupc.exe是完成此任務的命令行工具。輸入以下命令獲取更多信息: setupc help 注:setupg.exe是setupc.exe的GUI封裝。 問:需要使用com0com端口的應用程序不識別com0com端口為"真實"COM端口。即使我已將端口名改為COMx,它仍然看不到com0com端口。是否有設置能讓端口顯示為"真實"COM端口?
答:可以。您應將端口放入端口類,例如: 1. 運行"安裝命令提示符"快捷方式 2. 安裝端口對,其中一個端口名為COM#,例如: 命令> install PortName=COM# - 問:我需要在設備管理器中添加"模擬"PNP設備并使其連接到COM3。我使用PNPComSimulator(http://www.bds.dogma.net/pnp_part2.htm),它可以在DevManager輪詢時模擬PNP串口設備的響應。能否讓設備管理器通過com0com查找PNP設備?
答:可以。最簡單的方法是將端口放入端口類,例如: 1. 運行"安裝命令提示符"快捷方式 2. 安裝端口對,其中一個端口名為COM#,例如: 命令> install 0 PortName=COM# - 安裝端口類端口后,可通過list命令獲取實際端口名,例如: 命令> list CNCA0 PortName=COM#,RealPortName=COM3 CNCB0 PortName=- 問:能否配置com0com隨機損壞數據?這個功能對測試應用程序魯棒性很有用。
答:可以,通過設置EmuNoise參數實現: 1. 運行"安裝命令提示符"快捷方式 2. 輸入修改命令,例如: 命令> change CNCA0 EmuNoise=0.00001,EmuBR=yes,EmuOverrun=yes 命令> change CNCB0 EmuNoise=0.00001,EmuBR=yes,EmuOverrun=yes 現在每個字符幀(包括空閑幀)都有0.00001的概率被損壞。 問:最多可以定義多少個端口對?
答:取決于您的系統。com0com本身有1000000個端口對的內部限制。 問:我的應用程序用戶可能需要安裝多達250個COM端口對。初始安裝相當快,但每個額外的COM端口安裝時間通常比前一個更長。用戶無法接受長時間等待安裝。
答:這是因為每安裝一個新的端口對都需要為所有已安裝的對更新驅動程序。可以通過使用帶--no-update參數的install命令批量安裝多個COM端口對,最后再執行不帶該參數的install命令來提高速度,例如: 命令> --no-update install - - 命令> --no-update install - - ... 命令> --no-update install - - 命令> install 批處理程序示例: cd /D "%ProgramFiles%\com0com" FOR /L %%i IN (0,1,249) DO setupc --no-update install - - setupc install 問:我使用64位版本的com0com遇到問題。想調試但找不到適用于64位操作系統的免費串口監控軟件(如portmon)。有人知道有什么可用的嗎?
答:可以嘗試使用com0com內部跟蹤功能進行調試: - 從com0com源碼獲取trace.reg文件; - 將trace.reg導入注冊表; - 重新加載驅動(或重啟系統); - 執行測試并查看C:\com0com.log文件中的結果。 要禁用跟蹤,請重新安裝com0com或將trace_disable.reg導入注冊表后重新加載驅動。