OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10746|回复: 8

请教上位机编程问题.如何获得电脑上所有串口的名字?

[复制链接]

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-2-14 18:10:10 | 显示全部楼层 |阅读模式

上位机编程的时候遇到问题特来请教高手.
我想获得电脑串口的名字,不知道通过什么办法可以获得?我用的BCB.
如下图.我要获得Prolific USB-to-Serial Comm Port这个名字,该如何处理?
试过几种方法,都只能获得COM17....
特来请教,先谢谢了!



 

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
 楼主| 发表于 2012-2-16 15:10:16 | 显示全部楼层
诶,还是自己搞定.
在网上搜了2天的资料,总算是基本达到目的了.
效果如图:



实现代码如下:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    char buf[100];
    if(get_com_name(buf,100,"COM17")==0)
    {
        AnsiString str((char *)buf);
        Memo1->Lines->Add(str);
    }
}

#include <setupapi.h>
#include <devguid.h>
//得到COMx的名字
//namebuf:用于存放名字的缓冲区
//bufsize:缓冲区大小
//comx:要查找的COM编号.例如:COM1,COM2,COM3....
//返回值:0,成功找到了.
//       1,失败.
unsigned char get_com_name(char *namebuf,unsigned long bufsize,char *comx)
{
     HDEVINFO hdinfo;
     unsigned char res=1;
     SP_DEVINFO_DATA   hddevinfo={sizeof(SP_DEVINFO_DATA)};
     hdinfo=SetupDiGetClassDevs(&GUID_DEVCLASS_PORTS,0,0,DIGCF_PRESENT);//获取PORTS类别的已安装设备信息
     if(hdinfo!=INVALID_HANDLE_VALUE)//获取成功
     {
        for(int i=0;SetupDiEnumDeviceInfo(hdinfo,i,&hddevinfo);i++)//轮询所有已安装设备
        {
            char *t;
            SetupDiGetDeviceRegistryProperty(hdinfo,&hddevinfo,SPDRP_FRIENDLYNAME,0,namebuf,bufsize,0);//获得单个装置的详细资料
            t=strstr(namebuf,comx);
            if(t)
            {
                t--;
                *t='\0';//添加结束符,作用就是把"(COMX)"这段字符去掉
                res=0;
                break;//成功找到了COMx的名字
            }
        }
     }
     return res;
}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2012-3-3 21:02:37 | 显示全部楼层
不明白????这是用什么编写的???单片机吗???好像没有这些函数啊???求原子大哥解释下,好像很牛的,呵呵
努力,前进。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
 楼主| 发表于 2012-3-3 22:31:26 | 显示全部楼层
准备写一个好一点的串口调试助手.
实现自动搜索串口,并识别是不是USB串口.所以需要用到这个功能.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2012-4-29
在线时间
0 小时
发表于 2012-5-3 14:11:09 | 显示全部楼层
原子  用什么语言写的这个上位机软件?  VB? VC?
1.环保数采仪监控系统?2.物联网、管网监控系统?3.水文水利监控系统?4.油烟在线监控系统.?5.智能小区水电表监控系统.?提供各种自动化监控解决方案!?有需要请联系,QQ 237324479!
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2195
金钱
2195
注册时间
2012-2-8
在线时间
34 小时
发表于 2012-5-3 14:19:56 | 显示全部楼层
。。。明显是VC。。。
https://github.com/roxma
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
 楼主| 发表于 2012-5-3 15:41:49 | 显示全部楼层
BCB
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-5-8 15:39:03 | 显示全部楼层
    TRegistry *reg = new TRegistry;
    TStringList *lst = new TStringList;

    try
    {
        reg->RootKey = HKEY_LOCAL_MACHINE;
        reg->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", true);

        reg->GetValueNames(lst);

        for (int i = 0; i < lst->Count; i++)
            ComboBox1->Items->Add(reg->ReadString(lst->Strings) );

        ComboBox1->ItemIndex = 0;


    }
    __finally
    {
        delete reg;
        delete lst;
    }

回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-8-5
在线时间
1 小时
发表于 2013-8-6 18:53:55 | 显示全部楼层
回复【楼主位】正点原子:
---------------------------------
bcb可以使用注册表,很简单的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表