串口 枚举注册表-delphi中spccom串口通讯问题

问题描述

delphi中spccom串口通讯问题

/串口接收数据
//------------------------------------------------------------------------------
procedure TFormMain.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
var
CRC:Word;
pbuf:pchar;
idx:integer;
begin
pbuf:=pchar(Buffer);
SetLength(RBuf,BufferLength);
move(pbuf^,pchar(@RBuf[1])^,bufferlength);
lstLog.Add('接收:'+Rbuf);
lstLog.ItemIndex:=lstLog.Items.Count-1;
end;
//------------------------------------------------------------------------------
// 枚举注册表中已经存在的串口
//----------------------------------------------------------------
procedure TFormMain.EnumComPorts(Ports: TStrings);
var
KeyHandle: HKEY;
ErrCode, Index: Integer;
ValueName, Data: string;
ValueLen, DataLen, ValueType: DWORD;
TmpPorts: TStringList;
begin
ErrCode := RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
'HARDWAREDEVICEMAPSERIALCOMM',
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;
这段程序读不懂,请问各位高手

时间: 2024-10-02 18:55:21

串口 枚举注册表-delphi中spccom串口通讯问题的相关文章

串口大师提示找不到串口的解决办法,增加注册表项目。

          今天进行串口调试提示找不到串口,查了注册表发现串口的注册值:\Device\ProlificSerial2 ,值COM4,但是串口大师还是找不到串口,注册表中没有项目,解决办法如下: 1 .新建一个TXT文档,键入以下内容: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM] "\\Device\\Serial1"="COM1&quo

Ghost Win7系统中通过注册表添加网络身份验证的方法

  1.点击"开始--运行",在运行对话框中输入"regedit"命令按回车,打开注册表编辑器; 2.在打开的注册表编辑器中依次展开定位到:"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa"项,然后在窗口右侧中双击打开"Security Packages"; 3.弹出来的"编辑多字符串"对话框中,在列表中添加"tspkg"的内容;

dos(cmd)中删除、添加、修改注册表命令_DOS/BAT

regedit的运行参数 REGEDIT [/L:system] [/R:user] filename1 REGEDIT [/L:system] [/R:user] /C filename2 REGEDIT [/L:system] [/R:user] /E filename3 [regpath] /L:system Specifies the location of the SYSTEM.DAT file. /R:user Specifies the location of the USER.D

Win10系统如何在注册表中设置去掉鼠标加速

Windows10系统在注册表中设置去掉鼠标加速的方法 注册表路径: HKEY_CURRENT_USER\Control Panel\Mouse (Control Panel:控制盘.Mouse:鼠标) 步骤: 右键点击系统桌面左下角的开始,在开始菜单中点击运行,输入:regedit,再点击确定或者回车,打开注册表编辑器: 此时会弹出一个用户帐户控制的询问对话框:你要允许此应用对你的电脑进行更改吗?我们点击:是(Y): 点击是(Y)以后,打开了注册表编辑器,我们在注册表编辑器中依次展开:HKEY

导入导出注册表项的类

最近因为工作的需要,要对注册表项进行备份恢复,于是我就去了解了一下注册表的相关内容.原本我打算用RegSaveKey和RegRestoreKey来进行备份恢复.可是在使用过程中发现这两个函数使用起来非常麻烦,于是就寻找别的解决方法.经过一段时间的努力,我最终完成了注册表项导入导出的功能.这个类简介如下: 一.读取注册表项的各个键值,然后写到文件中 void ExportRegistry( CString cstrKeyRootName, //注册表根值,如HKEY_CURRENT_USER CS

Win32汇编--操作注册表

1.打开和关闭子键    注册表函数对注册表的操作是通过句柄来完成的,与文件操作一样,在对某个键下的子键或者键值项进行操作之前,需要先将这个键打开,然后使用键句柄来引用这个键,在操作完毕以后再将键句柄关闭.注册表的根键不需要打开,它们的句柄是固定不变的,要使用根键的时候只要把这些句柄直接拿来用就是了,Windows.inc中已经预定义了它们的数值: HKEY_CLASSES_ROOT                      equ 80000000h HKEY_CURRENT_USER    

保护Windows注册表

保护注册表是很重要的,有很多不同的工具可以实现这一目的.当没有安全设置时,用户可能的错误会更多.幸运的是,他们可以有几中方法来保护Windows注册表,在注册表失败时他们可以用额外的拷贝来恢复注册表.下面就是其中的一些方法:   1.使用windows备份软件   注:Win95和Win98备份程序有部分区别,在这里只讲Win98的备份程序.   Win98中包括一个备份程序.当安装Win98时如果你选择"自定义安装",或者你可以在控制面板中的添加/删除程序里安装它.当你安装了这个备份

C# 系统应用之注册表使用详解

        在平时做项目时,我们有时会遇到注册表的操作,例如前面我们需要获取IE浏览器地址栏的信息.获取"我的电脑"地址栏输入的文件夹信息.USB最近使用信息等.注册表项是注册表的基本组织单位,它包含子表项和值条目.简言之,注册表项相当于注册表里的文件夹.它们存储计算机安装程序的信息,如颜色设置.屏幕大小.历史记录等.         举个以前使用注册表最多的例子:当我们玩魔兽或dota时,总需要打开"运行"->输入"regedit"打

XP系统注册表如何还原到上次成功启动时

  虽然目前新电脑配置都比较高端,所以安装的多是win7系统,由于大很多用户都还是使用着老电脑,还有一些低端配置电脑,都还使用着Windows XP系统,许多电脑用户可能对XP系统的注册表不怎么熟悉,注册表的用处比较大,用户在使用电脑过程中,难免会遇到一些小问题故障,有的系统故障可以通过注册表来解决,比如XP系统出现文件损坏或者丢失,导致无法成功进入系统,我们可以让XP系统注册表还原到上次成功启动时的状态,电脑也就能够成功进入到系统. Windows将其配置信息存储在一个称为注册表的数据库中,该