smarthome@ServerAllgemein:~$ python3 ./bin/modbustkbug.py
3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609]
Linux-4.4.0-57-generic-x86_64-with-Ubuntu-16.04-xenial
B
0
<class 'bytearray'>
<class 'int'>
File "/usr/local/lib/python3.5/dist-packages/modbus_tk/modbus.py", line 815, in handle_request
response_pdu = slave.handle_request(request_pdu)
File "/usr/local/lib/python3.5/dist-packages/modbus_tk/modbus.py", line 620, in handle_request
response_pdu = self._fn_code_map[function_code](request_pdu)
File "/usr/local/lib/python3.5/dist-packages/modbus_tk/modbus.py", line 550, in _write_multiple_coils
(byte_vailue, ) = struct.unpack(">"+fmt,request_pdu[6+i])
handle request failed: a bytes-like object is required, not 'int'
Traceback (most recent call last):
File "./bin/modbustkbug.py", line 24, in <module>
master.execute(slave_addr, cst.WRITE_MULTIPLE_COILS, 5, output_value=[0, 0])
File "/usr/local/lib/python3.5/dist-packages/modbus_tk/utils.py", line 31, in new
raise excpt
File "/usr/local/lib/python3.5/dist-packages/modbus_tk/utils.py", line 29, in new
ret = fcn(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/modbus_tk/modbus.py", line 288, in execute
response = self._recv(expected_length)
File "/usr/local/lib/python3.5/dist-packages/modbus_tk/modbus_tcp.py", line 215, in _recv
rcv_byte = self._sock.recv(1)
socket.timeout: timed out
It works for me if I set modbus.py line 553 to:
(byte_value, ) = struct.unpack(">"+fmt,bytes([request_pdu[6+i]]))
The follwoing fails:
Added follwoing debug prints to "modbus.py"
Output is
It works for me if I set modbus.py line 553 to:
(byte_value, ) = struct.unpack(">"+fmt,bytes([request_pdu[6+i]]))