Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PyModBus在SC2004MB上显示今天的日期_Python_Embedded_Twisted_Modbus_Pymodbus3 - Fatal编程技术网

Python 使用PyModBus在SC2004MB上显示今天的日期

Python 使用PyModBus在SC2004MB上显示今天的日期,python,embedded,twisted,modbus,pymodbus3,Python,Embedded,Twisted,Modbus,Pymodbus3,我打算在Silicon Craft 2004 ModBus SC2004MB上显示今天的日期和时间。我尝试将值日期字符串左移,并使用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.w

我打算在Silicon Craft 2004 ModBus SC2004MB上显示今天的日期和时间。我尝试将值日期字符串左移,并使用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回调调用代码块。输出确实会在设备上显示结果,但在显示屏上的每个字符前都有一些不需要的字符。

ord函数生成Unicode编码,SC2004MB是ASCII显示。不需要的字符可能是与零关联的标志符号


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

@CIifford,我确实尝试使用以下代码执行byteswap,da=np.array[ordcfor c in dd],dtype=np.int16 da.byteswapTrue,但无法获得所需的输出。我使用了numpy库。但您仍在生成Unicode字符!我不是Python专家,我不知道你的byteswap代码是否正确,但使用Unicode是不正确的。我建议你从display=yield protocol.write_register5,dd,unit=1开始,如果你得到了正确的字符和长度,然后担心字节顺序,如果我怀疑它们是成对交换的。