2 jia2008010164 jia2008010164 于 2013.11.28 10:17 提问

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;
这段程序读不懂,请问各位高手

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Delphi 中串口通讯的实现 Delphi 中串口通讯的实现
Delphi 中串口通讯的实现 Delphi 中串口通讯的实现 Delphi 中串口通讯的实现
Delphi编写串口通讯方法(转)
 ⑹不能产生读进程;   ⑺不能产生写进程;         StopComm 过程用于关闭串口,没有返回值。  
delphi下最好的串口通信控件,完整源代码
这是一个delphi下的串口通信控件,包含完整源代码,调用windows api实现,适应于各个版本windows系统,代码简洁明了,是做串口通信开发者的最佳选择。
Delphi 中串口通讯的实现
Delphi 中串口通讯的实现Delphi 中串口通讯的实现
Delphi 串口通信(1)
利用 Delphi实现串口通信的常用的方法有 3种: 一是利用控件,如 MSCOMM控件和 SPCOMM控件; 二是使用 API函数; 三是调用其他串口通信程序。其中利用 API编写串口通信程序较为复杂,需要掌握大量的通信知识。相比较而言, 利用 SPCOMM控件则相对较简单,并且该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,而且还支持多线程
Delphi跨平台串口通讯控件介绍(SuperCom)
Delphi不使用三方库完成Android串口通讯的跨平台控件(SuperCom)介绍 在开发安卓串口通讯时,多数方式是需要使用serialport-api,也就是调用c语言写成的动态链接库,JAVA开发中有较多的开发案例。同样的方式,在delphi开发中就需要增加相应的Jar包与so库文件,这给不熟悉JNI的朋友来说增加了开发难度,埋没了delphi控件拿来就用、用就好用的优秀品质。幸运的是,现...
delphi中使用spcomm来实现串口通讯
(2012-02-22 22:14:41)转载▼标签: 杂谈分类: Delphi转自——飘雪的世界最近两天一直在研究spcomm控件的使用,之前也是很不太明白,看了很多的例子,可是按照网上很多的例子它们多少都有点瑕疵,运行不了,鉴于自己在做这方面的项目,也用了645规约试验了下,现在终于明白了一点。不过要想精通还再要学习!先把我的学习经验跟大家分享下,也让很多新手快点上手。其实相对于mscomm来...
DELPHI串口通讯编程
DELPHI串口通讯编程DELPHI串口通讯编程DELPHI串口通讯编程DELPHI串口通讯编程DELPHI串口通讯编程DELPHI串口通讯编程DELPHI串口通讯编程
Delphi中ComPort串口控件通信中的数据处理
http://www.cnblogs.com/gaiyang/archive/2011/09/02/2163265.html 1.串口通信的基本原理: 一般计算机与外部设备通讯有两种方式: 并行传送(Parallel ):一次的传输量为8个位(1字节),通过并行端口,如打印机 串行传送(Serial ):一次只传输1个位,通过串行端口,如RS-232 位与字节的概念: 二进制中
DELPHI串口通讯实现
DELPHI串口通讯实现 DELPHI串口通讯实现 DELPHI串口通讯实现