我正在准备一个通过CANbus (电源、电压、电流等)发送各种电气参数的代码。在这种情况下,精度是必需的。
我看到有两种选择:
我的问题如下:
提前谢谢你。
发布于 2022-09-13 07:03:19
首先,请阅读这个答案,因为它回答了所有浮点关注的问题:
发送浮点值。
是的,尽管像任何一个大的数字一样,它们依赖endianess,所以您必须为您的CAN应用层上的浮点指定一个网络endianess。在单个包中发送4或8个字节显然不是问题。
这是不常见的做法,未缩放的原始数据是目前为止最常见和最方便的。例如,如果您希望表示0到5V之间的电压,您可以发送0到65535之间的原始数据值,然后将其缩放为表示Volt,如果您确实需要在某个点使用该单元(例如,当在显示器上显示人类的电压时)。
原始数据表单还具有向前/向后兼容技术的优点。假设您使用10位ADC读取电压。您的值将在0到1023之间。您可以用(65536/1024) = 64乘以16位原始数据来表示。几年后,您切换到一个12位的ADC值高达4095。然后,您可以保持完全相同的can协议和格式,只需增加分辨率,减少原始数据的“步骤”。
https://stackoverflow.com/questions/73690327
复制相似问题