F
fifa2000
Unregistered / Unconfirmed
GUEST, unregistred user!
小弟用spcomm做两台pc串口通讯
用一常量数组connectbyte存发送的指令,一字节一字节发送,共5字节
用nextnum做数据序号,用以标示发送的字节在数组中的位置,接收时也想一字节一字节接收
1)spcomm发送数据时是否要先发一个字节用以启动串口?因为
我程序中TfrmMain.Button1Click中发的‘a’接收端一直收不到
2)接收端只能接收到一个字节,为什么?
但我试了以下情况能接受到数据,即在SendDataEmpty中加入注释掉的那行‘showmessage(inttostr (nextnum));‘ 就5字节都收到了
但总不能发一个字节按一下鼠标响应showmessage吧?!大家帮我出出主意,小弟感激不尽。
具体程序如下:
发送端:
procedure TfrmMain.FormCreate(Sender: TObject);
begin
nextnum:=0;
comm1.StopComm;
end;
procedure TfrmMain.Button1Click(Sender: TObject);
begin
comm1.StopComm ;
comm1.StartComm ;
comm1.WriteCommData('a',1);
end;
procedure TfrmMain.Comm1SendDataEmpty(Sender: TObject);
var
ss:byte;
begin
nextnum:=nextnum+1;
ss:=connectbyte[nextnum];
// showmessage(inttostr(nextnum));
if nextnum<=5 then
comm1.WriteCommData(@ss,1);
end;
接收段:
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
comm1.StopComm ;
comm1.StartComm ;
end;
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
temp:byte;
begin
temp:=byte(buffer^);
i:=i+1;
stringgrid1.Cells[i,1]:=inttostr(temp);
end;
用一常量数组connectbyte存发送的指令,一字节一字节发送,共5字节
用nextnum做数据序号,用以标示发送的字节在数组中的位置,接收时也想一字节一字节接收
1)spcomm发送数据时是否要先发一个字节用以启动串口?因为
我程序中TfrmMain.Button1Click中发的‘a’接收端一直收不到
2)接收端只能接收到一个字节,为什么?
但我试了以下情况能接受到数据,即在SendDataEmpty中加入注释掉的那行‘showmessage(inttostr (nextnum));‘ 就5字节都收到了
但总不能发一个字节按一下鼠标响应showmessage吧?!大家帮我出出主意,小弟感激不尽。
具体程序如下:
发送端:
procedure TfrmMain.FormCreate(Sender: TObject);
begin
nextnum:=0;
comm1.StopComm;
end;
procedure TfrmMain.Button1Click(Sender: TObject);
begin
comm1.StopComm ;
comm1.StartComm ;
comm1.WriteCommData('a',1);
end;
procedure TfrmMain.Comm1SendDataEmpty(Sender: TObject);
var
ss:byte;
begin
nextnum:=nextnum+1;
ss:=connectbyte[nextnum];
// showmessage(inttostr(nextnum));
if nextnum<=5 then
comm1.WriteCommData(@ss,1);
end;
接收段:
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
comm1.StopComm ;
comm1.StartComm ;
end;
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
temp:byte;
begin
temp:=byte(buffer^);
i:=i+1;
stringgrid1.Cells[i,1]:=inttostr(temp);
end;