gpt4 book ai didi

python - 如何解决 Pylibmodbus 中的 TypeError 异常?

转载 作者:行者123 更新时间:2023-12-01 07:47:19 26 4
gpt4 key购买 nike

我正在尝试创建此 ModbusRtu 对象,但是当我尝试插入一些参数时,它似乎会引发错误。即使我只是尝试按照作者指定的原始参数运行它,也会出现同样的错误。我目前已经安装了所有必需的软件包。

libffi-dev - 3.2.1-4libmodbus - 3.1.4-2libmodbus-dev - 3.1.4-2python-dev - 2.7.15~rc1-1cffi-2.19

我真的很困惑为什么它不应该工作,因为即使是作者定义的参数似乎也会产生相同的错误。

我已经尝试通过将参数转换为字节、列表或元组来遵循其消息,但它只会引发另一个异常

``` Python Code 1 (before my solution)
self.master = ModbusRtu(device='/dev/ttyACM0',
baud=9600, data_bit=8,
parity='N', stop_bit=1)

``` Python Code 2 (after my solution)
self.master = ModbusRtu(device=bytes('/dev/ttyACM0', 'ascii),
baud=9600, data_bit=8,
parity=bytes('N', 'ascii), stop_bit=1)


``` Simpler Python Code 1
from pylibmodbus import ModbusRtu

def main():
client = ModbusRtu()
# i can't instantiate the ModbusRtu class
print(client)
# i should have at least the id of the instantiated class
if __name__ == '__main__':
main()

据说它创建了对象,但我只收到了这条消息:

文件“/usr/local/lib/python3.6/dist-packages/pylibmodbus/modbus_rtu.py”,第 11 行,init self.ctx = C.modbus_new_rtu(设备、波特率、奇偶校验、数据位、 停止位)类型错误:ctype 'char *' 的初始值设定项必须是字节、列表或元组,而不是 str

当我尝试将字符串参数转换为字节时,我收到此消息:

文件“/usr/local/lib/python3.6/dist-packages/pylibmodbus/modbus_core.py”,第 60 行,在 _run 中 引发异常(ffi.string(C.modbus_strerror(ffi.errno)))异常:b'没有这样的文件或目录'

最佳答案

这对我来说适用于 Python 2.x:

from pylibmodbus import ModbusRtu

client=ModbusRtu(device="/dev/ttyACM0", baud=19200, parity="N", data_bit=8, stop_bit=1)

client.connect()
SERVER_ID=0

client.set_slave(SERVER_ID)

client.write_registers(0, [0]*10)

result=(client.read_registers(0, 10))
print result

client.close()

对于 Python 3.x,你必须对文本进行编码,我认为这是你的问题:

从 pylibmodbus 导入 ModbusRtu

client=ModbusRtu(device="/dev/ttyACM0".encode("ascii"), baud=19200, parity="N".encode("ascii"), data_bit=8, stop_bit=1)

client.connect()
SERVER_ID=0

client.set_slave(SERVER_ID)

client.write_registers(0, [0]*10)

result=(client.read_registers(0, 10))
print(result)

client.close()

关于python - 如何解决 Pylibmodbus 中的 TypeError 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56406959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com