各位大虾,请教一下串口编程问题!(spcomm控件)(20分)

  • 主题发起人 主题发起人 hrc378
  • 开始时间 开始时间
H

hrc378

Unregistered / Unconfirmed
GUEST, unregistred user!
我编一个串口的发送和接收问题,下面是我编写的一个程序,但是它不能发送跟接收,
你们帮我看一下错在哪!
var
Form1: TForm1;

implementation

{$R *.dfm}

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

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end;
//从端口发送数据
procedure TForm1.senddataClick(Sender: TObject);
var
str:pchar;
count:integer;
begin
str:=pchar(memo1.Text );
count:=length(str);
if comm1.writecommData(str,count)then
Memo1.Lines.Add('已发送'+inttostr(count)+'个字节')
else
raise exception.create('发送错误');
end;
//从端口接收数据

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
strReceiv:string;
begin
setlength (strReceiv,Bufferlength);
move(Buffer^,Pchar(strReceiv)^,Bufferlength);
memo1.Lines.Add('已接收'+inttostr(Bufferlength)+'字节数据');
memo1.Lines.Add(strReceiv);
memo1.Invalidate;
end;

 
从程序上倒没有什么问题,不能发送和接收是有多种原因的
你所说的不能发送,在程序上有什么提示?即有“发送错误”
这个提示没有?若没则是发送成功的。
接收的前提是串口必须要有数据来到。你的串口是不是确定
有数据发过来,即胸你的串口是如何联接的
 
运行没有错误,等按发送按钮的时候出现这个错误,请大侠帮帮忙了.
project project1.exe raised exception class exception with message"发送错误".
process stopped. use step or run to continue.
 
这个错误提示是你的程序设置的。你不妨把raise exception.create('发送错误');
改为:showmessage("发送错误");这样程序可以继续下去。
出现这个错误说明发送根本没有成功,主要原因可能在你的串口没有打开或者你所使用的
串口被别的设置占用。你可以检查一下你的comm1设置的串口名为什么。
还有可能就是你的串口已损坏这种现象现在还是比较多的哟。
 
procedure TMain_frm.L_SendClick(Sender: TObject);
begin
Comm.WriteCommData(Memo_Text.Lines.GetText,length(Memo_Text.Text));
end;

procedure TMain_frm.CommReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
type
IArr = ^integer;
var
RevP : array [1..2048] of Byte;
i: Integer;
CommRevStr : ShortString;
Msg :String;
begin
SetLength(CommRevStr,BufferLength);
Move(IArr(Buffer)^,RevP,BufferLength);
for i:=1 to BufferLength do
begin
CommrevStr := Char(RevP);
end;
Memo_Text.Lines.Add(CommRevStr);
if Pos('CONNECT',CommRevStr)<>0 then
Begin
Comm.WriteCommData(PChar(Msg),Length(Msg));
End;
end;
//-------------------
快快给分吧。兄弟!!!!
 
问题解决!
 
后退
顶部