jia2008010164 2013-11-28 02:17
浏览 1450

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,
'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条回答

    报告相同问题?

    悬赏问题

    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥15 c++头文件不能识别CDialog