delphi 读串口程序,谁能帮我句句分析一下,补充一下

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:00:12
我写了部分,其他都看不大明白,能不能帮我把没注释完的注释一下
function TSerialPort.ReceivedCOMQD5_JData(NeedReceivedDataLength: integer;NeedReceivedDataNumber:DWORD): Integer;
var
i, Lower, ReceivedLength,BASE: Integer;
dwErrorFlags, dwLength: DWORD;
CommStat: TComStat;
fSuccess, fReady: boolean;
tmpChar: array of char;
dwReceivedNumber:DWORD;
begin
ReceivedLength:=0;
fReady:=False;
dwReceivedNumber :=0;
while True do
begin
inc(dwReceivedNumber); //第一次循环 dwReceivedNumber=1
ClearCommError(hCom, dwErrorFlags, @CommStat); //检查串口接收缓冲区中的数据个数
dwLength:=CommStat.cbInQue;//将缓冲区的个数放入dwlength里
if (NeedReceivedDataNumber>0) then //此函数接收的参数如果大与0,
begin
if (dwReceivedNumber > NeedReceivedDataNumber) then break;//需要接收的数据大于1就跳出循环!
end;

if (dwLength<=0) and (not fReady) then//实际串口的数据长度小于0,则执行下一次循环
continue;

使用串口编程的方法有很多,可惜的是Delphi并没有标准vcl提供,您是初学建议使用如下方法入手(如果从API入手最后会吐血身亡)

使用微软提供的MSCOMM32.OCX组件(搜索一下网络)

使用spcomm的Vcl组件

提供一点思路
BaudRate波特率
ByteSize 位
CommName 端口
设置好后 comm1.StartComm;
onReceiveData事件中处理接收的数据
Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
Buffer就是接受到的数据内容
BufferLength长度

comm1.WriteCommData('abcdefg',7);//向端口写数据

有读有写基本上全啦
其它的内容与功能,你可以去google一下

希望对你有帮助

www.sywpl.com