procedure TMain.mscomReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
tmpArray :array[0..4096] of Byte;
ArraySize,i : DWORD;
Count :DWORD;
tmpStr :string;
pStr :PChar;
begin
move(buffer^,tmpArray,BufferLength);
if chk.Checked then
begin
pStr:=Buffer;
tmpStr:=string(pStr);
Dec(PStr);
SetLength(tmpStr,BufferLength);
for i:=0 to Length(tmpStr)-1 do
begin
inc(PStr);
tmpArray[i]:=Byte(PSTR^);
Memo1.Lines.Add(IntToStr(Ord(tmpArray[i])));
end;
exit;
end;
pStr:= Buffer;
Memo1.Lines.Add(pStr);
end;
IntToStr(Ord(tmpArray[i])));如何把他转换为十进制 (就是电子称实计的重量)
现在电子称接收的数据为:
0
1
4
8
128
4
0
0
6
6
136
37
255
255
你好像把简单的问题复杂化了,直接将你代码中的tmpStr添加到Memo1里,然后分析这些字符串就好了,具体字符串分析因电子称而异,也不会太复杂,一般是以什么符号隔开,小数位和整数位取哪几位,或者有必要时倒过来之类的。有时会碰到每次取的长度不够或太多,就可能会需要一个全局变量保存每次取到的字符串,每读取一次数据并添加到全局变量之后以后,再判断全局变量是否达到读取一次的要求,达到了就读掉前面的,并把已经读出来的删掉,如此往复……