我有Davis Vantagepro 2气象站,我正在使用pyvantagepro(pip install pyvantagepro/GitHub)从终端设备获取当前数据。当外界温度保持在0华氏度以上时,一切正常,但不幸的是,在芬兰,这只和7月份一样。当温度低于0华氏度时,pyvantagepro返回的温度值约为6549.098(3620.61摄氏度)。你知道吗
某个地方有人提出,问题可能是温度是无符号16位整数,这就是为什么它在那个点上翻转。你知道吗
我不知道该怎么修。我试图改变pyvantagepro的循环格式分析器.py文件从('TempOut','H')到('TempOut','I'),希望能容纳更大的值,但之后就什么都不起作用了。你知道吗
有什么建议可以让它工作吗?我没有特别的理由使用这个,只有这个图书馆,所以请随意建议更好的图书馆(更好的是在易于使用和确认返回温度低于0华氏度正确)。你知道吗
如果有一个(404),我会把这个贴在projects问题跟踪器上。你知道吗
谢谢。你知道吗
[编辑]
它是固定在当前版本,现在有问题跟踪器。你知道吗
根据python struct documentation,格式说明符
H
和I
都用于无符号数据类型。所发生的事情是,当数字降到零下时,unsigned
变量环绕着数字线,变成非常大的正数数字。你知道吗很可能您可以尝试在分析器.py格式化有符号16位int的字符串,但是您可能会注意到一些奇怪的值:
当然,这在芬兰可能不是问题,因为一周中的大部分时间温度都可能低于3276.7华氏度-但是修改客户端库有点难看,因为这意味着每次客户端提供更新时都必须这样做。你知道吗
如果变量已经包装并减去了正确的数量,那么最好在自己的代码测试中应用一些基本的修复。例如,请看以下内容:
当然,我们只想减去65000当我们知道我们的价值已经包装。由于客户端库似乎将接收到的值除以10得到一个小数点,因此可以执行以下操作:
这里的常量值是基于无符号short(65535)和有符号short(该值的一半)的最大值。从长远来看,联系仪器制造商来描述您的问题并看看他们的建议也是值得的。你知道吗
相关问题 更多 >
编程相关推荐