有一台电子地磅显示仪表(XK3190-D9耀华的)的参数说明如下:1、串行通讯接口为15针RS232串口
2、所有数据均为ASCII码,每组数据由10位组成,第一位为起始位,第10位为结束位
3、通讯方式:连续方式
每帧数据由12组数据组成,格式如下第X字节 内容及注解
1 02(XON) 开始
2 +或- 符号位
3 称重数据 高位
4 称重数据
5 称重数据
6 称重数据
7 称重数据
8 称重数据 低位
9 小数点位数 从右到左,(0~4)
10 异或校验 高四位
11 异或校验 低四位
12 03(XOFF) 结束现将其接到计算机Com口,通过程序如何才能准确的读出电子地磅的数据?
2、所有数据均为ASCII码,每组数据由10位组成,第一位为起始位,第10位为结束位
3、通讯方式:连续方式
每帧数据由12组数据组成,格式如下第X字节 内容及注解
1 02(XON) 开始
2 +或- 符号位
3 称重数据 高位
4 称重数据
5 称重数据
6 称重数据
7 称重数据
8 称重数据 低位
9 小数点位数 从右到左,(0~4)
10 异或校验 高四位
11 异或校验 低四位
12 03(XOFF) 结束现将其接到计算机Com口,通过程序如何才能准确的读出电子地磅的数据?
// 数据格式 (2)00005001E(3) -- 02 2B 30 30 30 30 35 30 30 31 45 03
begin
DotString := '0.';
VerifiD := ReceiveData[1] xor
ReceiveData[2] xor
ReceiveData[3] xor
ReceiveData[4] xor
ReceiveData[5] xor
ReceiveData[6] xor
ReceiveData[7] xor
ReceiveData[8];
VerifiH := (VerifiD and $F0) shr 4;
VerifiL := VerifiD and $0F; if VerifiH > 9 then
VerifiH := VerifiH + $37
else
VerifiH := VerifiH + $30; if VerifiL > 9 then
VerifiL := VerifiL + $37
else
VerifiL := VerifiL + $30; if (ReceiveData[9] = VerifiH)
and (ReceiveData[10] = VerifiL) then
begin
//处理数据
for i := 2 to 8 do
begin
if not (S[i] in ['0'..'9']) then
S[i] := #48;
if i = 8 then break; //不要第九个
Vstr := Vstr + S[i];
end;
try
iDotPos := strtoint(S[8]);
iExponent := -iDotPos;
iSValue := strtoint(Vstr) * intPower(10, iExponent);
if (iDotPos < 6) and (iDotPos >= 1) then
Insert('.', Vstr, 7 - iDotPos);
if iDotPos >= 6 then
begin
for i := 7 to iDotPos do
DotString := DotString + '0';
Insert(DotString, Vstr, 0);
end; if (ReceiveData[1] = $2D) then
begin
Vstr := '-' + Vstr;
iSValue := -iSValue;
end;
Vstr := ALLTrimZeroInStr(Vstr);
这个是字符串值 Vstr;
这个是浮点值 iSValue; //实时数据
except
end;
end;
end;
接线方式:
PC端:
RS232C
信号地 TXD RXD
8Pin 7Pin 6Pin称重仪端
我有台地磅是耀华XK3190-D2+,不知有没有那位老兄能帮小弟一下!谢谢!
又准备做长治的一个。长治维特公司的真是不厚道,不肯透露他们的串口协议,因为怕别人抢他们的生意。靠。