shell bypass 403

Cubjrnet7 Shell


name : miniterm.cpython-39.pyc
a

��oY��@s�ddlZddlZddlZddlZddlZddlmZddlmZe�	dd��ze
WneypeZ
e
ZYn0dd�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)NZhexlify)r�getregentry��c�r�9/usr/lib/python3.9/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 echoNrrrrr�setup3szConsoleBase.setupcCsdS)z Restore default console settingsNrrrrr�cleanup6szConsoleBase.cleanupcCsdS)z"Read a single key from the consoleNrrrrr�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)rr!r"�r�textrrrr!BszConsoleBase.writecCsdS)zCancel getkey operationNrrrrr�cancelGszConsoleBase.cancelcCs|��|S�N)rrrrr�	__enter__NszConsoleBase.__enter__cOs|��dSr')r)r�args�kwargsrrr�__exit__RszConsoleBase.__exit__N)
�__name__�
__module__�__qualname__�__doc__rrrr r#r!r&r(r+rrrrr)sr�ntc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�Outz$file-like wrapper that uses os.writecCs
||_dSr')�fd)rr2rrrr]szOut.__init__cCsdSr'rrrrrr"`sz	Out.flushcCst�|j|�dSr')�osr!r2)r�srrrr!csz	Out.writeN)r,r-r.r/rr"r!rrrrr1Zsr1cs4eZdZ�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��UTF-8�replace)�superr5r�ctypes�windll�kernel32ZGetConsoleOutputCP�
_saved_ocpZGetConsoleCP�
_saved_icp�SetConsoleOutputCP�SetConsoleCP�codecs�	getwriterr1rr�filenor�stderr�encodingr��	__class__rrrgs�Console.__init__cCs$tjj�|j�tjj�|j�dSr')r9r:r;r>r<r?r=rrrr�__del__sszConsole.__del__cCsDt��}|td�krtd�S|td�td�fvr:t��q|SqdS)N�
�
r�)�msvcrtZgetwch�unichr)r�zrrrr ws
�Console.getkeycCs$tjj��}tjj�|ddd�dS)N�rIr)r9r:r;ZGetConsoleWindowZuser32ZPostMessageA)rZhwndrrrr&�s�Console.cancel)r,r-r.rrHr r&�
__classcell__rrrErr5fs
r5�posixcs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)r5csbtt|���tj��|_t�|j�|_	t
�|j�tj
dkrVt�tjj�tj�|_ntj|_dSr)r8r5rr�stdinrBr2�termios�	tcgetattr�old�atexit�registerrrr@�	getreaderrD�	enc_stdinrrErrr�s
rGcCsbt�|j�}|dtj@tj@tj@|d<d|dtj<d|dtj<t�|jtj	|�dS)Nr��r)
rUrVr2ZICANONZECHOZISIGZVMINZVTIME�	tcsetattrZTCSANOW)r�newrrrr�s
$z
Console.setupcCs$|j�d�}|td�kr td�}|S)Nr\��)r[�readrM)rrrrrr �srOcCst�|jtjd�dS)N�)�fcntlZioctlr2rUZTIOCSTIrrrrr&�srQcCst�|jtj|j�dSr')rUr^r2Z	TCSAFLUSHrWrrrrr�szConsole.cleanup)	r,r-r.rrr r&rrRrrrErr5�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 portrr$rrr�rx�szTransform.rxcCs|S)ztext to be sent to serial portrr$rrr�tx�szTransform.txcCs|S)z(text to be sent but displayed on consolerr$rrr�echo�szTransform.echoN)r,r-r.r/rfrgrhrrrrre�srec@seZdZdZdd�ZdS)�CRLFzENTER sends CR+LFcCs|�dd�S)N�
�
�r7r$rrrrg�szCRLF.txN)r,r-r.r/rgrrrrri�sric@s eZdZdZdd�Zdd�ZdS)�CRzENTER sends CRcCs|�dd�S)N�
rjrlr$rrrrf�szCR.rxcCs|�dd�S)Nrjrnrlr$rrrrg�szCR.txN�r,r-r.r/rfrgrrrrrm�srmc@seZdZdZdS)�LFzENTER sends LFN)r,r-r.r/rrrrrp�srpc@sBeZdZdZedd�ed�D��Ze�ddd��dd	�ZeZ	d
S)�
NoTerminalz0remove typical terminal control codes from inputccs&|]}t|�dvr|d|fVqdS)�
	�$N)rM��.0�xrrr�	<genexpr>�r
zNoTerminal.<genexpr>r�!$�%$)r`�cCs|�|j�Sr')�	translate�REPLACEMENT_MAPr$rrrrf�sz
NoTerminal.rxN)
r,r-r.r/�dict�ranger|�updaterfrhrrrrrq�s��rqc@s8eZdZdZedd�ed�D��Ze�dddd��d	S)
�
NoControlsz%Remove all control codes, incl. CR+LFccs|]}|d|fVqdS)rsNrrtrrrrw�r
zNoControls.<genexpr>ri#$rxry)rr`rzN)r,r-r.r/r}r~r|rrrrrr��s��r�c@seZdZdZdd�ZeZdS)�	PrintablezMShow decimal code for all non-ASCII characters and replace most control codescCs�g}|D]v}d|kr dks*n|dvr6|�|�q|dkrV|�tdt|���q|�dd�d�t|��D��|�d�qd�|�S)	N� �rrrscss"|]}tdt|�d�VqdS)i� �0N)rMr
)ru�drrrrw�r
zPrintable.rx.<locals>.<genexpr>z{:d}�)�appendrMr
�extendr�join)rr%�rrrrrrf�szPrintable.rxN)r,r-r.r/rfrhrrrrr��sr�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�Colorizez,Apply different colors for received and echocCsd|_d|_dS)Nzz)�input_color�
echo_colorrrrrrszColorize.__init__cCs
|j|Sr')r�r$rrrrfszColorize.rxcCs
|j|Sr')r�r$rrrrhsz
Colorize.echoN)r,r-r.r/rrfrhrrrrr�sr�c@s eZdZdZdd�Zdd�ZdS)�DebugIOzPrint what is sent and receivedcCs$tj�d�t|���tj��|S)Nz	 [RX:{}] �rrCr!rrr"r$rrrrfs
z
DebugIO.rxcCs$tj�d�t|���tj��|S)Nz	 [TX:{}] r�r$rrrrgs
z
DebugIO.txNrorrrrr�sr�)�crlfZcrZlf)Zdirect�defaultZ	nocontrolZ	printableZcolorize�debugcCs�tj�d�g}ttt��d�D].\}\}}}tj�d�|||��|�|�q td�}z:t	|�d}d|kr~t
|�ks�ntj�d�WqPWnty�Yn
0||}|S)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:
r\z--- {:2}: {:20} {!r}
z#--- Enter port index or full name: rz--- Invalid index!
N)rrCr!�	enumerate�sortedrrr��	raw_input�int�len�
ValueError)Zports�n�portZdescZhwid�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)NFr6��)r5�console�serialrh�raw�input_encoding�output_encoding�eol�filters�update_transformations�exit_character�menu_character�alive�
_reader_alive�receiver_thread�
rx_decoderZ
tx_decoder)r�serial_instancerhr�r�rrrrTs zMiniterm.__init__cCs.d|_tj|jdd�|_d|j_|j��dS)zStart reader threadTrf��target�nameN)r��	threading�Thread�readerr��daemon�startrrrr�
_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�r�rrrr�_stop_readerns
zMiniterm._stop_readercCs@d|_|��tj|jdd�|_d|j_|j��|j�	�dS)zstart worker threadsTrgr�N)
r�r�r�r��writer�transmitter_threadr�r�r�rrrrrr�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�r�r�r�r�r�)rZ
transmit_onlyrrrr��s


z
Miniterm.joincCs|j��dSr')r��closerrrrr��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)ru�frrr�
<listcomp>�s�z3Miniterm.update_transformations.<locals>.<listcomp>cSsg|]
}|��qSrr)ru�trrrr��r
N)�EOL_TRANSFORMATIONSr�r��tx_transformations�list�reversed�rx_transformations)rZtransformationsrrrr��s
�zMiniterm.update_transformationsr7cCs||_t�|�|�|_dS)zset encoding for received dataN)r�r@�getincrementaldecoderr��rrD�errorsrrr�set_rx_encoding�szMiniterm.set_rx_encodingcCs||_t�|�|�|_dS)z!set encoding for transmitted dataN)r�r@�getincrementalencoder�
tx_encoderr�rrr�set_tx_encoding�szMiniterm.set_tx_encodingcCsLtj�dj|jd��tj�d�|jjr,dnd|jjr:dnd|jjrHdnd��zLtj�d�|jjrhdnd|jj	rvdnd|jj
r�dnd|jjr�dnd��Wntjy�Yn0tj�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: {}
�--- serial input encoding: {}
�--- serial output encoding: {}
z--- EOL: {}
�--- filters: {}
r�N)rrCr!rr��rts�dtr�break_conditionZctsZdsrZriZcd�SerialException�xonxoff�rtsctsr�r�r��upperr�r�rrrr�dump_port_settings�s.
�
�
�
zMiniterm.dump_port_settingscCs�zl|jrj|jrj|j�|jjpd�}|r|jr:|j�|�q|j�	|�}|j
D]}|�|�}qL|j�|�qWn&tj
y�d|_|j���Yn0dS)zloop and copy serial->consoler\FN)r�r�r�rbZ
in_waitingr�r�r#r��decoder�rfr!r�r&)r�datar%�transformationrrrr��s

zMiniterm.readercCs�d}z�|jr�z|j��}Wnty0d}Yn0|js:q�|rN|�|�d}q||jkr^d}q||jkrt|��q�q|}|jD]}|�	|�}q~|j
�|j�
|��|jr|}|jD]}|�|�}q�|j�|�qWnd|_�Yn0dS)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�rgr�r!r��encoderh)rZmenu_activerr%r�Z	echo_textrrrr��s:





zMiniterm.writercCs�||jks||jkr>|j�|j�|��|jr:|j�|��n�|dkrR|���nn|dvrnt	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�|dv�r
|���n�|dv�r |���n�|dv�r6|���n�|dk�rVtj|j_|���nj|dk�rvtj|j_|���nJ|dv�r�tj |j_!|���n*|dv�r�tj"|j_!|���n
|dv�r�tj#|j_!|��n�|dv�r�tj$|j_!|��n�|dv�rtj%|j_!|��n�|dk�r.tj&|j_'|��n�|dk�rLtj(|j_'|��nt|dk�rjtj)|j_'|��nV|d v�r�|d!k|j_*|��n6|d"v�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 {} ---
��r\rz--- EOL: {} ---
��	�pPZsSZbB�8�7ZeEZoOZmMZnN�1�2�3ZxX�XZrR�Rz!--- unknown menu character {} --
N)-r�r�r�r!r�r�rhr��upload_filerrC�
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_keycCstj�d�tj��|j��tj���d�}|r�z�t|d��V}tj�d�	|��|�
d�}|sbq�|j�|�|j��tj�d�qRWd�n1s�0Ytj�d�	|��Wn8ty�}z tj�d	�	||��WYd}~n
d}~00Wd�n1�s0YdS)
z,Ask user for filenname and send its contentsz
--- File to upload: rk�rbz--- Sending file {} ---
i�.Nz
--- File {} sent ---
z"--- ERROR opening file {}: {} ---
)
rrCr!r"r�rT�readline�rstrip�openrrbr��IOError)r�filenamer��block�errrr�Es"


,zMiniterm.upload_filecCs�tj�d�tj�d�dd�tt���D���tj�d�d�|j���|j	�"tj
�����
�}Wd�n1sx0Y|r�|D]&}|tvr�tj�d�t|���q�q�||_|��tj�d	�d�|j���dS)
zchange the i/o transformationsz
--- Available Filters:
rjcss|]\}}d�||�VqdS)z---   {:<10} = {.__doc__}N�r�ru�k�vrrrrw^s�z)Miniterm.change_filter.<locals>.<genexpr>z$
--- Enter new filter name(s) [{}]: r�Nz--- unknown filter: {}
r�)rrCr!r�r�r��itemsrr�r�rTr�lower�splitrr�)rZnew_filtersr�rrrr�[s
�
0zMiniterm.change_filtercCs�tj�d�|j��|j�tj����}Wd�n1s>0Y|r�zt	�
|�Wn$ty~tj�d�|��Yn0|�|�|�
|�tj�d�|j��tj�d�|j��dS)z"change encoding on the serial portz#
--- Enter new encoding name [{}]: Nz--- invalid encoding name: {}
r�r�)rrCr!rr�r�rTr�stripr@�lookup�LookupErrorr�r�r�)rZnew_encodingrrrr�ns,

zMiniterm.change_encodingcCs�tj�d�tj��|j�z|jj}zttj�	��
��|j_Wn>ty~}z&tj�d�|��||j_WYd}~nd}~00|�
�Wd�n1s�0YdS)zchange the baudratez
--- Baudrate: z#--- ERROR setting baudrate: {} ---
N)rrCr!r"r�r��baudrater�rTrrr�rr�)rZbackuprrrrr�~s
zMiniterm.change_baudratec
Cs"|j�2z
t�}Wnty(d}Yn0Wd�n1s>0Y|�r||jjk�r|��|j��}zBtj|dd�}|�|�|jj	|_	|jj
|_
|��|jj|_Wn>t
y�}z&tj�d�|��|��WYd}~n0d}~00|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�rr��	ExceptionrrCr!rr�r�)rr�ZsettingsZ
new_serialrrrrr��s,
(




zMiniterm.change_portc
Cs�|��|j��tj�d�|jj��d}|jjs�tj�djt	|j
�d��|j��}||j
krn|�
�q�n|dvr|d}q�z|j��Wq,ty�}ztj�d�|��WYd}~q,d}~00q,|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�rrCr!rr�Zis_openrr�r�r r�rrr�r�)rZdo_change_portr	rrrrr��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
ZVERSIONzunknown versionr�r�r�r�r�r�r�r�r�)�versionrZmenur�r�Zbrkrh�infoZuploadr�filterr�)r�getattrr�rr�r�rrrrr��s
�zMiniterm.get_help_textN)Fr�r)F)r7)r7)r,r-r.r/rr�r�r�r�r�r�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
gd�dd�ddd�|jddddd�|jddddd�|jdtd|d�|jdtd|d�|jd dd!dd�|�d"�}|jd#d$dd%dd�|jd&d'd(d)d*d+�|jd,d-d.d/d0gd1�|jd2gd3�d4d�d5d6d�|jd7dd8dd�|�d9�}|jd:td;d<d=d>�|jd?td;d@dAd>�|�dB�}|jdCdDddEdd�|jdFddGdd�|��}|j|jk�r�|�dH�|j	�rdI|j	v�rt
j�dJ�t
j�dK�
dLdM�tt���D���t
j�dK�t
�dN�|j	}ndOg}|jdu�s2|jdPk�r|zt�|_Wn*t�yht
j�dK�|�dQ�Yn0|j�s||�dR�z�tj|j|j|j|j|jdSdT�}	t|	dU��s�dN|	_|jdu�r�|j�s�t
j�dV�|j�r�dWndX��|j|	_|j du�r$|j�st
j�dY�|j �rdWndX��|j |	_ |	�!�Wnftj"�y�}
zJt
j�dZ�t#|j�|
��|j$�rf�|j%�szt
�dN�ndP|_WYd}
~
nd}
~
00�q��qt&|	|j'|j(�)�|d[�}t*|j�|_+t*|j�|_,|j-|_-|�.|j/�|�0|j/�|j�s:t
j�d\j|jd]��t
j�d^�t1|j+�t1|j,�t1|j,�t1d_���|�2�z|�
dS�Wnt�ydYn0|j�szt
j�d`�|�
�|�3�dS)azCommand line tool, entry pointrNz9Miniterm - A simple terminal program for the serial port.)�descriptionr��?z(serial port name ('-' to show port list))�nargs�helpr�rz#set baud rate, default: %(default)s)r�typerr�z
port settingsz--parity)�N�E�O�S�McSs|��Sr'�r�rrrrr	r
zmain.<locals>.<lambda>z*set parity, one of {N E O S M}, default: Nr )�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)sr6)�dest�metavarrr�z-fz--filterr��NAMEzadd text transformation)r(r+rr�z--eol)rmrpricSs|��Sr'r%rrrrr	Jr
zend of line moderiz--rawz)Do no apply any encodings/transformationsZhotkeysz--exit-charZNUMzWUnicode of special character that is used to exit the application, default: %(default)sr�)rr+rr�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:
rjcss|]\}}d�||�VqdS)z{:<10} = {.__doc__}Nrrrrrrwzs�zmain.<locals>.<genexpr>r\r��-z"user aborted and port is not givenzport is not givenT)r�r�r�rr�z--- forcing DTR {}
r�r�z--- forcing RTS {}
zcould not open port {}: {}
)rhr�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�errorrrrCr!r�r�r�rrr�r�r�r�rrr�r�r�r��timeoutr��quietrr�rr�rZdevelopZaskr�rhr�rrMr�r�r�r�r)r�rr�r�)Zdefault_portZdefault_baudrateZdefault_rtsZdefault_dtrr/�parser�groupr)r�r�rZminitermrrr�main�s����
������
�����
��
��

�


��
�
�r9�__main__)NrNN),r@r3rr�r�Zserial.tools.list_portsrZserial.toolsrrYr��	NameError�input�chrrMr�objectrr�rLr9r1r5rXrUrd�NotImplementedErrorr�platformrerirmrprqr�r�r�r�r�r�r�r�r9r,rrrr�<module>
sp

-
!

�
��*
[


© 2025 Cubjrnet7