首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

在c++builder中,如何获取计算机所有的串口资源

2012-12-14 
在c++builder中,怎么获取计算机所有的串口资源?我用的是MSComm控件。。求大神们给点指示。。[最优解释]本帖最

在c++builder中,怎么获取计算机所有的串口资源?
我用的是MSComm控件。。求大神们给点指示。。
[最优解释]
本帖最后由 ccrun 于 2012-04-12 17:55:22 编辑 从注册表中读取所有串口的信息并添加到ComboBox中:

#include <registry.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TRegistry *reg = new TRegistry;

    reg->RootKey = HKEY_LOCAL_MACHINE;
    reg->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", true);
    cbxComlist->Sorted = false;
    reg->GetValueNames(cbxComlist->Items);

    cbxComlist->Items->BeginUpdate();
    for (int i=0; iItems->Count; i++)
        cbxComlist->Items->Strings[i] =
                reg->ReadString(cbxComlist->Items->Strings[i]);
    cbxComlist->Items->EndUpdate();
     
    delete reg;

    cbxComlist->Sorted = true;
}

以上代码中cbxComlist是一个ComboBox,用MSComm是打开一个指定的串口。
[其他解释]
是电脑上所有的串口吗?

在注册表 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM 里面
[其他解释]
我也有 
HANDLE   h   =   INVALID_HANDLE_VALUE;
int ComValue;
//---------------------------------------
__fastcall TForm6::TForm6(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------
void __fastcall TForm6::FormCreate(TObject *Sender)
{
for(int   i=1;i <=12;i++)
{
AnsiString   comname   =   "\\\\.\\COM"   +   String(i);
h   =   ::CreateFile(   comname.c_str(),
                                          GENERIC_READ   
[其他解释]
   GENERIC_WRITE, 
                                          0, 
                                          0, 
                                          OPEN_EXISTING, 
                                          FILE_ATTRIBUTE_NORMAL, 


                                          0); 

if (h   ==   INVALID_HANDLE_VALUE)
 {
 DWORD   err   =   ::GetLastError();
 if(i==1)
 {
 if(err==2)
 RadioButton1->Enabled=false;
 }
 if(i==2)
 {
 if(err==2)
 RadioButton2->Enabled=false;
 }
 if(i==3)
 {
 if(err==2)
 RadioButton3->Enabled=false;
 }
 if(i==4)
 {
 if(err==2)
 RadioButton4->Enabled=false;
 }
 if(i==5)
 {
 if(err==2)
 RadioButton5->Enabled=false;
 }
 if(i==6)
 {
 if(err==2)
 RadioButton6->Enabled=false;
 }
 if(i==7)
 {
 if(err==2)
 RadioButton7->Enabled=false;
 }
 if(i==8)
 {
 if(err==2)
 RadioButton8->Enabled=false;
 }
 if(i==9)
 {
 if(err==2)
 RadioButton9->Enabled=false;
 }
 if(i==10)
 {
 if(err==2)
 RadioButton10->Enabled=false;
 }
 if(i==11)
 {
 if(err==2)
 RadioButton11->Enabled=false;
 }
 if(i==12)
 {
 if(err==2)
 RadioButton12->Enabled=false;
 }
 }
 CloseHandle(h);
 }
RadioButton1->Checked=true;ComValue=1;
}
最近调试过的。。。。。
[其他解释]

引用:
从注册表中读取所有串口的信息并添加到ComboBox中:

C/C++ code
#include <registry.hpp>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TRegistry *reg = new TRegistry;

    reg->RootKey = HKEY_LOCAL_MACH……

你好,你的那个for循环,哪里编译不过,应该怎么写?你是不是漏了东西。。

热点排行