想要使用下一个代码为我的ModbusClient指定源地址:
from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient('x.x.x.x', port=502, source_address=1)
但收到下一个错误:
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
client = ModbusTcpClient('x.x.x.x', port=502, source_address=1)
TypeError: __init__() got an unexpected keyword argument 'source_address'
在documentation中定义了这种可能性以及类使用**kwargs
它应该采用任何参数。
答案 0 :(得分:1)
搜索源代码我看到他们像这样获取source_address:
self.source_address = kwargs.get('source_address', ('', 0))
答案 1 :(得分:1)
请注意,根据文档,source_address应该是一个元组,你给它的数字1.这个source_address然后用于socket.create_connection,所以我们可以查看python文档,看看它应该是什么:
在连接之前,source_address必须是要绑定到套接字的套接字的2元组(主机,端口)作为其源地址。如果主机或端口分别为'或0,则将使用操作系统默认行为。
- https://docs.python.org/2/library/socket.html#socket.create_connection