type-conversion - CAPL - 将 4 个原始字节转换为浮点数
问题描述
CAPL - 向量。
我收到消息 ID 0x110,其中包含当前信息:
0x3E6978D5 -> 0.228
目前我可以读取数据并保存到环境变量中以显示在面板中使用:
putValue(slow_current, this.long(4));
但我不知道如何将 HEX 4 字节转换为浮点变量,因为我不能使用地址或强制转换 (float* x = (float *)&vBuffer;)
如何在 CAPL 脚本中进行这种转换?谢谢。
解决方案
通常,您的 dbc 文件应包含从原始值(在您的情况下为 4B 长)到因子和偏移定义形式的物理值的转换信息:
因此,您的电流物理值应计算如下:phys_val = (raw_value * factor) + offset
注意:如果您定义负偏移量,那么您实际上是在上面的等式中减去它。
但是您似乎没有 dbc 文件,因此您需要自己计算因子和偏移量(如果您有 2 个示例原始值并知道它们的物理等价物,那么它应该像查找线性方程参数一样简单 -> y =斧头 + b)。
CAPL 应如下所示:
variables
{
float current_phys;
/* adjust below values to your needs */
float factor = 0.001
dword offset = -1000
}
on message 0x110
{
current_phys = (this.long(4) * factor) + offset;
write(current_phys);
}
推荐阅读
- php - Woocommerce price in loop displays on wrong item
- android - 如何将 Android 库导出为 jar?
- spring - 忽略war maven tomcat插件中的jar包装?
- visual-studio-code - 为什么 vscode vim.otherModesKeyBindingNonRecursive 是未知配置?
- google-cloud-platform - Google Compute Engine VM 实例不会停止。如何强制停止?
- c++ - 如何在嵌套向量对中添加和访问元素?
- php - 如何在 laravel 5.5 中操作和调整图像大小
- android-studio - 我无法制作我的第一个应用程序
- c# - 使用 C# 将证书从 LocalComputer 复制到 CurrentUser
- python - Create a long data frame comprising number sequences according to each user's value in pandas