Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
fake-name committed Jan 25, 2021
1 parent 4efe6e2 commit 4298b19
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 10 deletions.
27 changes: 21 additions & 6 deletions bin/modbus
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import sys
import os
import logging

import colorama

from modbus_cli.definitions import Definitions
from modbus_cli.modbus_rtu import ModbusRtu
from modbus_cli.modbus_tcp import ModbusTcp
Expand All @@ -13,7 +15,14 @@ from modbus_cli.access import parse_accesses

def connect_to_device(args):
if args.device[0] == '/':
modbus = ModbusRtu(args.device, args.baud, args.parity, args.stop_bits, args.slave_id)
modbus = ModbusRtu(
device = args.device,
baud = args.baud,
parity = args.parity,
stop_bits = args.stop_bits,
slave_id = args.slave_id,
timeout = args.timeout
)
else:
port = 502
parts = args.device.split(':')
Expand Down Expand Up @@ -45,17 +54,23 @@ def main():
parser.add_argument('-p', '--stop-bits', type=int, default=1)
parser.add_argument('-P', '--parity', choices=['e', 'o', 'n'], default='n')
parser.add_argument('-v', '--verbose', action='store_true')
parser.add_argument('-t', '--timeout', type=float, default=5.0)
parser.add_argument('device')
parser.add_argument('access', nargs='+')
args = parser.parse_args()

if args.verbose:
logging.basicConfig(format='\033[90m%(message)s\033[39m', level=logging.DEBUG)
colorama.init()
try:
if args.verbose:
logging.basicConfig(format=colorama.Style.DIM + '%(message)s' + colorama.Style.RESET_ALL, level=logging.DEBUG)

definitions = Definitions()
definitions.parse(args.registers + os.environ.get('MODBUS_DEFINITIONS', '').split(':'))
definitions = Definitions()
definitions.parse(args.registers + os.environ.get('MODBUS_DEFINITIONS', '').split(':'))

connect_to_device(args).perform_accesses(parse_accesses(args.access, definitions), definitions).close()
connect_to_device(args).perform_accesses(parse_accesses(args.access, definitions), definitions).close()

finally:
# restore stdout/stderr if colorama has modified them (mostly on windows)
colorama.deinit()

main()
13 changes: 11 additions & 2 deletions modbus_cli/modbus_rtu.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@


class ModbusRtu:
def __init__(self, device, baud, parity, stop_bits, slave_id):
def __init__(self, device, baud, parity, stop_bits, slave_id, timeout):
from serial import PARITY_EVEN, PARITY_ODD, PARITY_NONE
parity_opts = { 'e': PARITY_EVEN, 'o': PARITY_ODD, 'n': PARITY_NONE }
self.device = device
self.timeout = timeout
self.baud = baud
self.parity = parity_opts[parity]
self.stop_bits = stop_bits
Expand All @@ -21,8 +22,16 @@ def __init__(self, device, baud, parity, stop_bits, slave_id):
def connect(self):
from serial import Serial

logging.debug("Serial port %s. Parameters: %s baud, %s stop bit(s), parity: %s, timeout %ss.",
self.device,
self.baud,
self.stop_bits,
self.parity,
self.timeout,
)

self.connection = Serial(port=self.device, baudrate=self.baud, parity=self.parity,
stopbits=self.stop_bits, bytesize=8, timeout=5)
stopbits=self.stop_bits, bytesize=8, timeout=self.timeout)

def send(self, request):
self.connection.write(request)
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
umodbus
colorama
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def readme():


setup(name='modbus_cli',
version='0.1.5',
version='0.1.6',
description='Command line tool to access Modbus devices',
long_description=readme(),
url='http://github.com/favalex/modbus-cli',
Expand All @@ -16,7 +16,7 @@ def readme():
license='MPL 2.0',
packages=['modbus_cli'],
scripts=['bin/modbus'],
install_requires=['umodbus'],
install_requires=['umodbus', 'colorama'],
zip_safe=False,
classifiers=[
'Development Status :: 4 - Beta',
Expand Down

0 comments on commit 4298b19

Please sign in to comment.