从设备上 返回一个BYTE数组,其中需要显示一项指标 为 温度 它返回 对应的 的数值为 001  116 而它实际的值为 37.2℃,不知道怎么转换过来的,请教各位大侠。
即仪器界面上显示温度为 37.2℃,而它对应的 BYTE数组 数值为 001  116。

解决方案 »

  1.   

    我兼搞自控,我能邦你分析出来!
    自控的温度我见过的几种格式:
    1.BCD码,小数点是隐含的;如1位小数或没有小数
    2.线性对应,如: 0-4000 对应0-400度,这与量程有关。
                也有: 0-32000对应0-400度,也与量程有关;
     
      

  2.   

    如果连 001  116 是多少进制显示都不明确,是没法分析下去的;
    是用什么软件显示出的? 如果PLC程序,它会注明是
    16进,8进,10进? 
    存贮器内的数值都是二进制的,但太长不方便,为了让你看到方便的数值,
    软件会显示成其它进制的。楼主做为程序员,这点要搞清楚的。
    你的BYTE数组是C++BUILDER程序显示的,那肯定是十进制的了。
    第一个字节是1,第二字节是116了,是这样吗?要说清楚的。  
      

  3.   

    这样一分析,马上就得出结论了:
    两个字节表示一个温度,1是高位,116是低位
    这两个字节就是一个16位短整数,1*256+116=372
    表示37.2度,隐含了一个十进位小数点,即倍率是0.1,
    t=(b1*256+b2)/10.
    就这么简单!
      

  4.   

    我在工厂,搞C++BUILDER十多年,又改行搞自控仪表/PLC多年,
    两个都会。什么OPC,485通迅滚熟,只是书呆子一个,混的
    潦倒,没办法了。