Pages

2010-01-12

虛擬串列埠

現在Notebook電腦為了體積小而美,大部分沒有串列埠(Serial Port, 通稱COM埠)
外面賣的USB轉COM線材轉換晶片常常是假貨,驅動程式良莠不齊。
為了能在NB上模擬Serial Port的讀寫動作,我從完全陌生->僅會讀寫->了解COM通訊理論
也發現市面上有虛擬SerialPort的商業軟體,有提供ActiveX的控制虛擬埠的元件。

我也把網路Socket傳輸通訊的Queue/Checksum應用到串列埠的讀取上
最後,當發現有免費的com0com虛擬串列的Driver支援
我也興起自己寫作虛擬串列埠的念頭,畢竟這是掌握虛擬埠應用的技術重點。

首先,要先了解com0com的Driver控制方式,用C#寫出能簡易控制虛擬埠的管理程式:
SNAGHTML706fad6

透過管理物件Manager能快速新增虛擬埠,User不需了解com0com的內部管理機制及例外狀況:
VirtualSerialPortManager.Setup.ComAddAsync(start, count);

查看「裝置管理員」,可看到這些虛擬埠的裝置: (這得研究Driver安裝上的認證佈署方式)
SNAGHTML709f07a

接下來是最主要的重點,就是如何透過Event方式來Programmer監控經過這些虛擬埠的資料。
只要透過下面的OnRxCharRead事件,即可監控虛擬埠的資料,再作其他的Mapping輸出應用:
SNAGHTML706260b

Manager也提供對這些虛擬埠的寫入函式(Write()),也提供貼心切片傳送(WriteSlice())機制。
最後,擬擬埠的流量控制與速度調整,則有待實務應用時再作測試與調整。

本想等有案子才把這虛擬技術實作出來,沒想到天氣冷一衝動,
就…油然而生出來了。

No comments: