Skip to content

Commit d69b238

Browse files
committed
add logger to gateway example
1 parent 3200a9b commit d69b238

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

examples/server_gateway.py

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"""
1414

1515
import argparse
16+
import logging
1617
import queue
1718
import struct
1819
from threading import Thread, Event
@@ -21,7 +22,7 @@
2122
from pyModbusTCP.utils import crc16
2223
from pyModbusTCP.constants import EXP_GATEWAY_PATH_UNAVAILABLE, EXP_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND
2324
# need sudo pip install pyserial==3.4
24-
import serial
25+
from serial import Serial, serialutil
2526

2627

2728
# some class
@@ -159,12 +160,26 @@ def srv_engine_entry(self, session_data):
159160
parser.add_argument('-b', '--baudrate', type=int, default=9600, help='serial rate (default is 9600)')
160161
parser.add_argument('-t', '--timeout', type=float, default=1.0, help='timeout delay (default is 1.0 s)')
161162
parser.add_argument('-e', '--eof', type=float, default=0.05, help='end of frame delay (default is 0.05 s)')
163+
parser.add_argument('-d', '--debug', action='store_true', help='set debug mode')
162164
args = parser.parse_args()
163-
# init serial port
164-
serial_port = serial.Serial(port=args.device, baudrate=args.baudrate)
165-
# start serial worker thread
166-
serial_worker = ModbusSerialWorker(serial_port, args.timeout, args.eof)
167-
serial_worker.start()
168-
# start modbus server with custom engine
169-
srv = ModbusServer(host=args.host, port=args.port, ext_engine=serial_worker.srv_engine_entry)
170-
srv.start()
165+
# init logging
166+
logging.basicConfig(level=logging.DEBUG if args.debug else None)
167+
logger = logging.getLogger(__name__)
168+
try:
169+
# init serial port
170+
logger.debug('Open serial port %s at %d bauds', args.device, args.baudrate)
171+
serial_port = Serial(port=args.device, baudrate=args.baudrate)
172+
# start serial worker thread
173+
logger.debug('Start serial worker thread')
174+
serial_worker = ModbusSerialWorker(serial_port, args.timeout, args.eof)
175+
serial_worker.start()
176+
# start modbus server with custom engine
177+
logger.debug('Start modbus server (%s, %d)', args.host, args.port)
178+
srv = ModbusServer(host=args.host, port=args.port, ext_engine=serial_worker.srv_engine_entry)
179+
srv.start()
180+
except serialutil.SerialException as e:
181+
logger.critical('Serial device error: %r', e)
182+
exit(1)
183+
except ModbusServer.Error as e:
184+
logger.critical('Modbus server error: %r', e)
185+
exit(2)

0 commit comments

Comments
 (0)