如果出来的的确只是ASCII的话还是好转换的,你去看就知道了,还是给你一段16进制的吧!!
ASCII就更简单了!!
procedure Tdihengjianjin.MSComm2Comm(Sender: TObject);
var
outstr, outstr1, flag1: string[10];
i, j, l, leninbuf, temp1: integer;
InTempS: variant;
sqh1, sqh2: string;
begin
/////////读16进制的数据
{从串口读取数据到variant变量中}
intemps := Mscomm1.Input;
{转换后的结果存于outstr}
outstr := '';
LenInBuf := VarArrayHighBound(InTempS, 1) + 1;
//转换二进制为16进制{FF 08 60 12 00}车重为1260kg
{如果缓冲区字节超过5个再读取处理}
if LenInBuf >= 5 then
begin
{将后三个数据位转换二进制为16进制}
for i := 5 downto 3 do
outstr := outstr + inttohex(Byte(InTempS[i - 1]), 2);
{处理有效数据前面的零位}
j := length(outstr);
//计算第一个非零值所在位置存于变量L中
i := 1;
while (outstr = '0') do
begin
i := i + 1;
end;
L := i;
//从第一个非零值所在位置拷贝数据到变量outstr1中
outstr1 := copy(outstr, L, j - L + 1);
label15.caption := outstr1;
end;