非线性传感器值计算

int getvalbyad(int min,int max,int step,int bs,int ad);
//min:码表最小值
//max: 码表最大值
//step:码表的间距
//bs:二进制字符串的句柄值
//ad:当前获取的AD值
//返回:根据传入的AD值,查询码表的间距,根据间距计算出AD值对应的测量值

示例

以某非线性传感器为例 -40~+30度 采集范围,每隔10度一个采样点,形成表格

温度 AD值
-40 0x100
-30 0x200
-20 0x300
-10 0xa00
0 0xb00
10 0x1000
20 0x1200
30 0x1400

于是我们将测量值存储到bin数组中

int bs;
bs=newbin(16);
defbin(bs,0,"00 01 00 02 00 03 00 0A 00 0B 00 10 00 12 00 14");

int pp;
pp=getvalbyad(-40,30,10,bs,256+128);
echo(pp);   //-35

注意