Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib/python3.7/site-packages/serial/tools/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/serial/tools/__pycache__/miniterm.cpython-37.pyc

B

��oY��@s�ddlZddlZddlZddlZddlZddlmZddlmZe�	dd��ye
Wnek
rreZ
e
ZYnXdd�ZGdd	�d	e�Zejd
kr�ddlZddlZGdd�de�ZGd
d�de�ZnDejdkr�ddlZddlZddlZGdd�de�Zned�ej���Gdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd�de!�Z"Gdd�de�Z#Gd d!�d!e�Z$Gd"d#�d#e�Z%eee d$�Z&ee!e"e#e$e%d%�Z'd&d'�Z(Gd(d)�d)e�Z)d.d+d,�Z*e+d-k�r�e*�dS)/�N)�comports)�
hexlify_codeccCs|dkrt��SdS)N�hexlify)r�getregentry)�c�r�F/opt/alt/python37/lib/python3.7/site-packages/serial/tools/miniterm.py�<lambda>�r	cCs.t|�}|dkr"d�td�|�St|�SdS)z)generate a readable description for a key� z	Ctrl+{:c}�@N)�ord�format�repr)�	characterZ
ascii_coderrr�key_descriptionsrc@sXeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�ConsoleBasez8OS abstraction for console (input/output codec, no echo)cCs*tjdkrtjj|_ntj|_tj|_dS)N)�r)�sys�version_info�stdout�buffer�byte_output�output)�selfrrr�__init__,s
zConsoleBase.__init__cCsdS)z.Set console to read single characters, no echoNr)rrrr�setup3szConsoleBase.setupcCsdS)z Restore default console settingsNr)rrrr�cleanup6szConsoleBase.cleanupcCsdS)z"Read a single key from the consoleNr)rrrr�getkey9szConsoleBase.getkeycCs|j�|�|j��dS)zWrite bytes (already encoded)N)r�write�flush)rZbyte_stringrrr�write_bytes=szConsoleBase.write_bytescCs|j�|�|j��dS)zWrite stringN)rrr )r�textrrrrBszConsoleBase.writecCsdS)zCancel getkey operationNr)rrrr�cancelGszConsoleBase.cancelcCs|��|S)N)r)rrrr�	__enter__NszConsoleBase.__enter__cOs|��dS)N)r)r�args�kwargsrrr�__exit__RszConsoleBase.__exit__N)
�__name__�
__module__�__qualname__�__doc__rrrrr!rr#r$r'rrrrr)sr�ntc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�Outz$file-like wrapper that uses os.writecCs
||_dS)N)�fd)rr.rrrr]szOut.__init__cCsdS)Nr)rrrrr `sz	Out.flushcCst�|j|�dS)N)�osrr.)r�srrrrcsz	Out.writeN)r(r)r*r+rr rrrrrr-Zsr-cs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS)	�Consolecs�tt|���tjj��|_tjj��|_	tjj�
d�tjj�d�t�
d�ttj���d�|_t�
d�ttj���d�t_|jt_d|j_dS)Ni�zUTF-8�replace)�superr1r�ctypes�windll�kernel32ZGetConsoleOutputCP�
_saved_ocpZGetConsoleCP�
_saved_icp�SetConsoleOutputCP�SetConsoleCP�codecs�	getwriterr-rr�filenor�stderr�encoding)r)�	__class__rrrgszConsole.__init__cCs$tjj�|j�tjj�|j�dS)N)r4r5r6r9r7r:r8)rrrr�__del__sszConsole.__del__cCsHxBt��}|td�krtd�S|td�td�fkr<t��q|SqWdS)N�
�
r�)�msvcrtZgetwch�unichr)r�zrrrrws
zConsole.getkeycCs$tjj��}tjj�|ddd�dS)N�rBr)r4r5r6ZGetConsoleWindowZuser32ZPostMessageA)rZhwndrrrr#�szConsole.cancel)r(r)r*rrArr#�
__classcell__rr)r@rr1fs
r1�posixcs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)r1csbtt|���tj��|_t�|j�|_	t
�|j�tj
dkrVt�tjj�tj�|_ntj|_dS)N)rr)r3r1rr�stdinr=r.�termios�	tcgetattr�old�atexit�registerrrr;�	getreaderr?�	enc_stdin)r)r@rrr�s
zConsole.__init__cCsbt�|j�}|dtj@tj@tj@|d<d|dtj<d|dtj<t�|jtj	|�dS)Nr��r)
rLrMr.ZICANONZECHOZISIGZVMINZVTIME�	tcsetattrZTCSANOW)r�newrrrr�s
$z
Console.setupcCs$|j�d�}|td�kr td�}|S)NrS��)rR�readrF)rrrrrr�szConsole.getkeycCst�|jtjd�dS)N�)�fcntlZioctlr.rLZTIOCSTI)rrrrr#�szConsole.cancelcCst�|jtj|j�dS)N)rLrUr.Z	TCSAFLUSHrN)rrrrr�szConsole.cleanup)	r(r)r*rrrr#rrIrr)r@rr1�s

z9Sorry no implementation for your platform ({}) available.c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�	Transformz&do-nothing: forward all data unchangedcCs|S)ztext received from serial portr)rr"rrr�rx�szTransform.rxcCs|S)ztext to be sent to serial portr)rr"rrr�tx�szTransform.txcCs|S)z(text to be sent but displayed on consoler)rr"rrr�echo�szTransform.echoN)r(r)r*r+r]r^r_rrrrr\�sr\c@seZdZdZdd�ZdS)�CRLFzENTER sends CR+LFcCs|�dd�S)N�
z
)r2)rr"rrrr^�szCRLF.txN)r(r)r*r+r^rrrrr`�sr`c@s eZdZdZdd�Zdd�ZdS)�CRzENTER sends CRcCs|�dd�S)N�
ra)r2)rr"rrrr]�szCR.rxcCs|�dd�S)Nrarc)r2)rr"rrrr^�szCR.txN)r(r)r*r+r]r^rrrrrb�srbc@seZdZdZdS)�LFzENTER sends LFN)r(r)r*r+rrrrrd�srdc@sBeZdZdZedd�ed�D��Ze�ddd��dd	�ZeZ	d
S)�
NoTerminalz0remove typical terminal control codes from inputccs&|]}t|�dkr|d|fVqdS)z
	i$N)rF)�.0�xrrr�	<genexpr>�szNoTerminal.<genexpr>ri!$i%$)rW�cCs|�|j�S)N)�	translate�REPLACEMENT_MAP)rr"rrrr]�sz
NoTerminal.rxN)
r(r)r*r+�dict�rangerk�updater]r_rrrrre�s
rec@s8eZdZdZedd�ed�D��Ze�dddd��d	S)
�
NoControlsz%Remove all control codes, incl. CR+LFccs|]}|d|fVqdS)i$Nr)rfrgrrrrh�szNoControls.<genexpr>ri#$i!$i%$)rrWriN)r(r)r*r+rlrmrkrnrrrrro�sroc@seZdZdZdd�ZeZdS)�	PrintablezMShow decimal code for all non-ASCII characters and replace most control codescCs�g}x~|D]v}d|kr"dks,n|dkr8|�|�q
|dkrX|�tdt|���q
|�dd�d�t|��D��|�d�q
Wd�|�S)	N� �z
	i$css"|]}tdt|�d�VqdS)i� �0N)rFr
)rf�drrrrh�szPrintable.rx.<locals>.<genexpr>z{:d}�)�appendrFr
�extendr�join)rr"�rrrrrr]�s
zPrintable.rxN)r(r)r*r+r]r_rrrrrp�srpc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�Colorizez,Apply different colors for received and echocCsd|_d|_dS)Nzz)�input_color�
echo_color)rrrrrszColorize.__init__cCs
|j|S)N)r{)rr"rrrr]szColorize.rxcCs
|j|S)N)r|)rr"rrrr_sz
Colorize.echoN)r(r)r*r+rr]r_rrrrrzsrzc@s eZdZdZdd�Zdd�ZdS)�DebugIOzPrint what is sent and receivedcCs$tj�d�t|���tj��|S)Nz	 [RX:{}] )rr>rrrr )rr"rrrr]s
z
DebugIO.rxcCs$tj�d�t|���tj��|S)Nz	 [TX:{}] )rr>rrrr )rr"rrrr^s
z
DebugIO.txN)r(r)r*r+r]r^rrrrr}sr})�crlfZcrZlf)�direct�defaultZ	nocontrol�	printableZcolorize�debugcCs�tj�d�g}xBttt��d�D].\}\}}}tj�d�|||��|�|�q"Wxbtd�}y8t	|�d}d|kr�t
|�ks�ntj�d�wVWntk
r�Yn
X||}|SdS)z�    Show a list of ports and ask the user for a choice. To make selection
    easier on systems with long device names, also allow the input of an
    index.
    z
--- Available ports:
rSz--- {:2}: {:20} {!r}
z#--- Enter port index or full name: rz--- Invalid index!
N)rr>r�	enumerate�sortedrrrv�	raw_input�int�len�
ValueError)Zports�n�port�descZhwid�indexrrr�ask_for_port5s  r�c@s�eZdZdZd1dd�Zdd�Zd	d
�Zdd�Zd
d�Zd2dd�Z	dd�Z
dd�Zd3dd�Zd4dd�Z
dd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0S)5�Minitermz�    Terminal application. Copy data from serial port to console and vice versa.
    Handle special keys from the console to show menu etc.
    Fr~rcCsht�|_||_||_d|_d|_d|_||_||_|�	�d|_
d|_d|_d|_
d|_d|_d|_dS)NFzUTF-8��)r1�console�serialr_�raw�input_encoding�output_encoding�eol�filters�update_transformations�exit_character�menu_character�alive�
_reader_alive�receiver_thread�
rx_decoderZ
tx_decoder)r�serial_instancer_r�r�rrrrTs zMiniterm.__init__cCs.d|_tj|jdd�|_d|j_|j��dS)zStart reader threadTr])�target�nameN)r��	threading�Thread�readerr��daemon�start)rrrr�
_start_readerfszMiniterm._start_readercCs*d|_t|jd�r|j��|j��dS)z6Stop reader thread only, wait for clean exit of threadF�cancel_readN)r��hasattrr�r�r�rx)rrrr�_stop_readerns
zMiniterm._stop_readercCs@d|_|��tj|jdd�|_d|j_|j��|j�	�dS)zstart worker threadsTr^)r�r�N)
r�r�r�r��writer�transmitter_threadr�r�r�r)rrrrr�us
zMiniterm.startcCs
d|_dS)zset flag to stop worker threadsFN)r�)rrrr�stopsz
Miniterm.stopcCs2|j��|s.t|jd�r$|j��|j��dS)z$wait for worker threads to terminater�N)r�rxr�r�r�r�)rZ
transmit_onlyrrrrx�s


z
Miniterm.joincCs|j��dS)N)r��close)rrrrr��szMiniterm.closecCs@t|jgdd�|jD�}dd�|D�|_tt|j��|_dS)zFtake list of transformation classes and instantiate them for rx and txcSsg|]}t|�qSr)�TRANSFORMATIONS)rf�frrr�
<listcomp>�sz3Miniterm.update_transformations.<locals>.<listcomp>cSsg|]
}|��qSrr)rf�trrrr��sN)�EOL_TRANSFORMATIONSr�r��tx_transformations�list�reversed�rx_transformations)rZtransformationsrrrr��szMiniterm.update_transformationsr2cCs||_t�|�|�|_dS)zset encoding for received dataN)r�r;�getincrementaldecoderr�)rr?�errorsrrr�set_rx_encoding�szMiniterm.set_rx_encodingcCs||_t�|�|�|_dS)z!set encoding for transmitted dataN)r�r;�getincrementalencoder�
tx_encoder)rr?r�rrr�set_tx_encoding�szMiniterm.set_tx_encodingcCsNtj�dj|jd��tj�d�|jjr,dnd|jjr:dnd|jjrHdnd��yLtj�d�|jjrhdnd|jj	rvdnd|jj
r�dnd|jjr�dnd��Wntjk
r�YnXtj�d�|jj
r�dnd��tj�d�|jjr�dnd��tj�d	�|j��tj�d
�|j��tj�d�|j����tj�d�d
�|j���dS)z$Write current settings to sys.stderrzK
--- Settings: {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits}
)�pz&--- RTS: {:8}  DTR: {:8}  BREAK: {:8}
�active�inactivez---- CTS: {:8}  DSR: {:8}  RI: {:8}  CD: {:8}
z--- software flow control: {}
z--- hardware flow control: {}
z--- serial input encoding: {}
z--- serial output encoding: {}
z--- EOL: {}
z--- filters: {}
rqN)rr>rrr��rts�dtr�break_conditionZctsZdsr�riZcd�SerialException�xonxoff�rtsctsr�r�r��upperrxr�)rrrr�dump_port_settings�s(


zMiniterm.dump_port_settingscCs�ytxn|jrp|jrp|j�|jjp d�}|r|jr<|j�|�q|j�	|�}x|j
D]}|�|�}qPW|j�|�qWWn(tj
k
r�d|_|j���YnXdS)zloop and copy serial->consolerSFN)r�r�r�rYZ
in_waitingr�r�r!r��decoder�r]rr�r#)r�datar"�transformationrrrr��s
zMiniterm.readercCs�d}y�x�|jr�y|j��}Wntk
r4d}YnX|js>P|rR|�|�d}q||jkrbd}q||jkrx|��Pq|}x|jD]}|�	|�}q�W|j
�|j�
|��|jr|}x|jD]}|�|�}q�W|j�|�qWWnd|_�YnXdS)z�        Loop and copy console->serial until self.exit_character character is
        found. When self.menu_character is found, interpret the next key
        locally.
        F�TN)r�r�r�KeyboardInterrupt�handle_menu_keyr�r�r�r�r^r�rr��encoder_)rZmenu_activerr"r�Z	echo_textrrrr��s:



zMiniterm.writercCs�||jks||jkr>|j�|j�|��|jr:|j�|��n�|dkrR|���nn|dkrnt	j
�|����nR|dkr�|jj|j_t	j
�d�
|jjr�dnd���n|dkr�|jj|j_t	j
�d�
|jjr�dnd���n�|d	k�r|jj|j_t	j
�d
�
|jj�rdnd���n�|dk�rP|j|_t	j
�d�
|j�rDdnd���np|d
k�rf|���nZ|dk�r�tt�}|�|j�d}|t|�k�r�d}|||_t	j
�d�
|j����|���n�|dk�r�|���n�|dk�r�|���n�|dk�r
|���n�|dk�r |���n�|dk�r6|���n�|dk�rVtj|j_|���nj|dk�rvtj|j_|���nJ|dk�r�tj |j_!|���n*|dk�r�tj"|j_!|���n
|dk�r�tj#|j_!|��n�|dk�r�tj$|j_!|��n�|dk�rtj%|j_!|��n�|dk�r.tj&|j_'|��n�|dk�rLtj(|j_'|��nt|dk�rjtj)|j_'|��nV|d k�r�|d!k|j_*|��n6|d"k�r�|d#k|j_+|��nt	j
�d$�
t,|���d%S)&z"Implement a simple menu / settings�zhH?�z--- RTS {} ---
r�r��z--- DTR {} ---
�z--- BREAK {} ---
�z--- local echo {} ---
��rSrz--- EOL: {} ---
��	�pPZsSZbB�8�7ZeEZoOZmMZnN�1�2�3ZxX�XZrR�Rz!--- unknown menu character {} --
N)-r�r�r�rr�r�r_r��upload_filerr>�
get_help_textr�rr�r��
change_filterr�r�r�r�r�r�r��change_encodingr��change_port�suspend_port�change_baudrateZ	EIGHTBITSZbytesizeZ	SEVENBITSZPARITY_EVEN�parityZ
PARITY_ODDZPARITY_MARKZPARITY_SPACEZPARITY_NONEZSTOPBITS_ONEZstopbitsZSTOPBITS_TWOZSTOPBITS_ONE_POINT_FIVEr�r�r)rrZmodesr�rrrr��s�""
$

"





































zMiniterm.handle_menu_keycCs�tj�d�tj��|j��tj���d�}|r�yvt|d��P}tj�d�	|��x6|�
d�}|sdP|j�|�|j��tj�d�qTWWdQRXtj�d�	|��Wn6tk
r�}ztj�d	�	||��Wdd}~XYnXWdQRXdS)
z,Ask user for filenname and send its contentsz
--- File to upload: z
�rbz--- Sending file {} ---
i�.Nz
--- File {} sent ---
z"--- ERROR opening file {}: {} ---
)
rr>rr r�rK�readline�rstrip�openrrYr��IOError)r�filenamer��block�errrr�Es$


zMiniterm.upload_filec	Cs�tj�d�tj�d�dd�tt���D���tj�d�d�|j���|j	�tj
�����
�}WdQRX|r�x:|D]$}|tkrxtj�d�t|���PqxW||_|��tj�d	�d�|j���dS)
zchange the i/o transformationsz
--- Available Filters:
racss|]\}}d�||�VqdS)z---   {:<10} = {.__doc__}N)r)rf�k�vrrrrh_sz)Miniterm.change_filter.<locals>.<genexpr>z$
--- Enter new filter name(s) [{}]: rqNz--- unknown filter: {}
z--- filters: {}
)rr>rrxr�r��itemsrr�r�rKr��lower�splitrr�)rZnew_filtersr�rrrr�[s

zMiniterm.change_filterc	Cs�tj�d�|j��|j�tj����}WdQRX|r�yt	�
|�Wn&tk
rltj�d�|��YnX|�|�|�
|�tj�d�|j��tj�d�|j��dS)z"change encoding on the serial portz#
--- Enter new encoding name [{}]: Nz--- invalid encoding name: {}
z--- serial input encoding: {}
z--- serial output encoding: {}
)rr>rrr�r�rKr��stripr;�lookup�LookupErrorr�r�r�)rZnew_encodingrrrr�ns

zMiniterm.change_encodingcCs�tj�d�tj��|j�n|jj}yttj�	��
��|j_Wn<tk
r|}ztj�d�|��||j_Wdd}~XYn
X|�
�WdQRXdS)zchange the baudratez
--- Baudrate: z#--- ERROR setting baudrate: {} ---
N)rr>rr r�r��baudrater�rKr�r�r�rr�)rZbackupr�rrrr�~s
zMiniterm.change_baudratec
Cs|j�*y
t�}Wntk
r*d}YnXWdQRX|�r
||jjk�r
|��|j��}yBtj|dd�}|�|�|jj	|_	|jj
|_
|��|jj|_Wn<t
k
r�}ztj�d�|��|��Wdd}~XYn(X|j��||_tj�d�|jj��|��dS)z;Have a conversation with the user to change the serial portNT)�do_not_openz#--- ERROR opening new port: {} ---
z--- Port changed to: {} ---
)r�r�r�r�r�r�ZgetSettingsDict�serial_for_urlZapplySettingsDictr�r�r�r��	Exceptionrr>rrr�r�)rr�ZsettingsZ
new_serialr�rrrr��s,





zMiniterm.change_portc
Cs�|��|j��tj�d�|jj��d}x�|jjs�tj�djt	|j
�d��|j��}||j
krp|�
�Pn|dkr~d}Py|j��Wq.tk
r�}ztj�d�|��Wdd}~XYq.Xq.W|r�|��n|��tj�d	�|jj��dS)
zl        open port temporarily, allow reconnect, exit and port change to get
        out of the loop
        z
--- Port closed: {} ---
FzC--- Quit: {exit} | p: port change | any other key to reconnect ---
)�exitr�Tz--- ERROR opening port: {} ---
Nz--- Port opened: {} ---
)r�r�r�rr>rrr�Zis_openrr�r�rr�r�r�r�r�)rZdo_change_portr�r�rrrr��s,




(
zMiniterm.suspend_portcCsZdjttdd�t|j�t|j�td�td�td�td�td�td	�td
�td�td�d
�S)zreturn the help textaQ
--- pySerial ({version}) - miniterm - help
---
--- {exit:8} Exit program
--- {menu:8} Menu escape key, followed by:
--- Menu keys:
---    {menu:7} Send the menu character itself to remote
---    {exit:7} Send the exit character itself to remote
---    {info:7} Show info
---    {upload:7} Upload file (prompt will be shown)
---    {repr:7} encoding
---    {filter:7} edit filters
--- Toggles:
---    {rts:7} RTS   {dtr:7} DTR   {brk:7} BREAK
---    {echo:7} echo  {eol:7} EOL
---
--- Port settings ({menu} followed by the following):
---    p          change port
---    7 8        set data bits
---    N E O S M  change parity (None, Even, Odd, Space, Mark)
---    1 2 3      set stop bits (1, 2, 1.5)
---    b          change baud rate
---    x X        disable/enable software flow control
---    r R        disable/enable hardware flow control
�VERSIONzunknown versionr�r�r�r�r�r�r�r�r�)�versionr�Zmenur�r�Zbrkr_�info�uploadr�filterr�)r�getattrr�rr�r�)rrrrr��szMiniterm.get_help_textN)Fr~r)F)r2)r2)r(r)r*r+rr�r�r�r�rxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�Ns,




&Tr��%c
Cs�ddl}|jdd�}|jddd|d�|jd	dtd
|d�|�d�}|jd
dddddgdd�ddd�|jddddd�|jddddd�|jdtd|d �|jd!td"|d �|jd#dd$dd�|�d%�}|jd&d'dd(dd�|jd)d*d+d,d-d.�|jd/d0d1d2d3gd4�|jd5d6d7d8gd9d�d:d8d�|jd;dd<dd�|�d=�}|jd>td?d@dAdB�|jdCtd?dDdEdB�|�dF�}|jdGdHddIdd�|jdJddKdd�|��}|j|jk�r�|�dL�|j	�rdM|j	k�rt
j�dN�t
j�dO�
dPdQ�tt���D���t
j�dO�t
�dR�|j	}ndSg}�x�|jdk�s>|jdTk�r�yt�|_Wn,tk
�rvt
j�dO�|�dU�YnX|j�s�|�dV�y�tj|j|j|j|j|jdWdX�}	t|	dY��s�dR|	_|jdk	�r�|j�s�t
j�dZ�|j�r�d[nd\��|j|	_|j dk	�r2|j�s*t
j�d]�|j �r"d[nd\��|j |	_ |	�!�Wndtj"k
�r�}
zBt
j�d^�t#|j�|
��|j$�rv�|j%�s�t
�dR�ndT|_Wdd}
~
XYnXP�q&Wt&|	|j'|j(�)�|d_�}t*|j�|_+t*|j�|_,|j-|_-|�.|j/�|�0|j/�|j�sFt
j�d`j|jda��t
j�db�t1|j+�t1|j,�t1|j,�t1dc���|�2�y|�
dW�Wntk
�rrYnX|j�s�t
j�dd�|�
�|�3�dS)ezCommand line tool, entry pointrNz9Miniterm - A simple terminal program for the serial port.)�descriptionr��?z(serial port name ('-' to show port list))�nargs�helpr�r�z#set baud rate, default: %(default)s)r	�typer
r�z
port settingsz--parity�N�E�O�S�McSs|��S)N)r�)rrrrr	r
zmain.<locals>.<lambda>z*set parity, one of {N E O S M}, default: N)�choicesrr
r�z--rtscts�
store_truez)enable RTS/CTS flow control (default off)F)�actionr
r�z	--xonxoffz*enable software flow control (default off)z--rtsz2set initial RTS line state (possible values: 0, 1))rr
r�z--dtrz2set initial DTR line state (possible values: 0, 1)z--askz"ask again for port when open failsz
data handlingz-ez--echozenable local echo (default off)z
--encoding�serial_port_encodingZCODECzXset the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default: %(default)szUTF-8)�dest�metavarr
r�z-fz--filterrv�NAMEzadd text transformation)rrr
r�z--eolrbrdr`cSs|��S)N)r�)rrrrr	Jr
zend of line modez--rawz)Do no apply any encodings/transformationsZhotkeysz--exit-charZNUMzWUnicode of special character that is used to exit the application, default: %(default)sr�)rrr
r�z--menu-charz_Unicode code of special character that is used to control miniterm (menu), default: %(default)sr�Zdiagnosticsz-qz--quietzsuppress non-error messagesz	--developzshow Python traceback on errorz.--exit-char can not be the same as --menu-charr
zAvailable filters:
racss|]\}}d�||�VqdS)z{:<10} = {.__doc__}N)r)rfr�r�rrrrh{szmain.<locals>.<genexpr>rSr��-z"user aborted and port is not givenzport is not givenT)r�r�r�r�r�z--- forcing DTR {}
r�r�z--- forcing RTS {}
zcould not open port {}: {}
)r_r�r�zP--- Miniterm on {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---
)r�z6--- Quit: {} | Menu: {} | Help: {} followed by {} ---
�z
--- exit ---
)4�argparse�ArgumentParser�add_argumentr��add_argument_group�
parse_argsZ	menu_charZ	exit_char�errorrrr>rrxr�r�r�r�r�r�r�r�r�r�r�r�r�r��timeoutr��quietrr�r�r�r�developZaskr�r_r�r�rFr�r�r�r�rr�rr�r�)Zdefault_portZdefault_baudrateZdefault_rtsZdefault_dtrr�parser�groupr%r�r�r�Zminitermrrr�main�s^









r%�__main__)NrNN),r;r/rr�r�Zserial.tools.list_portsrZserial.toolsrrPr��	NameError�input�chrrFr�objectrr�rEr4r-r1rOrLr[�NotImplementedErrorr�platformr\r`rbrdrerorprzr}r�r�r�r�r%r(rrrr�<module>
sj

-
!

*
[