BCB版的串列埠列舉

2021-08-15 06:06:12 字數 1360 閱讀 1705

做自控近20年,脫離不了串列埠通訊。原來需要獲取電腦的串列埠時,採用的是讀取登錄檔法,一直以來也使用正常。除非電腦系統問題造成多餘的虛擬串列埠或usb串口號,清理下登錄檔即可:

hkey_local_machine\system\currentcontrolset\control \com name arbiter,

刪除數值項comdb即可。

但是隨著業務的擴充套件,面對的客戶越來越高階,對我們的軟體要求也從細節上做出了更高要求(所謂的智慧型化),所以一直以來也想找個更好用的列舉電腦串列埠的方法。

後來看到也是乙個做工控的同行

chinayu2007發布了個列舉串列埠的方法,試了試,發現該有的串列埠沒有,不該有的確出現了。原始碼見:

enumports列舉當前計算機埠

執行結果:

說明:我電腦的真實串列埠是com1,虛擬串列埠com8---14:

電腦該有的串列埠都有:

:bcb版串列埠列舉

光搬運人家的似乎不太高尚,自己原創個com編號排序的方法。因為列舉出來的串口號並不是按照com1/2/3----從小到大排列的,還得自己加工一遍。

自己的方法是容器,放出一直以來使用登錄檔列舉後並排序的源程式:

#include #include using namespace std;

vector com;

tstringlist* list=new tstringlist();

tregistry *reg = new tregistry;

reg->rootkey = hkey_local_machine;

reg->openkey("hardware\\devicemap\\serialcomm",true);

reg->getvaluenames(list);

combobox1->items->clear();

for(int i=0;icount;i++)

sort(com.begin(), com.end());

for(unsigned int i=0;iitems->add("com"+inttostr(com[i]));

}delete reg;

delete list;

combobox1->itemindex = 0;

不需注釋,多餘的話不說。

向仍然堅守bcb6.0的同行們致敬!

BCB版的串列埠列舉2

又無意中看到 mfc實現的串列埠通訊助手 中的一段列舉串列埠 拿過來幾乎不改動就可以在bcb6.0裡執行了,可是會顯示個com0出來,斷點測試原程式有個小bug,見如下 osversioninfo osvi osvi.dwosversioninfosize sizeof osversioninfo ...

列舉系統的串列埠

專案裡 要列舉出系統的串列埠,查了下,登錄檔比較麻煩,用這個方法最方便。原 出處在這裡。unicode下 在這裡 標頭檔案包含 include enumserial.h 同時專案裡新增 setupapi.lib h檔案裡新增 int m nserialportnum 串列埠計數 cstring m ...

列舉串列埠2

以下是c builder下除錯過的兩種列舉系統串列埠的 函式名 getserialportsreg 說 明 通過登錄檔列舉系統串列埠數量,並列出所有串列埠的系統名 參 數 pliststr,串列埠名稱列表 返回值 int,系統串列埠個數 int getserialportsreg char plis...