谢谢LeeChange,我不知什么UDP啊,我的传输对象是单片机,我发送的语句是下面这几条
procedure SENDDATA;
var
I:integer;
COMMFLG:BOOLEAN;
begin
S1:='';
S2:='';
COMMFLG:=TRUE;
For I:=1 to 1280 do
begin
IF NOT Form1.comm1.writecommdata(@SBUF,1) then
begin
COMMFLG:=FALSE;
BREAK;
end;
S1:=S1 + inttohex(SBUF,2)+ ' ';
end;
S1:='发送:' + ' ' + S1;
FORM1.MEMO1.TEXT:= S1;
if not commflg then messagedlg('发送失败 !' ,mterror,[mbyes],0);
end;
结果,我一调用这个过程时,只要I>1000,就出现'发送失败'了,I<1000就没问题,注意
这时我的串口并没有接任何的东西,所以我觉得应该是SPCOMM设置的问题,请各位高手帮帮
忙!
这个问题好搞,其实用SPCOMM没问题的,关键是WriteCommData(PChar(@sbuf),I)的使用
I是要发送内容的数目,因此,若要发送SBUF为[1..2048],那么发送全部内容,则写成
WriteCommData(PChar(@sbuf),2048),这样就不用使用循环程序,减少出错的机会。
BYTE可以是BYTE型。
procedure TForm1.Button2Click(Sender: TObject);[8D]
var
RESULT:BOOLEAN;
I:INTEGER;
S:STRING;
begin
S:='';
FOR I:= 1 TO len DO
S:= S + INTTOHEX(SBUF,2) + ' ';
I:=len;
RESULT:= Form1.comm1.WriteCommData(PChar(@sbuf),I);
IF RESULT THEN
MEMO1.TEXT:='发送: ' + S + ' ' + '成功!'
ELSE
MEMO1.TEXT:='发送: ' + S + ' ' + '失败!';