打印

谁用delphi写过上位机?

[复制链接]
2330|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

图1是用delphi的combobox1的items写的串口数量,但是程序运行时只出现图2的端口,后来改了注册表上的内容,有几个是我加进去的,
改成图3的样子后,combobox1显示了1--6的串口(也就是注册表上有几个就显示了几个,我删掉了usb串口VCP后,重复的就没有了)。
但是依然显示不了之前编辑的那么多,并且只有改成COM\6(改其它的也一样),才能通讯,而且所有端口都能(这个肯定有问题)
如果是COM6,所有的都不能通讯了。
问题1: 为什么显示不了我编辑的端口数量?(屏蔽掉获取串口函数能显示,但是不能通讯了。)
问题2:为什么改成COM\6,所有端口都能通讯?
刚开始搞delphi,问题可能很低级,请见谅啊!

相关帖子

沙发
airwill| | 2014-6-10 07:15 | 只看该作者
这好象不是 Delphi 的问题, 不过我也做上位机, 经常用串口, 却没有遇到过这样的问题.

使用特权

评论回复
板凳
看见未来|  楼主 | 2014-6-10 09:00 | 只看该作者
airwill 发表于 2014-6-10 07:15
这好象不是 Delphi 的问题, 不过我也做上位机, 经常用串口, 却没有遇到过这样的问题. ...

我崩了

使用特权

评论回复
地板
看见未来|  楼主 | 2014-6-10 09:10 | 只看该作者
airwill 发表于 2014-6-10 07:15
这好象不是 Delphi 的问题, 不过我也做上位机, 经常用串口, 却没有遇到过这样的问题. ...

是不是获取串口函数有问题?
帮我看看呢。
//获取串口列表
procedure 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
    raise ERegError.Create('打开串口列表的注册表项出错');

  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
        raise ERegError.Create('打开串口列表的注册表项出错');

    until (ErrCode <> ERROR_SUCCESS);

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

使用特权

评论回复
5
shell.albert| | 2014-6-10 09:15 | 只看该作者
哥们,搞Delphi过时了吧,现在都.net和qt的年代了,别搞了,没前途。赶快換工具吧。

使用特权

评论回复
6
看见未来|  楼主 | 2014-6-10 09:50 | 只看该作者
shell.albert 发表于 2014-6-10 09:15
哥们,搞Delphi过时了吧,现在都.net和qt的年代了,别搞了,没前途。赶快換工具吧。 ...

我就是随便写写上位机什么的,主要是测试板子之类的。
搞你说的那些纯粹就是计算机专业的了,咱对算法很头疼!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:loser

17

主题

1073

帖子

1

粉丝