Com Port auslesen



  • Hallo,

    Weiß nicht genau ob ich hier richtig bin. kann auch sein das die frage ins API forum gehört.

    Wie kann ich die vorhandenen Com-Ports in Windows auslesen?



  • Hallo,

    HANDLE hSerial;
    AnsiString Device;
    
    for (int i = 0; i < 255; i++)
    {
            Device = "com" + IntToStr(i);
            hSerial  = CreateFile( Device.c_str(),
                                   GENERIC_READ | GENERIC_WRITE,
                                   0,
                                   0,
                                   OPEN_EXISTING,
                                   0,
                                   0 );
            if (hSerial == INVALID_HANDLE_VALUE) {}
            else
            {
                    Memo->Lines->Add(Device + " belegt");
                    hSerial = NULL;
            }
    }
    

    //Edit: Code-Tags vergessen

    VlG



  • Danke,
    funktioniert. 🙂



  • ohne Iteration:

    void __fastcall TSerial::GetPortList(TStrings *PortList)
    {
    PortList->Clear();
    std::auto_ptr<TRegistry> Reg(new TRegistry());
    std::auto_ptr<TStrings> ValueNames(new TStringList());
    Reg->RootKey = HKEY_LOCAL_MACHINE;
    if (Reg->OpenKeyReadOnly("\\HARDWARE\\DEVICEMAP\\SERIALCOMM"))
      {
      Reg->GetValueNames(ValueNames.get());
      for (int i=0;i<ValueNames->Count;++i)
        {
        String KeyName = ValueNames->Strings[i];
        if ( Reg->ReadString(KeyName) != "" )
          {
          PortList->Add(Reg->ReadString(KeyName));
          }
        else
          break;
        }
      Reg->CloseKey();
      }
    else throw Exception("konnte COM-Ports aus Registry nicht lesen");
    }
    

Anmelden zum Antworten