【问题标题】:Read hex or decimal from serial in Ignition从 Ignition 中的串行读取十六进制或十进制
【发布时间】:2019-03-09 06:14:33
【问题描述】:

我有一个返回 23 个十六进制值的串行设备。我在 Ignition 中使用 system.serial.readBytes('COM1', 23) 读取了这些值。这将返回 array('b', [-85, 112, 1, 18, -79, 0, 1, 116, -41, 2, -17, 10, 28, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0])。我知道这里的值是有符号 2 补码的十进制值,但我怎样才能得到十进制值?例如 -85 应该是 171,或者十六进制的 0xAB。我更喜欢直接读取十六进制值,但我不知道该怎么做。有什么想法吗?

【问题讨论】:

  • 串口模块上没有读取十六进制的方法。即使 readStringAsBytes 仍然会返回一个字节字符串,您必须将其转换为十六进制。
  • 请将您的评论转换为答案,以便我将其标记为已回答。

标签: python serial-port hex decimal ignition


【解决方案1】:

您可以轻松地将它们转换为十进制值。

def signed2unsigned(val):
    if val >= 0:
        return val
    else:
        return 256+val

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2014-02-18
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    相关资源
    最近更新 更多