在spcomm控件里,有一个语句不会用。诚恳求助大虾。(30分)

  • 主题发起人 主题发起人 carrie4002
  • 开始时间 开始时间
to juzihuangle:
谢谢你。我用的就是这段代码。可不知道原因在哪,就是接收过程
没返回数据。
调试前,哪些工作要准备呢?我不明白我忽略了什么。
 
不要流控

你的程序跟超级终端没关系,用超级终端只是测试你的串口
 
我需要知道我现在该怎么做!
 
哎~~~~~~~~~`
代码:
最近很忙,你尝试这样看看。
[red]重复重点:COM口通信系统使用其中9针中的RTS、RxD、TxD和GND四个端口。
[/red]
调整ByteSize:字节长度_5,_6,_7,_8等,根据实际情况设定。
[red]这里设置为8,你发6位就设置6。[/red]
comm1.StartComm;
sBuf[1]:= byte($FE);
sBuf[2]:= byte($00);
sBuf[3]:= byte($00);
sBuf[4]:= byte($0A);
Comm1.WriteCommData(@sBuf,8);
comm1.StopComm;

如果你发送数据时间过长记得把延时控制属性调整下:readintervaltime 默认为100ms
这回就能发出去了。
 
to wanchi:
断点测试Comm1ReceiveData到下面2个语句:
viewstring:='接收'+viewstring;
memo1.lines.add(viewstring);
其中:viewstring中已经有希望的数据,但
memo1.lines.add(viewstring)却不能显示?换一个
命令按纽来执行viewstring的显示就没这个问题。
为什么?
 
多人接受答案了。
 
TO carrie4002 你好,能不能给我一个组件.我实在是没有办法.
下几个SPCOMM组件用都不能收到信息.发送时窗体上能显示发出去的信息.但接收端不能收到

同时看一下是不是我的程序有错误:非常谢谢因刚出来编程.请指教了.
QQ:58750666
EMAIL:gelanglsj@126.com
var
frmComm: TfrmComm;
i:integer;
str:string;
commflg:Boolean;
rbuf,sbuf:array[0..6] of byte;
implementation

{$R *.dfm}
//*****************************************
定义发送的数据
procedure senddata;
var
i:integer;
begin
str:='' ;
commflg:=true;
for i:=1 to 6 do
begin
if not frmComm.comm.writecommdata(@sbuf,1) then
begin
commflg:=false;
break;
end;
sleep(10);
str:=str+inttohex(sbuf,1)+'' ;
end;
str:='发送'+ str;
frmComm.memo1.lines.add(str);
frmComm.memo1.lines.add('');
if not commflg then messagedlg('发送失败 !' ,mterror,[mbyes],0);
end;

//*****************************************
procedure TfrmComm.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 TfrmComm.CommReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
var
i:integer;
begin
str:='' ;
move(buffer^,pchar(@rbuf)^,BufferLength);
for i:=1 to bufferlength do
begin
str:=str+ inttohex(rbuf,2)+'' ;
str:='接收'+str;
memo1.lines.Text:='';
memo1.lines.add(str);
memo1.lines.add('');
end;
end;
 
后退
顶部