我是用以下的方法实现的,但是就是不能得到外部设备的数据啊 procedure TFcomm.FormShow(Sender: TObject); begin comm1.StartComm; end;procedure TFcomm.FormClose(Sender: TObject; var Action: TCloseAction); begin comm1.StopComm; end;procedure TFcomm.senddata; var i:integer; commflg:boolean; begin viewstring:=''; commflg:=true; for i:=1 to 12 do begin if not fcomm.Comm1.WriteCommData(@sbuf[i],1) then begin commflg:=false; break; end; sleep(2);{发送时字节间的延时} viewstring:=viewstring+inttohex(sbuf[i],2)+'' ; end; viewstring:='发送'+ viewstring; fcomm.memo1.lines.add(viewstring); fcomm.Memo1.Lines.Add(''); if not commflg then messagedlg('发送失败!',mterror,[mbyes],0); label1.Caption:='201'; end;procedure TFcomm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var i:integer; beginviewstring:=''; move(buffer^,pchar(@rbuf)^,bufferlength); for i:=1 to bufferlength do viewstring:=viewstring+inttohex(rbuf[i],2)+''; viewstring:='接受'+viewstring; memo1.lines.add(viewstring); memo1.lines.add(''); read(buffer,sizeof(buffer)); label1.Caption:='001'; end;procedure TFcomm.Button1Click(Sender: TObject); begin sbuf[1]:=byte($00); //帧头 sbuf[2]:=byte($00); //命令号 sbuf[3]:=byte($00); sbuf[4]:=byte($00); sbuf[5]:=byte($00); sbuf[6]:=byte($00); sbuf[7]:=byte($00); sbuf[8]:=byte($00); sbuf[9]:=byte($00); sbuf[10]:=byte($00); sbuf[11]:=byte($00); sbuf[12]:=byte($55); //帧尾 senddata;//调用发送函数 end;
从设备中得到数据需要协议,可以自定义,设备中应有相应的cpu板,这样才能实现与PC的互通;
数据写入缓冲区后可以回显OK啊;
整个系统实现通信需要两部分:pc和设备,二者配合起来才能互通啊。pc要有软件,设备中要有相应的硬件以及软件(比如单片机),呵呵,否则单方面跟谁通啊。
procedure TFcomm.FormShow(Sender: TObject);
begin
comm1.StartComm;
end;procedure TFcomm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end;procedure TFcomm.senddata;
var
i:integer;
commflg:boolean;
begin
viewstring:='';
commflg:=true;
for i:=1 to 12 do
begin
if not fcomm.Comm1.WriteCommData(@sbuf[i],1) then
begin
commflg:=false;
break;
end;
sleep(2);{发送时字节间的延时}
viewstring:=viewstring+inttohex(sbuf[i],2)+'' ;
end;
viewstring:='发送'+ viewstring;
fcomm.memo1.lines.add(viewstring);
fcomm.Memo1.Lines.Add('');
if not commflg then messagedlg('发送失败!',mterror,[mbyes],0);
label1.Caption:='201';
end;procedure TFcomm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
beginviewstring:='';
move(buffer^,pchar(@rbuf)^,bufferlength);
for i:=1 to bufferlength do
viewstring:=viewstring+inttohex(rbuf[i],2)+'';
viewstring:='接受'+viewstring;
memo1.lines.add(viewstring);
memo1.lines.add('');
read(buffer,sizeof(buffer));
label1.Caption:='001';
end;procedure TFcomm.Button1Click(Sender: TObject);
begin
sbuf[1]:=byte($00); //帧头
sbuf[2]:=byte($00); //命令号
sbuf[3]:=byte($00);
sbuf[4]:=byte($00);
sbuf[5]:=byte($00);
sbuf[6]:=byte($00);
sbuf[7]:=byte($00);
sbuf[8]:=byte($00);
sbuf[9]:=byte($00);
sbuf[10]:=byte($00);
sbuf[11]:=byte($00);
sbuf[12]:=byte($55);
//帧尾
senddata;//调用发送函数
end;