具体如下:C4 E3 B5 C4 BB B0 CC E2 B2 C4 这是我在另一个串口发过来的信息的内容。
都是十六进制的
我想在我接收的这边的memo1里显示出来,
怎么转换一下
都是十六进制的
我想在我接收的这边的memo1里显示出来,
怎么转换一下
解决方案 »
- 关于delphi程序员的出路的思考!
- [求助]成功安装ORACLE INSTALLCLIENT客户端的进来与应用程序数据库连接问题!
- Delphi7程序无法跟踪调试,怎么处理???
- 寻电子书免费下载.请各位帮忙.谢谢了.
- 一个有关精度算法的求解(二分法)?
- 类型转换一问:
- 关于网页数据库的一个问题,请教各位?
- 一个关于combobox的简单问题.(解决就给分)
- TDatetime为Float型,谁知道年、月、日、时、分、秒在Float中是如何表示的?
- 请教:怎样实现当一个richedit滚动时(包括键盘和拖动滚动条)另一个richedit同步滚动
- 日期查询问题
- 请问,如何删除DBGrid某一行的内容?
const
Tables: PChar = '0123456789ABCDEF';
var
P: PChar;
V, R: Byte;
I: Integer;
begin
Result := StringOfChar(#0, Size * 2);
P := Pointer(Result);
for I := 0 to Size - 1 do
begin
V := Ord(Buf[I]);
R := V div 16;
P[1] := Tables[V - (R * 16)];
P[0] := Tables[R];
Inc(P, 2);
end;
end;function HexToString(const S: string): string; overload;
begin
Result := HexToString(PChar(S), Length(S));
end;
function StringToHex(P: PChar; Size: Integer): string;
function CharToByte(V: Char): Byte;
begin
case V of
'a'..'f':
Result := Ord(V) - Ord('a') + 10;
'A'..'F':
Result := Ord(V) - Ord('A') + 10;
else
Result := Ord(V) - Ord('0');
end;
end; var
R: PByte;
I, Len: Integer;
begin
Len := Size div 2;
Result := StringOfChar(#0, Len);
R := PByte(Result);
for I := 1 to Len do
begin
R^ := CharToByte(P[0]) * 16 + CharToByte(P[1]);
Inc(R);
Inc(P, 2);
end;
end;
这就当是很简单的啊。
var
ReceBuffer:array of byte;//接收缓冲区
indx:integer;
tempstr:string;
begin
tempstr:='';
for indx:=low(ReceBuffer) to high(ReceBuffer) do
tempstr:=tempstr+char(ReceBuffer[indx]);
showmessage(tempstr);
//memo.lines.add(tempstr);
end;
var
i: byte;
begin
i:=$A3;
showmessage(Format('%x',[i]));
end;
{
for I := 0 to len - 1 do
result := Result + format("%x", data[I]);
}
我可能没表达清楚
C4 E3 B5 C4 BB B0 CC E2 B2 C4 这是我在另一个串口发过来的信息的内容(都是十六进制的)。
我这边 我用了一个控件mscomm 初始化和oncomm事件都写好了
我想把另一个串口传过来的十六进制的信息 显示在我这边的memo1里
显示出来的形式 还是C4 E3 B5 C4 BB B0 CC E2 B2 C4 这样的 现在在 从另一个串口发正常的汉字和十进制的数字 我这边都能在memo1里显示!!
就是发十六进制的 我这边不能显示
代码:
procedure TForm1.MSComm1Comm(Sender: TObject);
var
s:string;begin if MSComm1.CommEvent = comEvReceive then
begin
s := MSComm1.Input; end;
Memo1.Lines.Add(s);
end;现在的问题我想应该是怎么把s处理一下呢(个人意见)
Var s,r :String;
i,c :integer;
begin
s :=Edit1.Text;
r :='';
c :=Length(s);
for I := 1 to c do
Begin
if i=c then
r :=r+ IntToHex(Ord(s[i]),2)
ELSE
r :=r+ IntToHex(Ord(s[i]),2)+' ';
End;
Edit2.Text :=r;end;
他发 OA BC OB DC CA 我这边的显示OA BC OB DC CA
要是不点上hex显示 就显示他们的asc码值了
var
v:variant;
s:string;
tempstr:string;
i:integer;
begin if MSComm1.CommEvent = comEvReceive then
begin
v := MSComm1.Input;
s:=v;
tempstr:='';
for i:=1 to length(s) do
tempstr:=tempstr+inttohex(byte(s[i]),2)+' ';
Memo1.Lines.Add(s);
end;
end;