有一台电子地磅显示仪表(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口,通过程序如何才能准确的读出电子地磅的数据?

解决方案 »

  1.   

    如何将他(电子地磅显示器)读出来啊,我用网上的方法,但是没有用,receive事件根本就没有触发,根本读取不到数据
      

  2.   

    是呀,我也遇到跟你一样的问题,是不是spcomm使用还有什么东西需要设呀
      

  3.   

    在Oncomm在读取数据就可以了,我以前做过这个项目,用的是托利多的列车衡
      

  4.   

    耀华 XK3190-D9/C2/A1/A2/A9/C6    (共12位)    YaoHuaA9: //耀华 XK3190-D9/C2/A1/A2/A9/C6    (共12位)
          // 数据格式  (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称重仪端
      

  5.   

    hncx (想改行了)   你的问题解决了吗?
       我有台地磅是耀华XK3190-D2+,不知有没有那位老兄能帮小弟一下!谢谢!
      

  6.   

    呵呵。前一段时间刚做了个XK3190 D2+的程序。
    又准备做长治的一个。长治维特公司的真是不厚道,不肯透露他们的串口协议,因为怕别人抢他们的生意。靠。
      

  7.   

    ccrun(老妖)(www.ccrun.com)  能不能帮忙一下?谢谢了!