转换问题新版,求解
程序如下所示:
请注意数字"0"类型设置为I64
有点要跟你说,DBL的数据类型是64位浮点,你确定你要用那么大的吗?一般32位浮点SGL即单精度,如果你要改为单精度的,那就把程序中上面所说的“0”改为I32
这个应该要看规定吧,我见过的是由主控芯片定义的
我用了你的和刚刚那个人的方法,为什么最后显示是不一样的
为什么要一样?因为他的是错的啊!我不是跟你说了吗?他那个程序连数据类型都没理解,错得离谱。你输个300,看他还能不能转换?!
另外下图你做的,我方法转换出来的已经是16进制字符串了,你为做还要把字符串按16进制显示?我就问你一个简单的问题,你知不知道浮点数1的16进制是什么?不知道你百度一下,再对比一下两个方法哪种是对的,好吗?你都不知道答案,又怎么知道谁对谁错?
被你这一教训,我真的去搞明白了,十分感谢
外部设备,一般用第二种方式表示浮点数,你确定了外部设备需要的格式是什么了吗?
我外部设备需要的格式是这样的,中间四位是模拟输出,相当于1word,我就需要把我电脑里的出来的数据输出给这四位,才能控制外部设备
有话直说,请理解
那你这个才只有16位而已,又怎么能放浮点数进去?你有没有搞清楚到底是放什么值进去的?
是这样的,我现在需要把我这个pid得出来的值转换成我刚刚给出的格式1word打小,我才能控制外部设备,我不会的点其实就是在我应该怎么转换。
然而pid我用的就是pid工具包里的pid。
哈哈,我就说一般设备都有自己定义的格式
那你要搞清楚,你PID产生的值是什么范围,你外部设备接收的值又是什么范围?两者应该是有对应关系的吧?
我测量过我的水箱大小,还是刚刚那个格式,当hex码显示为为5A51的时候,我的水位达到了80还是90多,也就是最大的位置了,差不多这个数值,我把这些我需要的参数转换成了dbl格式放入了pid里,pid得出的值也必须在我水箱范围内,然后转换成模拟输出中间四位,才能控制我的水箱
也就是说,PID的运算结果跟你外部设备接收的值肯定有个对应关系,这个转换关系由下图可最终达到
好帖,必须支持一下!