@@ -57,25 +57,40 @@ class Serial:
5757 def __init__ (
5858 self ,
5959 node ,
60- type ,
61- group : list = [] ,
62- baudrate : int = 115200 ,
63- bytesize : int = serial . EIGHTBITS ,
64- parity : str = serial . PARITY_NONE ,
65- stopbits : int = serial . STOPBITS_ONE ,
66- timeout : int = 3 ,
67- data_size : int = 1024 ,
68- rs485_settings : dict = None ,
60+ type = None ,
61+ group = None ,
62+ baudrate = None ,
63+ bytesize = None ,
64+ parity = None ,
65+ stopbits = None ,
66+ timeout = None ,
67+ data_size = None ,
68+ rs485_settings = None ,
6969 ) -> None :
7070 self .node = node
71- self .type = type
72- self .baudrate = baudrate
73- self .bytesize = bytesize
74- self .parity = parity
75- self .stopbits = stopbits
76- self .timeout = timeout
77- self .data_size = data_size
78- self .rs485_settings = rs485_settings
71+ self .type = type if type is not None else "USB"
72+ self .baudrate = baudrate if baudrate is not None else 115200
73+ self .bytesize = bytesize if bytesize is not None else serial .EIGHTBITS
74+ self .parity = parity if parity is not None else serial .PARITY_NONE
75+ self .stopbits = (
76+ stopbits if stopbits is not None else serial .STOPBITS_ONE
77+ )
78+ self .timeout = timeout if timeout is not None else 3
79+ self .data_size = data_size if data_size is not None else 1024
80+ self .rs485_settings = (
81+ rs485_settings if rs485_settings is not None else {}
82+ )
83+ self .rs485_settings = {
84+ "rts_level_for_tx" : self .rs485_settings .get (
85+ "rts_level_for_tx" , True
86+ ),
87+ "rts_level_for_rx" : self .rs485_settings .get (
88+ "rts_level_for_rx" , False
89+ ),
90+ "delay_before_tx" : self .rs485_settings .get ("delay_before_tx" , 0.0 ),
91+ "delay_before_rx" : self .rs485_settings .get ("delay_before_rx" , 0.0 ),
92+ }
93+ group = group if group is not None else []
7994 self .ser = self .serial_init (node )
8095 self .group = []
8196 for ser in group :
@@ -134,15 +149,15 @@ def generate_random_string(length):
134149
135150def server_mode (
136151 node ,
137- type ,
138- group ,
139- baudrate ,
140- bytesize ,
141- parity ,
142- stopbits ,
143- timeout ,
144- datasize ,
145- rs485_settings ,
152+ type = None ,
153+ group = None ,
154+ baudrate = None ,
155+ bytesize = None ,
156+ parity = None ,
157+ stopbits = None ,
158+ timeout = None ,
159+ data_size = None ,
160+ rs485_settings = None ,
146161) -> None :
147162 """
148163 Running as a server, it will be sniffing for received string.
@@ -160,7 +175,7 @@ def server_mode(
160175 parity ,
161176 stopbits ,
162177 timeout ,
163- datasize ,
178+ data_size ,
164179 rs485_settings ,
165180 )
166181 logging .info ("Listening on port {} ..." .format (ser .node ))
@@ -175,15 +190,15 @@ def server_mode(
175190
176191def client_mode (
177192 node ,
178- type ,
179- group ,
180- baudrate ,
181- bytesize ,
182- parity ,
183- stopbits ,
184- timeout ,
185- datasize ,
186- rs485_settings ,
193+ type = None ,
194+ group = None ,
195+ baudrate = None ,
196+ bytesize = None ,
197+ parity = None ,
198+ stopbits = None ,
199+ timeout = None ,
200+ data_size = 1024 ,
201+ rs485_settings = None ,
187202):
188203 """
189204 Running as a clinet and it will sending out a string and wait
@@ -202,15 +217,15 @@ def client_mode(
202217 parity ,
203218 stopbits ,
204219 timeout ,
205- datasize ,
220+ data_size ,
206221 rs485_settings ,
207222 )
208223
209224 # clean up the garbage in the serial before test
210225 while ser .recv ():
211226 continue
212227
213- random_string = generate_random_string (datasize )
228+ random_string = generate_random_string (data_size )
214229 ser .send (random_string .encode ())
215230 for i in range (1 , 6 ):
216231 logging .info ("Attempting receive string... {} time" .format (i ))
@@ -229,15 +244,15 @@ def client_mode(
229244
230245def console_mode (
231246 node ,
232- type ,
233- group ,
234- baudrate ,
235- bytesize ,
236- parity ,
237- stopbits ,
238- timeout ,
239- datasize ,
240- rs485_settings ,
247+ type = None ,
248+ group = None ,
249+ baudrate = None ,
250+ bytesize = None ,
251+ parity = None ,
252+ stopbits = None ,
253+ timeout = None ,
254+ data_size = None ,
255+ rs485_settings = None ,
241256):
242257 """
243258 Test the serial port when it is in console mode
@@ -254,7 +269,7 @@ def console_mode(
254269 parity ,
255270 stopbits ,
256271 timeout ,
257- datasize ,
272+ data_size ,
258273 rs485_settings ,
259274 )
260275 try :
@@ -291,20 +306,21 @@ def create_args():
291306 "--type" ,
292307 type = str ,
293308 help = "The type of serial port (e.g. RS485, RS422, RS232, USB)" ,
294- default = "USB" ,
309+ required = False ,
295310 )
296311 parser .add_argument (
297312 "--group" ,
298313 type = str ,
299314 help = "The group of serial ports that needed to be brought up also" ,
300315 nargs = "*" ,
301- default = [] ,
316+ required = False ,
302317 )
303318 parser .add_argument (
304319 "--baudrate" ,
305320 help = "Baud rate for the serial ports" ,
306321 default = 115200 ,
307322 type = int ,
323+ required = False ,
308324 )
309325 parser .add_argument (
310326 "--bytesize" ,
@@ -316,7 +332,7 @@ def create_args():
316332 ],
317333 type = int ,
318334 help = "Bytesize" ,
319- default = 8 ,
335+ required = False ,
320336 )
321337 parser .add_argument (
322338 "--parity" ,
@@ -329,26 +345,26 @@ def create_args():
329345 ],
330346 type = lambda c : c .upper (),
331347 help = "Parity" ,
332- default = "N" ,
348+ required = False ,
333349 )
334350 parser .add_argument (
335351 "--stopbits" ,
336352 choices = [serial .STOPBITS_ONE , serial .STOPBITS_TWO ],
337353 type = int ,
338354 help = "Stopbits" ,
339- default = 1 ,
355+ required = False ,
340356 )
341357 parser .add_argument (
342358 "--datasize" ,
343359 type = int ,
344360 help = "Data size to send and receive" ,
345- default = 1024 ,
361+ required = False ,
346362 )
347363 parser .add_argument (
348364 "--timeout" ,
349365 type = int ,
350366 help = "Timeout to receive" ,
351- default = 3 ,
367+ required = False ,
352368 )
353369
354370 # Create RS485 subparser that only activates when --type=RS485
@@ -360,29 +376,25 @@ def create_args():
360376 choices = ["True" , "False" ],
361377 type = str ,
362378 help = "RTS level for transmission." "Equal to RTS_ON_SEND" ,
363- default = "True" ,
364379 required = False ,
365380 )
366381 rs485_group .add_argument (
367382 "--rts-level-for-rx" ,
368383 choices = ["True" , "False" ],
369384 type = str ,
370385 help = "RTS level for reception." "Equal to RTS_AFTER_SEND" ,
371- default = "False" ,
372386 required = False ,
373387 )
374388 rs485_group .add_argument (
375389 "--rts-delay-before-tx" ,
376390 type = float ,
377391 help = "Delay after setting RTS but before transmission starts." ,
378- default = 0.0 ,
379392 required = False ,
380393 )
381394 rs485_group .add_argument (
382395 "--rts-delay-before-rx" ,
383396 type = float ,
384397 help = "Delay after transmission ends and resetting RTS." ,
385- default = 0.0 ,
386398 required = False ,
387399 )
388400 return parser
@@ -393,15 +405,10 @@ def main():
393405 args = parser .parse_args ()
394406
395407 init_logger ()
396- rs485_settings = {}
397408 if args .type == "RS485" :
398409 rs485_settings = {
399- "rts_level_for_tx" : (
400- True if args .rts_level_for_tx == "True" else False
401- ),
402- "rts_level_for_rx" : (
403- True if args .rts_level_for_rx == "True" else False
404- ),
410+ "rts_level_for_tx" : args .rts_level_for_tx ,
411+ "rts_level_for_rx" : args .rts_level_for_rx ,
405412 "delay_before_tx" : args .rts_delay_before_tx ,
406413 "delay_before_rx" : args .rts_delay_before_rx ,
407414 }
0 commit comments