搜索
bottom↓
回复: 18

怎样才能用BCB自动检测新增串口

[复制链接]

出0入0汤圆

发表于 2009-7-25 22:37:03 | 显示全部楼层 |阅读模式
用USB转串口的芯片通信,当插入USB线后会在电脑里自动增加一个串口,如果能在程序里自动检测到这个新增的串口,而不是手工的去指定串口,这样使用起来就方便得多了。
    我现用的是TYbCommDevice串口控件,当插入USB线后,在端口设置里增加了一个端口(COM3或COM5等不定),打开注册表
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM,也发现新增了同样的端口,但就是不知怎样用BCB编程自动找到这个新增的端口,有高手能指点一下吗?
    我学习BCB编程时间不长,上面的问题想了好久不得其解,找了很多资料也没得答案,真不知从何着手。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-7-25 23:14:02 | 显示全部楼层
去查注册表,不过我用VC,BCB不懂

出0入0汤圆

发表于 2009-7-25 23:17:06 | 显示全部楼层
那检测USB插入的消息好了,查这个USB芯片的GUID,然后注册变更消息通知,然后处理win发过来的硬件变更消息就好了

出0入0汤圆

发表于 2009-7-25 23:17:52 | 显示全部楼层
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM]
"\\Device\\Serial0"="COM1"

出0入0汤圆

发表于 2009-7-25 23:20:00 | 显示全部楼层
调用读注册表的函数。

出0入0汤圆

 楼主| 发表于 2009-7-26 02:08:27 | 显示全部楼层
谢谢以上各位高手指点,但目前的我还是一头雾水,未求得解决方法,(唉,只怪我学术不精)。哪位高手是否可以提供详细点的解决方案或这方面的参考资料也行,在这里谢谢先。
   下面简单说说我的东东及想急需解决的问题:我做的是用电脑经过USB转串口线进行控制由单片机制作的一个小仪器,串口的通讯参数如波特率,数据位等已经用程序设好,使用时不需改变,唯独端口这项COM1(或许是COM2,COM3.....)不能用程序设定,因为在不同的电脑及同一台电脑的不同USB插口,这个COM*是不确定的,因此我的这个程序就必需保留(如图)的这个按钮,使用起来非常不方便,如何能省掉这个按钮及“端口设置”这个对话框,让程序自动找到与小仪器的通讯端口,这就是我想要的东东。

(原文件名:11.jpg)

出0入0汤圆

发表于 2009-7-26 09:45:47 | 显示全部楼层
顶!

出0入8汤圆

发表于 2009-7-26 10:42:05 | 显示全部楼层
如果用comport控件我知道怎么做,但TYbCommDevice就不知道了

出0入0汤圆

发表于 2009-7-27 20:46:27 | 显示全部楼层
读注册表后就知道串口数了,再通过握手就知道要使用哪个串口了

出0入0汤圆

发表于 2009-7-27 20:55:14 | 显示全部楼层
TYbCommDevice 就可以自动识别电脑的所有串口.. 你要自动识别哪个串口和你设备相连的话.就用楼上的方法--握手

出0入0汤圆

 楼主| 发表于 2009-7-28 19:30:39 | 显示全部楼层
感谢有这么多网友给支招,但我乃不知怎样具体编写程序,我好笨哦,呵呵。
    这贴子的原意是:能否使“USB转串口设备”在使用中就像使用U盘那么方便,(即插入U盘在“我的电脑”就出现一个盘符,拔出U盘该盘符就即刻消失,但程序不会出现死机现象)。
    觉得读注册表这个方法不错,但具体怎么实现现在不懂,下面换一种提问方式,看看是否有高手给出BCB原程序代码。(如果程序很麻烦,给点提示或付费也行,谢谢先)。
    题目是这样:建一个窗口,放上一个控件Edit1,通过程序来实现:当插入USB/232线,Edit1显示该串口的编号,当拔出线时,Edit1显示的是0,(见下图)。若能实现以上功能,目的就容易达到了。

(原文件名:3.jpg)

出0入0汤圆

 楼主| 发表于 2009-7-29 18:53:36 | 显示全部楼层
现在市场上的电脑在接口方面大多已取消了传统的9针串行接插口,与此同时市场上推出了大量的"USB转串口线",价格从几元到几十元钱,这给常使用串行通讯的使用者带来方便,但如何使用好这种线,是否能像真正的USB设备一样那样,即插即用,(好象原九针串插头是不允许带电拔插的).这给串口编程爱好者带来新的课题,那就是能否自动找到新增串口,有这方面使用经验的网友是否能给介绍介绍.
   
(原文件名:1.jpg)

出0入0汤圆

发表于 2009-7-29 19:05:28 | 显示全部楼层
Delphi的,我是用Spcom写的:

procedure TForm1.EnumComPorts(Ports: TStrings);
var
  KeyHandle: HKEY;
  ErrCode, Index: Integer;
  ValueName, Data: string;
  ValueLen, DataLen, ValueType: DWORD;
  TmpPorts: TStringList;
begin
  ErrCode := RegOpenKeyEx(
    HKEY_LOCAL_MACHINE,
    'HARDWARE\DEVICEMAP\SERIALCOMM',
    0,
    KEY_READ,
    KeyHandle);

  if ErrCode <> ERROR_SUCCESS then
    Exit;  // raise EComPort.Create(CError_RegError, ErrCode);

  TmpPorts := TStringList.Create;
  try
    Index := 0;
    repeat
      ValueLen := 256;
      DataLen := 256;
      SetLength(ValueName, ValueLen);
      SetLength(Data, DataLen);
      ErrCode := RegEnumValue(
        KeyHandle,
        Index,
        PChar(ValueName),
        Cardinal(ValueLen),
        nil,
        @ValueType,
        PByte(PChar(Data)),
        @DataLen);

      if ErrCode = ERROR_SUCCESS then
      begin
        SetLength(Data, DataLen);
        TmpPorts.Add(Data);
        Inc(Index);
      end
      else
        if ErrCode <> ERROR_NO_MORE_ITEMS then
          exit; //raise EComPort.Create(CError_RegError, ErrCode);

    until (ErrCode <> ERROR_SUCCESS) ;

    TmpPorts.Sort;
    Ports.Assign(TmpPorts);
  finally
    RegCloseKey(KeyHandle);
    TmpPorts.Free;
  end;

end;

自动识别计算机有多小个控件,不过要关闭程序再打开后就可见到新的串口存在了

出0入0汤圆

发表于 2009-7-29 19:11:23 | 显示全部楼层
SPCOM控件:
SPCOM.PASourdev_465673.rar(文件大小:14K) (原文件名:SPComm.rar)

Delphi中直接添加此控件,然后就有一个类似MSCOM的图标,此控件就可以使用了,非常方便,比MSCOM好用

出0入0汤圆

发表于 2009-7-29 19:14:00 | 显示全部楼层
Delphi调用方法如下:EnumComPorts(COMNumberCoMboBox.Items);COMNumberCoMboBox.Items为所要列出端口号的组合控件(COMBOBOX),即列表框或组合框之类的组件

出0入0汤圆

发表于 2011-5-14 09:40:32 | 显示全部楼层
回复【楼主位】glgyzhou
-----------------------------------------------------------------------

楼主,问题解决了吗,我也有相同的问题,有方法了共享一下,感谢!

出0入0汤圆

发表于 2012-1-29 11:24:17 | 显示全部楼层
咱也关注啊,需要顶

出0入0汤圆

发表于 2012-1-29 16:29:28 | 显示全部楼层
整一个定时器,每秒查询一下注_册表。

出0入0汤圆

发表于 2012-1-30 15:51:04 | 显示全部楼层
学习……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 18:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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