Python Modbus响应,最小Modbus

Python Modbus响应,最小Modbus,python,modbus,Python,Modbus,我使用minimalmodbus获取设备的状态,但设备似乎给了我太多的字节,第一个字节总是x00,因此我没有解析最后一个字节。我还注意到,该设备最终也为我提供了x00,但在寡妇中使用了CAS $ ./rstest.py minimalmodbus.Instrument<id=0xb6c844e0, address=4, mode=rtu, close_port_after_each_call=True, precalculate_read_size=True, debug=True, s

我使用minimalmodbus获取设备的状态,但设备似乎给了我太多的字节,第一个字节总是x00,因此我没有解析最后一个字节。我还注意到,该设备最终也为我提供了x00,但在寡妇中使用了CAS

$ ./rstest.py 
minimalmodbus.Instrument<id=0xb6c844e0, address=4, mode=rtu, close_port_after_each_call=True, precalculate_read_size=True, debug=True, serial=Serial<id=0xb6c861d0, open=False>(port='/dev/ttyUSB0', baudrate=19200, bytesize=8, parity='N', stopbits=2, timeout=0.1, xonxoff=False, rtscts=False, dsrdtr=False)>

MinimalModbus debug mode. Writing to instrument (expecting 6 bytes back): '\x04\x01\x00\x00\x00\x01\xfd\x9f'
MinimalModbus debug mode. No sleep required before write. Time since previous read: 1415278843825.3 ms, minimum silent period: 2.01 ms.
MinimalModbus debug mode. Response from instrument: '\x00\x04\x01\x01\x01\x90' (6 bytes), roundtrip time: 15.6 ms. Timeout setting: 100.0 ms.

你有任何实际的代码吗?用测试代码编辑帖子当我将precalc size设置为false时,我得到了\x00\x04\x01\x01\x01\x90\x84\x00,就像我在CAS中做的一样
#!/usr/bin/env python

import minimalmodbus
import sys
minimalmodbus.CLOSE_PORT_AFTER_EACH_CALL = True
minimalmodbus.STOPBITS = 2

instr = minimalmodbus.Instrument('/dev/ttyUSB0', 04) #port, slaveadress

#instr.serial.echo = False
instr.serial.timeout = 0.1
instr.precalculate_read_size = True
instr.debug = True
instr.serial.baudrate = 19200
print instr
i = 0
c = 0
while i < 1:
    try:
        #temp = instr.read_register(2, 1, 4, signed=False)
        temp = instr.read_bit(0, functioncode=1)
        print 'OK!'
        print temp
        i = 100
    except ValueError:
        c = c + 1
        print 'Error number'
        print c 
        i = 1
    except IOError:
        c = c + 1
        print 'Error number'
        print c
        i = 1