C++builder 如何获取端口号

时间:2021-05-29 18:14:13
如题,我的上位机和下位机通讯程序,只有在选对端口号的时候才运行正常,否则会弹出“Debugger Exception Notification“对话框,请问大神能不能动态的获取端口号呢?或者是如何对这个异常进行处理,不让他弹出对话框,即当有触发按键事件的时候,使”MSComm1->CommPort=**“不触发异常事件。串口通信我用的是MSComm控件。

C++builder 如何获取端口号

6 个解决方案

#1


看到你的代码片段,当时我就震惊了。抛开效率的问题不说了,就说你的需求,可以考虑遍历端口,用try...catch捕获错误。

#2


你在电脑的设备管理器中看端口

#3


从注册表中读取串口号,修改一下就能应用到你的程序
http://blog.const.net.cn/a/772.htm

#4


引用 1 楼 ccrun 的回复:
看到你的代码片段,当时我就震惊了。抛开效率的问题不说了,就说你的需求,可以考虑遍历端口,用try...catch捕获错误。

C++builder 如何获取端口号,我没怎么写过代码,第一次写,还请版主多指教,嘿嘿

#5


用TMS Async32串口控件, 这个最好用, 你需要的功能也有

#6


  TStringList *tmp = new TStringList;   //自動取得COM Port的數量
  TRegistry *reg = new TRegistry;
  reg->RootKey = HKEY_LOCAL_MACHINE;

  if(reg->OpenKey("\\HARDWARE\\DEVICEMAP\\SERIALCOMM",false))
  {
    reg->GetValueNames(tmp);
    for(int i=0;i<tmp->Count;i++)
    {
           AnsiString asCOM = reg->ReadString(tmp->Strings[i])+"     已连接....";
   Memo1->Lines->Add(asCOM);
 }
 reg->CloseKey();
  }
  else Memo1->Lines->Add("没有COM口连接");
  delete reg;
  delete tmp;

#1


看到你的代码片段,当时我就震惊了。抛开效率的问题不说了,就说你的需求,可以考虑遍历端口,用try...catch捕获错误。

#2


你在电脑的设备管理器中看端口

#3


从注册表中读取串口号,修改一下就能应用到你的程序
http://blog.const.net.cn/a/772.htm

#4


引用 1 楼 ccrun 的回复:
看到你的代码片段,当时我就震惊了。抛开效率的问题不说了,就说你的需求,可以考虑遍历端口,用try...catch捕获错误。

C++builder 如何获取端口号,我没怎么写过代码,第一次写,还请版主多指教,嘿嘿

#5


用TMS Async32串口控件, 这个最好用, 你需要的功能也有

#6


  TStringList *tmp = new TStringList;   //自動取得COM Port的數量
  TRegistry *reg = new TRegistry;
  reg->RootKey = HKEY_LOCAL_MACHINE;

  if(reg->OpenKey("\\HARDWARE\\DEVICEMAP\\SERIALCOMM",false))
  {
    reg->GetValueNames(tmp);
    for(int i=0;i<tmp->Count;i++)
    {
           AnsiString asCOM = reg->ReadString(tmp->Strings[i])+"     已连接....";
   Memo1->Lines->Add(asCOM);
 }
 reg->CloseKey();
  }
  else Memo1->Lines->Add("没有COM口连接");
  delete reg;
  delete tmp;