//串口打开: Comm1.StartComm //串口关闭:Comm1.StopComm; //串口接受数据: procedure TFrmComm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); var i:integer; begin Viewstring:=''; Move(buffer^,pchar(@rbuf)^,BufferLength); //将数据复制到rbuf处 for i:=4 to 10 do //根据协议解析数据 begin Viewstring:=Viewstring+IntToStr(rbuf[i])+''; Viewstring:='接收'+Viewstring; Memo1.Lines.Add(Viewstring); Memo1.Lines.Add(''); end; //Comm1.StopComm; end;
procedure TQConTC200.ComRevMSG(Sender: TObject; Buffer: Pointer; BufferLength: Word); var i:Integer; iDetId:Integer; iRecNo,iTemp:Integer; begin move(buffer^,RBuf[0],BufferLength); //校验不正确,退出 if not CheckOutRev then Exit; iDetId := Ord(RBuf[2]); 按位拆分就是了。 end;
//串口打开: Comm1.StartComm
//串口关闭:Comm1.StopComm;
//串口接受数据:
procedure TFrmComm.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
begin
Viewstring:='';
Move(buffer^,pchar(@rbuf)^,BufferLength); //将数据复制到rbuf处
for i:=4 to 10 do //根据协议解析数据
begin
Viewstring:=Viewstring+IntToStr(rbuf[i])+'';
Viewstring:='接收'+Viewstring;
Memo1.Lines.Add(Viewstring);
Memo1.Lines.Add('');
end;
//Comm1.StopComm;
end;
BufferLength: Word);
var
i:Integer;
iDetId:Integer;
iRecNo,iTemp:Integer;
begin
move(buffer^,RBuf[0],BufferLength);
//校验不正确,退出
if not CheckOutRev then Exit; iDetId := Ord(RBuf[2]); 按位拆分就是了。
end;
begin
//inherited Create(True);
try
//CoInitialize(nil);
//CoInitializeEx(Nil,COINIT_MULTITHREADED); FADOConnect := TADOConnection.Create(nil);
FADOConnect := FDM.ADOConnect;
//FADOConnect.ConnectionString := FDM.ADOConnect.ConnectionString;
//FADOConnect.LoginPrompt := False;
//FADOConnect.Open; sName:=sComName;
FTComm:=TComm.Create(nil);
//FTComm:=aTComm;
FTComm.CommName := '\\.\'+sComName; //解决超过十的串口问题
FTComm.BaudRate := 4800;
FTComm.Inx_XonXoffFlow := False;
FTComm.Outx_XonXoffFlow := False;
FTComm.ReadIntervalTimeout := 220;
FTComm.StartComm;
接收:68 6D 00 6D 00 68 88 01 00 03 00 F6 0C EC 01 01 02 05 01 EE EE EE EE EE EE EE EE 0C 05 00 17 20 01 3D 16
分析:p1F42请求当日正向无功电能,数据格式见page51,费率数M=1.应答数据中,费率数=1,当日无功电能为负数,应答全部是0xEEEEEEEE。数据帧的格式都是协议里面定义好的,每个字节代表什么意思协议都规定死了!!!!