0

我打算在 Silicon Craft 2004 ModBus (SC2004MBS) 上显示今天的日期和时间。我尝试将值日期字符串左移并使用 write_registers() 函数传递给设备。代码如下所示:

@defer.inlineCallbacks
def DtTm():
  dt = datetime.datetime.now()
  dd= dt.strftime('%d/%m/%Y')
  da = [ord(c) for c in dd]
  display = yield protocol.write_registers(10, da, unit=1)

使用 Twisted 回调调用代码块。输出确实在设备上显示了结果,但在显示屏上的每个字符之前都有一些不需要的字符。在此处输入图像描述

4

1 回答 1

1

ord()函数生成Unicode编码,SC2004MBS是ASCII显示。不需要的字符可能是与零相关联的字形。

每次寄存器写入显示需要两个 ASCII 字符,但字节顺序似乎与生成系统的不同,因为 NUL 出现在所需字符之后。因此,您可能需要将字符对进行字节交换dd,然后将其打印为 5 个寄存器值。

于 2017-10-22T12:07:01.030 回答