在delphi中使用spcomm控件的一个问题(100分)

  • 主题发起人 主题发起人 tong_bu
  • 开始时间 开始时间
T

tong_bu

Unregistered / Unconfirmed
GUEST, unregistred user!
代码:
为什么,接收一定时间后,程序就只能发,不能收。
附带源码,请高手帮忙分析:
unit sp1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
SPComm, StdCtrls, ExtCtrls, ComCtrls;

type
TForm1 = class(TForm)
Comm1: TComm;
Timer1: TTimer;
memo1: TRichEdit;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
viewstring:string;
// i:integer;
sbuf,rbuf:array[1..6] of byte;

implementation

{$R *.DFM}

procedure TForm1.FormShow(Sender: TObject);
begin
comm1.StartComm;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm ;
end;

procedure senddata;
var
i : integer;
comflag : boolean;
begin
viewstring := '';
comflag := true;
for i:=1 to 6 do
begin
if not form1.comm1.writecommdata(@sbuf,1) then
begin
comflag := false;
break;
end;
sleep(5);
viewstring := viewstring + inttohex(sbuf,2) + ' ';
end;
viewstring := 'Snd----' + viewstring;
form1.memo1.Font.Color := clblue;
form1.Memo1.Lines.Add(viewstring);
if not comflag then
messagedlg('Send error',mterror,[mbyes],0);

end;
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
s:string;
begin
viewstring := '';
setlength(s,bufferlength);
move(buffer^,pchar(@rbuf)^,bufferlength);
for i:=1 to bufferlength do
begin
viewstring := viewstring+inttohex(rbuf,2)+' ';
end;
viewstring := 'Rec----' + viewstring;
memo1.Font.Color := clred;
memo1.Lines.Add(viewstring);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize;
sbuf[1] := byte(random(255));
sbuf[2] := byte(random(255));
sbuf[3] := byte(random(255));
sbuf[4] := byte(random(255));
sbuf[5] := byte(random(255));
sbuf[6] := byte(random(255));
senddata;
end;

end.
 
后退
顶部