查询余额与阀门状态:EA+EA+07+表号+43H(C)+58H(X)+00+校验+16H
返回:AE+AE+0BH+表号+序列号(4字节)+累计充值次数(2字节)+阀门状态+校验+61H现在返回的是 AE AE 0B 00 11 05 00 02 02 15 00 3A 61 我想达到的目的是表号:00
序列号:11 05 00 02
累计充值次数:02 15
阀门状态:00接收串口信息代码如下:procedure Tform1.Com1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);var str :string;
begin
//Memo自动清空
if cbAutoClean.Checked and (Memo1.Lines.Count > 50) then
Memo1.Clear; SetLength(Str,BufferLength);
move(buffer^,pchar(@Str[1])^,bufferlength);
if FShowText then
begin
if cbRecHex.Checked then
Memo1.Text:='成功接收'+Memo1.Text+StrToHexStr(Str)+' '
else
Memo1.Text := Memo1.Text + Str;
Memo1.SelStart := Length(Memo1.Text);
Memo1.SelLength:= 0;
Memo1.Perform(EM_SCROLLCARET,0,0);
end;
FRXNum:=FRXNum+bufferlength;
ShowRX;end;
返回:AE+AE+0BH+表号+序列号(4字节)+累计充值次数(2字节)+阀门状态+校验+61H现在返回的是 AE AE 0B 00 11 05 00 02 02 15 00 3A 61 我想达到的目的是表号:00
序列号:11 05 00 02
累计充值次数:02 15
阀门状态:00接收串口信息代码如下:procedure Tform1.Com1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);var str :string;
begin
//Memo自动清空
if cbAutoClean.Checked and (Memo1.Lines.Count > 50) then
Memo1.Clear; SetLength(Str,BufferLength);
move(buffer^,pchar(@Str[1])^,bufferlength);
if FShowText then
begin
if cbRecHex.Checked then
Memo1.Text:='成功接收'+Memo1.Text+StrToHexStr(Str)+' '
else
Memo1.Text := Memo1.Text + Str;
Memo1.SelStart := Length(Memo1.Text);
Memo1.SelLength:= 0;
Memo1.Perform(EM_SCROLLCARET,0,0);
end;
FRXNum:=FRXNum+bufferlength;
ShowRX;end;
var
bufRec:array of Byte ;
begin
SetLength(bufRec,BufferLength);
Move(Buffer^,bufRec[0],BufferLength);end;
'AE'在buf[0],'OB'在buf[2],'00'在buf[3]
表号:copy(串口接收到的字符,6,2)
序列号:copy(串口接收到的字符,8,8)
累计充值次数:copy(串口接收到的字符,16,4)
阀门状态:copy(串口接收到的字符,20,2)