%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core18/2887/usr/lib/python3/dist-packages/serial/tools/__pycache__/
Upload File :
Create Path :
Current File : //snap/core18/2887/usr/lib/python3/dist-packages/serial/tools/__pycache__/miniterm.cpython-36.pyc

3

��oY��@s�ddlZddlZddlZddlZddlZddlmZddlmZej	dd��ye
Wnek
rreZ
e
ZYnXdd�ZGdd	�d	e�Zejd
kr�ddlZddlZGdd�de�ZGd
d�de�ZnDejdkr�ddlZddlZddlZGdd�de�Znedjej���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|dkrtj�SdS)NZhexlify)r�getregentry)�c�r�7/usr/lib/python3/dist-packages/serial/tools/miniterm.py�<lambda>srcCs.t|�}|dkr"djtd�|�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)rr)�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|jj|�|jj�dS)zWrite bytes (already encoded)N)r�write�flush)rZbyte_stringrrr�write_bytes=szConsoleBase.write_bytescCs|jj|�|jj�dS)zWrite stringN)rrr)r�textrrrrBszConsoleBase.writecCsdS)zCancel getkey operationNr)rrrr�cancelGszConsoleBase.cancelcCs|j�|S)N)r)rrrr�	__enter__NszConsoleBase.__enter__cOs|j�dS)N)r)r�args�kwargsrrr�__exit__RszConsoleBase.__exit__N)
�__name__�
__module__�__qualname__�__doc__rrrrrrr!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.flushcCstj|j|�dS)N)�osrr,)r�srrrrcsz	Out.writeN)r&r'r(r)rrrrrrrr+Zsr+cs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS)	�Consolecs�tt|�j�tjjj�|_tjjj�|_	tjjj
d�tjjjd�tj
d�ttjj��d�|_tj
d�ttjj��d�t_|jt_d|j_dS)Ni�zUTF-8�replace)�superr/r�ctypes�windll�kernel32ZGetConsoleOutputCP�
_saved_ocpZGetConsoleCP�
_saved_icp�SetConsoleOutputCP�SetConsoleCP�codecs�	getwriterr+rr�filenor�stderr�encoding)r)�	__class__rrrgszConsole.__init__cCs$tjjj|j�tjjj|j�dS)N)r2r3r4r7r5r8r6)rrrr�__del__sszConsole.__del__cCsHxBtj�}|td�krtd�S|td�td�fkr<tj�q|SqWdS)N�
�
r�)�msvcrtZgetwch�unichr)r�zrrrrws
zConsole.getkeycCs$tjjj�}tjjj|ddd�dS)N�r@r)r2r3r4ZGetConsoleWindowZuser32ZPostMessageA)rZhwndrrrr!�szConsole.cancel)r&r'r(rr?rr!�
__classcell__rr)r>rr/fs
r/�posixcs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)r/csbtt|�j�tjj�|_tj|j�|_	t
j|j�tj
dkrVtjtjj�tj�|_ntj|_dS)Nrr)rr)r1r/rr�stdinr;r,�termios�	tcgetattr�old�atexit�registerrrr9�	getreaderr=�	enc_stdin)r)r>rrr�s
zConsole.__init__cCsbtj|j�}|dtj@tj@tj@|d<d|dtj<d|dtj<tj|jtj	|�dS)Nr��r)
rJrKr,ZICANONZECHOZISIGZVMINZVTIME�	tcsetattrZTCSANOW)r�newrrrr�s
$z
Console.setupcCs$|jjd�}|td�kr td�}|S)NrQ��)rP�readrD)rrrrrr�szConsole.getkeycCstj|jtjd�dS)N�)�fcntlZioctlr,rJZTIOCSTI)rrrrr!�szConsole.cancelcCstj|jtj|j�dS)N)rJrSr,Z	TCSAFLUSHrL)rrrrr�szConsole.cleanup)	r&r'r(rrrr!rrGrr)r>rr/�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]rrrrrZ�srZc@seZdZdZdd�ZdS)�CRLFzENTER sends CR+LFcCs|jdd�S)N�
z
)r0)rr rrrr\�szCRLF.txN)r&r'r(r)r\rrrrr^�sr^c@s eZdZdZdd�Zdd�ZdS)�CRzENTER sends CRcCs|jdd�S)N�
r_)r0)rr rrrr[�szCR.rxcCs|jdd�S)Nr_ra)r0)rr rrrr\�szCR.txN)r&r'r(r)r[r\rrrrr`�sr`c@seZdZdZdS)�LFzENTER sends LFN)r&r'r(r)rrrrrb�srbc@sBeZdZdZedd�ed�D��Zejddd��dd	�ZeZ	d
S)�
NoTerminalz0remove typical terminal control codes from inputccs&|]}t|�dkr|d|fVqdS)z
	i$N)rD)�.0�xrrr�	<genexpr>�szNoTerminal.<genexpr>r	i!$i%$)rU�cCs|j|j�S)N)�	translate�REPLACEMENT_MAP)rr rrrr[�sz
NoTerminal.rxN)
r&r'r(r)�dict�rangeri�updater[r]rrrrrc�s
rcc@s8eZdZdZedd�ed�D��Zejdddd��d	S)
�
NoControlsz%Remove all control codes, incl. CR+LFccs|]}|d|fVqdS)i$Nr)rdrerrrrf�szNoControls.<genexpr>r	i#$i!$i%$)r	rUrgN)r&r'r(r)rjrkrirlrrrrrm�srmc@seZdZdZdd�ZeZdS)�	PrintablezMShow decimal code for all non-ASCII characters and replace most control codescCs�g}x�|D]x}d|ko dkns.|dkr:|j|�q
|dkrZ|jtdt|���q
|jdd�djt|��D��|jd�q
Wdj|�S)	N� �z
	i$css"|]}tdt|�d�VqdS)i� �0N)rDr)rd�drrrrf�szPrintable.rx.<locals>.<genexpr>z{:d}�)�appendrDr�extendr�join)rr �rrrrrr[�s
 zPrintable.rxN)r&r'r(r)r[r]rrrrrn�srnc@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)ry)rr rrrr[szColorize.rxcCs
|j|S)N)rz)rr rrrr]sz
Colorize.echoN)r&r'r(r)rr[r]rrrrrxsrxc@s eZdZdZdd�Zdd�ZdS)�DebugIOzPrint what is sent and receivedcCs$tjjdjt|���tjj�|S)Nz	 [RX:{}] )rr<rrr
r)rr rrrr[s
z
DebugIO.rxcCs$tjjdjt|���tjj�|S)Nz	 [TX:{}] )rr<rrr
r)rr rrrr\s
z
DebugIO.txN)r&r'r(r)r[r\rrrrr{sr{)�crlfZcrZlf)Zdirect�defaultZ	nocontrolZ	printableZcolorize�debugcCs�tjjd�g}xBttt��d�D].\}\}}}tjjdj|||��|j|�q"Wxdtd�}y:t	|�d}d|ko�t
|�kns�tjjd�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:
rQz--- {:2}: {:20} {!r}
z#--- Enter port index or full name: rz--- Invalid index!
N)rr<r�	enumerate�sortedrrrt�	raw_input�int�len�
ValueError)Zports�n�portZdescZhwid�indexrrr�ask_for_port5s  r�c@s�eZdZdZddffdd�Zdd�Zdd	�Zd
d�Zdd
�Zd0dd�Z	dd�Z
dd�Zd1dd�Zd2dd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/S)3�Minitermz�    Terminal application. Copy data from serial port to console and vice versa.
    Handle special keys from the console to show menu etc.
    Fr|cCsht�|_||_||_d|_d|_d|_||_||_|j	�d|_
d|_d|_d|_
d|_d|_d|_dS)NFzUTF-8��)r/�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_|jj�dS)zStart reader threadTr[)�target�nameN)r��	threading�Thread�readerr��daemon�start)rrrr�
_start_readerfszMiniterm._start_readercCs*d|_t|jd�r|jj�|jj�dS)z6Stop reader thread only, wait for clean exit of threadF�cancel_readN)r��hasattrr�r�r�rv)rrrr�_stop_readerns
zMiniterm._stop_readercCs@d|_|j�tj|jdd�|_d|j_|jj�|jj	�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|jj�|s.t|jd�r$|jj�|jj�dS)z$wait for worker threads to terminater�N)r�rvr�r�r�r�)rZ
transmit_onlyrrrrv�s


z
Miniterm.joincCs|jj�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)rd�frrr�
<listcomp>�sz3Miniterm.update_transformations.<locals>.<listcomp>cSsg|]
}|��qSrr)rd�trrrr��sN)�EOL_TRANSFORMATIONSr�r��tx_transformations�list�reversed�rx_transformations)rZtransformationsrrrr��szMiniterm.update_transformationsr0cCs||_tj|�|�|_dS)zset encoding for received dataN)r�r9�getincrementaldecoderr�)rr=�errorsrrr�set_rx_encoding�szMiniterm.set_rx_encodingcCs||_tj|�|�|_dS)z!set encoding for transmitted dataN)r�r9�getincrementalencoder�
tx_encoder)rr=r�rrr�set_tx_encoding�szMiniterm.set_tx_encodingcCsNtjjdj|jd��tjjdj|jjr,dnd|jjr:dnd|jjrHdnd��yLtjjdj|jjrhdnd|jj	rvdnd|jj
r�dnd|jjr�dnd��Wntjk
r�YnXtjjdj|jj
r�dnd��tjjdj|jjr�dnd��tjjd	j|j��tjjd
j|j��tjjdj|jj���tjjdjd
j|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: {}
roN)rr<rrr��rts�dtr�break_conditionZctsZdsrZriZcd�SerialException�xonxoff�rtsctsr�r�r��upperrvr�)rrrr�dump_port_settings�s(


zMiniterm.dump_port_settingscCs�ytxn|jrp|jrp|jj|jjp d�}|r|jr<|jj|�q|jj	|�}x|j
D]}|j|�}qPW|jj|�qWWn(tj
k
r�d|_|jj��YnXdS)zloop and copy serial->consolerQFN)r�r�r�rWZ
in_waitingr�r�rr��decoder�r[rr�r!)r�datar �transformationrrrr��s
zMiniterm.readercCs�d}y�x�|jr�y|jj�}Wntk
r4d}YnX|js>P|rR|j|�d}q||jkrbd}q||jkrx|j�Pq|}x|jD]}|j	|�}q�W|j
j|jj
|��|jr|}x|jD]}|j|�}q�W|jj|�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>|jj|jj|��|jr:|jj|��n�|dkrR|j��nn|dkrnt	j
j|j���nR|dkr�|jj|j_t	j
jdj
|jjr�dnd���n|dkr�|jj|j_t	j
jdj
|jjr�dnd���n�|d	k�r|jj|j_t	j
jd
j
|jj�rdnd���n�|dk�rP|j|_t	j
jdj
|j�rDdnd���np|d
k�rf|j��nZ|dk�r�tt�}|j|j�d}|t|�k�r�d}|||_t	j
jdj
|jj���|j��n�|dk�r�|j��n�|dk�r�|j��n�|dk�r
|j��n�|dk�r |j��n�|dk�r6|j��n�|dk�rVtj|j_|j��nj|dk�rvtj|j_|j��nJ|dk�r�tj |j_!|j��n*|dk�r�tj"|j_!|j��n
|dk�r�tj#|j_!|j�n�|dk�r�tj$|j_!|j�n�|dk�rtj%|j_!|j�n�|dk�r.tj&|j_'|j�n�|dk�rLtj(|j_'|j�nt|dk�rjtj)|j_'|j�nV|d k�r�|d!k|j_*|j�n6|d"k�r�|d#k|j_+|j�nt	j
jd$j
t,|���d%S)&z"Implement a simple menu / settings�zhH?�z--- RTS {} ---
r�r��z--- DTR {} ---
�z--- BREAK {} ---
�z--- local echo {} ---
��rQrz--- 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�rr�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�tjjd�tjj�|j��tjj�jd�}|r�yvt|d��P}tjjdj	|��x6|j
d�}|sdP|jj|�|jj�tjjd�qTWWdQRXtjjdj	|��Wn6tk
r�}ztjjd	j	||��WYdd}~XnXWdQRXdS)
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<rrr�rI�readline�rstrip�openrrWr��IOError)r�filenamer��block�errrr�Es$


zMiniterm.upload_filecCs�tjjd�tjjdjdd�ttj��D���tjjdjdj|j���|j	�tj
j�j�j
�}WdQRX|r�x:|D]$}|tkrxtjjdjt|���PqxW||_|j�tjjd	jdj|j���dS)
zchange the i/o transformationsz
--- Available Filters:
r_css|]\}}dj||�VqdS)z---   {:<10} = {.__doc__}N)r)rd�k�vrrrrf_sz)Miniterm.change_filter.<locals>.<genexpr>z$
--- Enter new filter name(s) [{}]: roNz--- unknown filter: {}
z--- filters: {}
)rr<rrvr�r��itemsrr�r�rIr��lower�splitr
r�)rZnew_filtersr�rrrr�[s

zMiniterm.change_filtercCs�tjjdj|j��|j�tjj�j�}WdQRX|r�yt	j
|�Wn&tk
rltjjdj|��YnX|j|�|j
|�tjjdj|j��tjjdj|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<rrr�r�rIr��stripr9�lookup�LookupErrorr�r�r�)rZnew_encodingrrrr�ns

zMiniterm.change_encodingcCs�tjjd�tjj�|j�n|jj}yttjj	�j
��|j_Wn<tk
r|}z tjjdj|��||j_WYdd}~Xn
X|j
�WdQRXdS)zchange the baudratez
--- Baudrate: z#--- ERROR setting baudrate: {} ---
N)rr<rrr�r��baudrater�rIr�r�r�rr�)rZbackupr�rrrr�~s
zMiniterm.change_baudratecCs|j�*y
t�}Wntk
r*d}YnXWdQRX|oD||jjk�r|j�|jj�}yBtj|dd�}|j|�|jj	|_	|jj
|_
|j�|jj|_Wn<t
k
r�}z tjjdj|��|j�WYdd}~Xn(X|jj�||_tjjdj|jj��|j�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<rrr�r�)rr�ZsettingsZ
new_serialr�rrrr��s,





zMiniterm.change_portcCs�|j�|jj�tjjdj|jj��d}x�|jjs�tjjdjt	|j
�d��|jj�}||j
krp|j
�Pn|dkr~d}Py|jj�Wq.tk
r�}ztjjdj|��WYdd}~Xq.Xq.W|r�|j�n|j�tjjd	j|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<rrr�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]�infoZuploadr
�filterr�)r�getattrr�rr�r�)rrrrr��szMiniterm.get_help_textN)F)r0)r0)r&r'r(r)rr�r�r�r�rvr�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�|jd�}|jd
dddddgdd�ddd�|jddddd�|jddddd�|jdtd|d �|jd!td"|d �|jd#dd$dd�|jd%�}|jd&d'dd(dd�|jd)d*d+d,d-d.�|jd/d0d1d2d3gd4�|jd5d6d7d8gd9d�d:d8d�|jd;dd<dd�|jd=�}|jd>td?d@dAdB�|jdCtd?dDdEdB�|jdF�}|jdGdHddIdd�|jdJddKdd�|j�}|j|jk�r�|jdL�|j	�rdM|j	k�rt
jjdN�t
jjdOj
dPdQ�ttj��D���t
jjdO�t
jdR�|j	}ndSg}�x�|jdk�s>|jdTk�r�yt�|_Wn,tk
�rvt
jjdO�|jdU�YnX|j�s�|jdV�y�tj|j|j|j|j|jdWdX�}	t|	dY��s�dR|	_|jdk	�r�|j�s�t
jjdZj|j�r�d[nd\��|j|	_|j dk	�r2|j�s*t
jjd]j|j �r"d[nd\��|j |	_ |	j!�Wndtj"k
�r�}
zDt
jjd^jt#|j�|
��|j$�rv�|j%�s�t
jdR�ndT|_WYdd}
~
XnXP�q&Wt&|	|j'|j(j)�|d_�}t*|j�|_+t*|j�|_,|j-|_-|j.|j/�|j0|j/�|j�sFt
jjd`j|jda��t
jjdbjt1|j+�t1|j,�t1|j,�t1dc���|j2�y|j
dW�Wntk
�rrYnX|j�s�t
jjdd�|j
�|j3�dS)ezCommand line tool, entry pointrNz9Miniterm - A simple terminal program for the serial port.)Zdescriptionr��?z(serial port name ('-' to show port list))�nargs�helpr}r�z#set baud rate, default: %(default)s)r�typerr}z
port settingsz--parity�N�E�O�S�McSs|j�S)N)r�)rrrrrszmain.<locals>.<lambda>z*set parity, one of {N E O S M}, default: N)�choicesrrr}z--rtscts�
store_truez)enable RTS/CTS flow control (default off)F)�actionrr}z	--xonxoffz*enable software flow control (default off)z--rtsz2set initial RTS line state (possible values: 0, 1))rrr}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�metavarrr}z-fz--filterrt�NAMEzadd text transformation)rrrr}z--eolr`rbr^cSs|j�S)N)r�)rrrrrJszend 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�)rrrr}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-charrzAvailable filters:
r_css|]\}}dj||�VqdS)z{:<10} = {.__doc__}N)r)rdr�r�rrrrf{szmain.<locals>.<genexpr>rQr}�-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�Zadd_argument_group�
parse_argsZ	menu_charZ	exit_char�errorr�rr<rrvr�r�r�r�r�r�r�r�r�r�r�r�r�r�Ztimeoutr��quietrr�r�r�r
ZdevelopZaskr�r]r�r�rDr�r�r�r�rr�rr�r�)Zdefault_portZdefault_baudrateZdefault_rtsZdefault_dtrr�parser�groupr#r�r�r�Zminitermrrr�main�s^









r�__main__)Nr�NN),r9r-rr�r�Zserial.tools.list_portsrZserial.toolsrrNr��	NameError�input�chrrDr�objectrr�rCr2r+r/rMrJrY�NotImplementedErrorr�platformrZr^r`rbrcrmrnrxr{r�r�r�r�rr&rrrr�<module>
sj

-
!

*
[


Zerion Mini Shell 1.0