Added broadcast reset, minor formatting changes
This commit is contained in:
parent
45895f179e
commit
4628aa8d20
@ -4,7 +4,7 @@ from sys import argv,exit
|
||||
|
||||
def print_help():
|
||||
print( \
|
||||
f'''{argv[0]} ADDR [BAUDRATE] [{{read [REGISTER ...] | write VALUE REGISTER}}]
|
||||
f'''{argv[0]} ADDR [BAUDRATE] [{{read [REGISTER ...] | write VALUE REGISTER | reset}}]
|
||||
where:
|
||||
- ADDR is Modbus address (use 0 for broadcast; note that only write can be broadcast)
|
||||
- BAUDRATE is (optional) baud rate; default value is 19200
|
||||
@ -30,6 +30,10 @@ Turn LED off for sensor 247, baud 115200:
|
||||
{argv[0]} 247 115200 write LED_on 0
|
||||
Set brightness of all connected sensors to 50%, default baudrate (broadcast message):
|
||||
{argv[0]} 0 write LED_brightness 50
|
||||
Reset device 247, baud 19200:
|
||||
{argv[0]} 247 19200 reset
|
||||
Reset all devices, default baudrate:
|
||||
{argv[0]} 0 reset
|
||||
''')
|
||||
|
||||
# default values
|
||||
@ -99,13 +103,13 @@ if action != 'write' and len(register_name) + len(register_number) == 0:
|
||||
input_registers = [ x for x in Sensor.input_registers.keys() ]
|
||||
holding_registers = [ x for x in Sensor.holding_registers.keys() ]
|
||||
register_name = input_registers + holding_registers
|
||||
if action != 'write' and addr == 0:
|
||||
if addr == 0 and action != 'write' and action != 'reset':
|
||||
print(f'Cannot broadcast action "{action}"')
|
||||
exit(-12)
|
||||
|
||||
# Query device
|
||||
print('---- Query device ----')
|
||||
print(f'Address: {addr}\nBaudrate: {baudrate}\nAction: {action}')
|
||||
print(f'Address: {addr if addr != 0 else "0 (broadcast)"}\nBaudrate: {baudrate}\nAction: {action}')
|
||||
if action == 'write':
|
||||
print(f'Value to be written: {value}')
|
||||
# open device
|
||||
@ -150,8 +154,8 @@ elif action == 'write':
|
||||
print(f'Register number {reg_number} cannot be written')
|
||||
exit(-9)
|
||||
elif action == 'reset':
|
||||
if not s.reset():
|
||||
# reset should throw NoResponse; if it doesn't, reset failed
|
||||
if not s.reset() and addr != 0:
|
||||
# reset should throw NoResponse; if it doesn't, reset failed (broadcast shouldn't return anything)
|
||||
print('Device reset failed!')
|
||||
else:
|
||||
print('---- Device reset ----')
|
||||
|
Loading…
Reference in New Issue
Block a user