首页 新闻 搜索 专区 学院

delphi接收电子称数据如何转换

0
悬赏园豆:10 [已解决问题] 解决于 2012-02-15 20:00
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

巴巴掌的主页 巴巴掌 | 初学一级 | 园豆:144
提问于:2011-04-15 17:11
< >
分享
最佳答案
1

你好像把简单的问题复杂化了,直接将你代码中的tmpStr添加到Memo1里,然后分析这些字符串就好了,具体字符串分析因电子称而异,也不会太复杂,一般是以什么符号隔开,小数位和整数位取哪几位,或者有必要时倒过来之类的。有时会碰到每次取的长度不够或太多,就可能会需要一个全局变量保存每次取到的字符串,每读取一次数据并添加到全局变量之后以后,再判断全局变量是否达到读取一次的要求,达到了就读掉前面的,并把已经读出来的删掉,如此往复……

收获园豆:10
lotsbug | 菜鸟二级 |园豆:215 | 2011-04-16 02:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册