首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

如何在串口返回的数据中添加中文说明

2012-03-25 
怎么在串口返回的数据中添加中文说明查询余额与阀门状态:EA+EA+07+表号+43H(C)+58H(X)+00+校验+16H返回:AE

怎么在串口返回的数据中添加中文说明
查询余额与阀门状态: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;

[解决办法]
你既然已经接收到数据,并且可以分开各个部分,那就再组织一下就是了,在你需要的信息前加信息
[解决办法]

Delphi(Pascal) code
var  bufRec:array of Byte ;begin  SetLength(bufRec,BufferLength);  Move(Buffer^,bufRec[0],BufferLength);end;
[解决办法]
根据你的返回状态组织你要的返回信息,然后返回发送字符串就行了
[解决办法]
是不是要这个?
表号:copy(串口接收到的字符,6,2)
序列号:copy(串口接收到的字符,8,8)
累计充值次数:copy(串口接收到的字符,16,4)
阀门状态:copy(串口接收到的字符,20,2)

热点排行