我抄的网上泛滥的spcomm例子,只能发送,为什么收不到??过来看看(50分)

  • 主题发起人 myriverman
  • 开始时间
M

myriverman

Unregistered / Unconfirmed
GUEST, unregistred user!
我能运行,能发出去,但收不到?为什么?


unit Unit1;

interface

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

type
Tfcomm = class(TForm)
Comm1: TComm;
Button1: TButton;
Memo1: TMemo;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fcomm: TFCOMM;
viewstring:string;
i:integer;
rbuf,sbuf:array[1..6] of byte;

implementation

{$R *.dfm}

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

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

procedure senddata;
var
i:integer;
commflg:boolean;
begin
viewstring:='';
commflg:=true;
for i:=1 to 6 do
begin
if not fcomm.comm1.writecommdata(@sbuf,1) then
begin
commflg:=false;
break;
end; //发送时字节间的延时
sleep(2);
viewstring:=viewstring + inttohex(sbuf,2)+'' ;
end;
viewstring:='发送'+ viewstring;
fcomm.memo1.lines.add(viewstring);
fcomm.memo1.lines.add('');
if not commflg then messagedlg('发送失败',mterror,[mbyes],0);
end;

procedure Tfcomm.Button1Click(Sender: TObject);
begin
sbuf[1]:=byte($f0); //帧头
sbuf[2]:=byte($01); //命令号
sbuf[3]:=byte($ff);
sbuf[4]:=byte($ff);
sbuf[5]:=byte($01);
sbuf[6]:=byte($f0); //帧尾
senddata; //调用发送函数
end;

procedure Tfcomm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);
var
i:integer;
begin
viewstring:='';
move(buffer^,pchar(@rbuf)^,bufferlength);
for i:=1 to bufferlength do
viewstring:=viewstring+inttohex(rbuf,2)+'';
viewstring:='接受'+ viewstring;
memo1.lines.add(viewstring);
memo1.lines.add('');
end;

end.
 
怎么没有人回答我呀。帮帮忙嘛
 
试一下,可能是的连线有错误,需要对应串口的2,3,5针,2-3,3-2,5-5,你要先保证连线争取才行.
一般情况下2,3,5就够了.
如果需要检测其他信息,需要全部连
1-7
2-3
3-2
4-6
5-5
6-4
7-1
8-8
9-9
再试试.
 
连什么线啊,不是这个程序发,这个程序收吗,不是我搞糊了吧
 
不好意思,我太菜了,没有将串口的针脚连接,是不是2-3就可以了?我理解的错不错???
 
2和3短接
 
程序好像没错啊
 
线可以买现成的,不用自己DIY。成本差不多。
 
程序应该没问题,你先用你的连线用超级终端试一下,看看是不是线的问题。
 
顶部