ModbusTCP协议中读取浮点数的操作方法 |
您所在的位置:网站首页 › 信捷plcmodbusTCP也要轮询吗 › ModbusTCP协议中读取浮点数的操作方法 |
首先膜拜大佬,感谢大佬造好的轮子,这里是原链接。 最近在搞一个modbusTCP的通讯,我对modbus的了解基本停留在最最最简单的应用,突然一个读取浮点数的问题我就蒙圈了!!!,再此感谢大佬们!!!代码如下: 寄存器一般读到的是unsigned short,两个字节,float占两个寄存器,value1、value2对应两个寄存器的值。 float getFloat(unsigned short value1, unsigned short value2) { int intSign, intSignRest, intExponent, intExponentRest; float faResult, faDigit; intSign = unit.value(32) / 32768; intSignRest = unit.value(32) % 32768; intExponent = intSignRest / 128; intExponentRest = intSignRest % 128; faDigit = (float)(intExponentRest * 65536 + unit.value(33)) / 8388608; faResult = (float)pow(-1, intSign) * (float)pow(2, intExponent - 127) * (faDigit + 1); return faResult; }C++/C 应该能直接用,记得包含 #include
2018.1.16更新 又学了一种处理方式: float getFloat(quint16 value1, quint16 value2) { float fTemp; uint *pTemp=(uint *)&fTemp; unsigned int chTemp[4];//a,b,c,d chTemp[0]=value1&0xff; chTemp[1]=(value1>>8)&0xff; chTemp[2]=value2&0xff; chTemp[3]=(value2>>8)&0xff; //这是ABCD *pTemp=((chTemp[1] |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |