%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3/dist-packages/serial/tools/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3/dist-packages/serial/tools/__pycache__/miniterm.cpython-35.pyc



�l|VB~�@s�ddlZddlZddlZddlZddlZddlmZddlmZej	dd��ye
Wnek
r�eZ
e
ZYnXdd�ZGdd	�d	e�Zejd
krddlZddlZGdd�de�ZGd
d�de�ZnSejdkrPddlZddlZGdd�de�Znedej��Gdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gd d!�d!e�Z"Gd"d#�d#e�Z#d$ed%ed&eiZ$d'ed(ed)e d*e!d+e"d,e#iZ%d-d.�Z&Gd/d0�d0e�Z'dd1ddd2d3�Z(e)d4kr�e(�dS)5�N)�comports)�
hexlify_codeccCs|dkrtj�SdS)NZhexlify)r�getregentry)�c�r�7/usr/lib/python3/dist-packages/serial/tools/miniterm.py�<lambda>srcCs8t|�}|dkr*dtd�|St|�SdS)z)generate a readable description for a key� zCtrl+%c�@N)�ord�repr)�	characterZ
ascii_coderrr�key_descriptionsrc@speZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�ConsoleBasecCs=tjdkr!tjj|_ntj|_tj|_dS)N�r)rr)�sys�version_info�stdout�buffer�byte_output�output)�selfrrr�__init__'szConsoleBase.__init__cCsdS)Nr)rrrr�setup.szConsoleBase.setupcCsdS)Nr)rrrr�cleanup1szConsoleBase.cleanupcCsdS)Nr)rrrr�getkey4szConsoleBase.getkeycCs!|jj|�|jj�dS)N)r�write�flush)r�srrr�write_bytes7szConsoleBase.write_bytescCs!|jj|�|jj�dS)N)rrr)rrrrrr;szConsoleBase.writecCs|j�|S)N)r)rrrr�	__enter__Cs
zConsoleBase.__enter__cOs|j�dS)N)r)r�args�kwargsrrr�__exit__GszConsoleBase.__exit__N)�__name__�
__module__�__qualname__rrrrrrr r#rrrrr&sr�ntc@s4eZdZdd�Zdd�Zdd�ZdS)�OutcCs
||_dS)N)�fd)rr)rrrrPszOut.__init__cCsdS)Nr)rrrrrSsz	Out.flushcCstj|j|�dS)N)�osrr))rrrrrrVsz	Out.writeN)r$r%r&rrrrrrrr(Osr(cs:eZdZ�fdd�Zdd�Zdd�Z�S)�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__rrrZs**zConsole.__init__cCs0tjjj|j�tjjj|j�dS)N)r.r/r0r3r1r4r2)rrrr�__del__fszConsole.__del__cCsbx[tj�}|td�kr+td�S|td�td�fkrVtj�q|SqWdS)N�
�
r�)�msvcrtZgetwch�unichr)r�zrrrrjs

zConsole.getkey)r$r%r&rr;rrr)r:rr+Ysr+�posixcsFeZdZ�fdd�Zdd�Zdd�Zdd�Z�S)	r+cs�tt|�j�tjj�|_tj|j�|_	t
j|j�tj
dkr}tjtjj�tj�|_ntj|_dS)Nrr)rr)r-r+rr�stdinr7r)�termios�	tcgetattr�old�atexit�registerrrr5�	getreaderr9�	enc_stdin)r)r:rrrys$zConsole.__init__cCswtj|j�}|dtj@tj@tj@|d<d|dtj<d|dtj<tj|jtj	|�dS)Nr��r)
rDrEr)ZICANONZECHOZISIGZVMINZVTIME�	tcsetattrZTCSANOW)r�newrrrr�s
&z
Console.setupcCs4|jjd�}|td�kr0td�}|S)NrK��)rJ�readr@)rrrrrr�szConsole.getkeycCs tj|jtj|j�dS)N)rDrMr)Z	TCSAFLUSHrF)rrrrr�szConsole.cleanup)r$r%r&rrrrrr)r:rr+xs
z9Sorry no implementation for your platform (%s) available.c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�	Transformz&do-nothing: forward all data unchangedcCs|S)ztext received from serial portr)r�textrrr�rx�szTransform.rxcCs|S)ztext to be sent to serial portr)rrSrrr�tx�szTransform.txcCs|S)z(text to be sent but displayed on consoler)rrSrrr�echo�szTransform.echoN)r$r%r&�__doc__rTrUrVrrrrrR�srRc@s"eZdZdZdd�ZdS)�CRLFzENTER sends CR+LFcCs|jdd�S)N�
z
)r,)rrSrrrrU�szCRLF.txN)r$r%r&rWrUrrrrrX�srXc@s.eZdZdZdd�Zdd�ZdS)�CRzENTER sends CRcCs|jdd�S)N�
rY)r,)rrSrrrrT�szCR.rxcCs|jdd�S)NrYr[)r,)rrSrrrrU�szCR.txN)r$r%r&rWrTrUrrrrrZ�srZc@seZdZdZdS)�LFzENTER sends LFN)r$r%r&rWrrrrr\�sr\c@s`eZdZdZedd�ed�D��Zejddddi�d	d
�ZeZ	dS)�
NoTerminalz0remove typical terminal control codes from inputccs1|]'}t|�dkr|d|fVqdS)z
	i$N)r@)�.0�xrrr�	<genexpr>�szNoTerminal.<genexpr>r	rOi!$�i%$cCs|j|j�S)N)�	translate�REPLACEMENT_MAP)rrSrrrrT�sz
NoTerminal.rxN)
r$r%r&rW�dict�rangerc�updaterTrVrrrrr]�s
r]c@sTeZdZdZedd�ed�D��Zejdddddd	i�d
S)�
NoControlsz%Remove all control codes, incl. CR+LFccs|]}|d|fVqdS)i$Nr)r^r_rrrr`�szNoControls.<genexpr>r	i#$rOi!$rai%$N)r$r%r&rWrdrercrfrrrrrg�srgc@s(eZdZdZdd�ZeZdS)�	PrintablezMShow decimal code for all non-ASCII characters and replace most control codescCs�g}x�|D]�}d|ko*dkns;|dkrK|j|�q
|dkrw|jtdt|���q
|jdd�djt|��D��|jd�q
Wdj|�S)	N� �z
	i$css)|]}tdt|�d�VqdS)i� �0N)r@r)r^�drrrr`�szPrintable.rx.<locals>.<genexpr>z{:d}�)�appendr@r�extend�format�join)rrS�r�trrrrT�s
( )zPrintable.rxN)r$r%r&rWrTrVrrrrrh�srhc@s:eZdZdZdd�Zdd�Zdd�ZdS)	�Colorizez,Apply different colors for received and echocCsd|_d|_dS)Nzz)�input_color�
echo_color)rrrrr�s	zColorize.__init__cCs|j|S)N)ru)rrSrrrrT�szColorize.rxcCs|j|S)N)rv)rrSrrrrV�sz
Colorize.echoN)r$r%r&rWrrTrVrrrrrt�srtc@s.eZdZdZdd�Zdd�ZdS)�DebugIOzPrint what is sent and receivedcCs0tjjdjt|���tjj�|S)Nz	 [RX:{}] )rr8rrprr)rrSrrrrT�s
z
DebugIO.rxcCs0tjjdjt|���tjj�|S)Nz	 [TX:{}] )rr8rrprr)rrSrrrrUs
z
DebugIO.txN)r$r%r&rWrTrUrrrrrw�srw�crlfZcrZlfZdirect�defaultZ	nocontrolZ	printableZcolorize�debugcCs�tjjd�g}x[ttt��d�D]A\}\}}}tjjdj|||��|j|�q/Wxytd�}yIt	|�d}d|ko�t
|�kns�tjjd�wwWntk
r�YnX||}|SWdS)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:
rKz--- {:2}: {:20} {}
z#--- Enter port index or full name: rz--- Invalid index!
N)rr8r�	enumerate�sortedrrprn�	raw_input�int�len�
ValueError)Zports�n�portZdescZhwid�indexrrr�ask_for_ports ."

r�c@s�eZdZdZddfdd�Zdd�Zdd	�Zd
d�Zdd
�Zddd�Z	dd�Z
ddd�Zddd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!S)"�Minitermz�    Terminal application. Copy data from serial port to console and vice versa.
    Handle special keys from the console to show menu etc.
    FrxcCskt�|_||_||_d|_d|_d|_||_||_|j	�d|_
d|_dS)NFzUTF-8��)r+�console�serialrV�raw�input_encoding�output_encoding�eol�filters�update_transformations�exit_character�menu_character)r�serial_instancerVr�r�rrrr;s							
	zMiniterm.__init__cCsDd|_tjd|jdd�|_d|j_|jj�dS)zStart reader threadT�target�namerTN)�
_reader_alive�	threading�Thread�reader�receiver_thread�daemon�start)rrrr�
_start_readerHs	zMiniterm._start_readercCsd|_|jj�dS)z6Stop reader thread only, wait for clean exit of threadFN)r�r�rq)rrrr�_stop_readerPs	zMiniterm._stop_readercCs[d|_|j�tjd|jdd�|_d|j_|jj�|jj	�dS)NTr�r�rU)
�aliver�r�r��writer�transmitter_threadr�r�r�r)rrrrr�Us	

zMiniterm.startcCs
d|_dS)NF)r�)rrrr�stop^sz
Miniterm.stopcCs$|jj�|s |jj�dS)N)r�rqr�)rZ
transmit_onlyrrrrqas
z
Miniterm.joincCsVt|jgdd�|jD�}dd�|D�|_tt|j��|_dS)NcSsg|]}t|�qSr)�TRANSFORMATIONS)r^�frrr�
<listcomp>gs	z3Miniterm.update_transformations.<locals>.<listcomp>cSsg|]}|��qSrr)r^rsrrrr�hs	)�EOL_TRANSFORMATIONSr�r��tx_transformations�list�reversed�rx_transformations)rZtransformationsrrrr�fs$zMiniterm.update_transformationsr,cCs%||_tj|�|�|_dS)N)r�r5�getincrementaldecoder�
rx_decoder)rr9�errorsrrr�set_rx_encodingks	zMiniterm.set_rx_encodingcCs%||_tj|�|�|_dS)N)r�r5�getincrementalencoder�
tx_encoder)rr9r�rrr�set_tx_encodingos	zMiniterm.set_tx_encodingcCs�tjjdjd|j��tjjdj|jjr@dnd|jjrUdnd|jjrjdnd��yntjjdj|jjr�dnd|jj	r�dnd|jj
r�dnd|jjr�dnd��Wntjk
r�YnXtjjdj|jj
rdnd��tjjdj|jjrFdnd��tjjd	j|j��tjjd
j|j��tjjdj|jj���tjjdjd
j|j���dS)NzK
--- 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: {}
ri)rr8rrpr��rts�dtr�break_conditionZctsZdsrZriZcd�SerialException�xonxoff�rtsctsr�r�r��upperrqr�)rrrr�dump_port_settingsss(
 ++"zMiniterm.dump_port_settingscCs�y�x�|jr�|jr�|jj|jjp0d�}|r|jrX|jj|�q|jj	|�}x |j
D]}|j|�}qtW|jj|�qWWn!tj
k
r�d|_�YnXdS)zloop and copy serial->consolerKFN)r�r�r�rQZ
in_waitingr�r�rr��decoder�rTrr�)r�datarS�transformationrrrr��s		zMiniterm.readercCs;d}yx|jry|jj�}Wntk
rBd}YnX|r_|j|�d}q||jkrwd}q||jkr�|j�Pq|}x |jD]}|j	|�}q�W|j
j|jj
|��|jr|}x |jD]}|j|�}q�W|jj|�qWWnd|_�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�rUr�rr��encoderV)rZmenu_activerrSr�Z	echo_textrrrr��s6

		
		zMiniterm.writercCs�	||jks||jkrV|jj|jj|��|jr�	|jj|�nR	|dkr�tj	jd�tj	j
�|j�tjj�j
d�}|r�y�t|d��j}tj	jdj|��xG|jd�}|s�P|jj|�|jj
�tj	jd�q�WWdQRXtj	jd	j|��WnAtk
r�}z!tj	jd
j||��WYdd}~XnXWdQRXn|dkr�tj	j|j��n�|dkr|jj|j_tj	jd
j|jjr�dnd��n�|dkrM|jj|j_tj	jdj|jjr@dnd��n[|dkr�|jj|j_tj	jdj|jjr�dnd��n|dkr�|j|_tj	jdj|jr�dnd��n�|dkr�tj	jd�tj	jdjdd�ttj��D���tj	jdjdj|j���|j� tjj�j�j�}WdQRX|r�xM|D]2}|tkr�tj	jdjt|���Pq�W||_|j�tj	jdjdj|j���n�|dkr}tt �}|j!|j"�d }|t#|�krAd!}|||_"tj	jd"j|j"j$���|j�n+|d#kretj	jd$j|j%��|j�tjj�j&�}	WdQRX|	r*yt'j(|	�Wn+t)k
rtj	jd%j|	��YnX|j*|	�|j+|	�tj	jd&j|j%��tj	jd'j|j,��nC|d(kr~|j-�n*|d)kr�|j�-y
t.�}
Wnt/k
r�d}
YnXWdQRX|
r�	|
|jj0kr�	|j1�|jj2�}y]tj3|
d*d+�}|j4|�|jj|_|jj|_|j�|jj|_WnHt5k
r�}z(tj	jd,j|��|j6�WYdd}~Xn6X|jj6�||_tj	jd-j|jj0��|j7�n�|d.kr�tj	jd/�tj	j
�|j��|jj8}
y%t9tjj�j&��|j_8WnJt:k
r�}z*tj	jd0j|��|
|j_8WYdd}~XnX|j-�WdQRXn|d1kr�tj;|j_<|j-�n�|d2kr�tj=|j_<|j-�n�|d3krtj>|j_?|j-�n�|d4krCtj@|j_?|j-�ne|d5krktjA|j_?|j-�n=|d6kr�tjB|j_?|j-�n|d7kr�tjC|j_?|j-�n�|d8kr�tjD|j_E|j-�n�|d9kr	tjF|j_E|j-�n�|d:kr3	tjG|j_E|j-�nu|d;kr^	|d<k|j_H|j-�nJ|d=kr�	|d>k|j_I|j-�ntj	jd?jtJ|���dS)@z"Implement a simple menu / settings�z
--- File to upload: z
�rbz--- Sending file {} ---
i�.Nz
--- File {} sent ---
z"--- ERROR opening file {}: {} ---
zhH?�z--- RTS {} ---
r�r��z--- DTR {} ---
�z--- BREAK {} ---
�z--- local echo {} ---
�z
--- Available Filters:
rYcss'|]\}}dj||�VqdS)z---   {:<10} = {.__doc__}N)rp)r^�k�vrrrr`�sz+Miniterm.handle_menu_key.<locals>.<genexpr>z$
--- Enter new filter name(s) [{}]: riz--- unknown filter: {}z--- filters: {}
�rKrz--- EOL: {} ---
�z#
--- Enter new encoding name [{}]: z--- invalid encoding name: {}
z--- serial input encoding: {}
z--- serial output encoding: {}
�	ZpP�do_not_openTz#--- ERROR opening new port: {} ---
z--- Port changed to: {} ---
ZbBz
--- Baudrate: z#--- ERROR setting baudrate: %s ---
�8�7ZeEZoOZmMZsSZnN�1�2�3ZxX�XZrR�Rz!--- unknown menu character {} --
)Kr�r�r�rr�r�rVr�rr8rrC�readline�rstrip�openrprQ�IOError�
get_help_textr�r�r�rqr|r��itemsr��lower�splitrr�r�r�r�r�rr�r��stripr5�lookup�LookupErrorr�r�r�r�r�r�r�r�ZgetSettingsDict�serial_for_urlZapplySettingsDict�	Exception�closer��baudrater~r�Z	EIGHTBITSZbytesizeZ	SEVENBITSZPARITY_EVEN�parityZ
PARITY_ODDZPARITY_MARKZPARITY_SPACEZPARITY_NONEZSTOPBITS_ONEZstopbitsZSTOPBITS_TWOZSTOPBITS_ONE_POINT_FIVEr�r�r)rr�filenamer��block�eZnew_filtersZmodesr�Znew_encodingr�ZsettingsZ
new_serialZbackuprrrr��s&	


9...
+	%
"
	
(
"












	


%











zMiniterm.handle_menu_keycCs�djdttdd�dt|j�dt|j�dtd�d	td
�dtd�d
td�dtd�dtd�dtd�dtd�dtd��S)NaQ
--- 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
�version�VERSIONzunknown version�exitZmenur�r�r�r�Zbrkr�rVr��infor�Zuploadr�rr��filterr�r�r�)rp�getattrr�rr�r�)rrrrr�is	zMiniterm.get_help_textN)r$r%r&rWrr�r�r�r�rqr�r�r�r�r�r�r�r�rrrrr�5s
	$�r�i�%cCs�ddl}|jdd�}|jdddddd	|�|jd
dddtddd	|�|jd
�}|jdddddddgddd�ddd	d�|jdddddd	d�|jdddddd	d�|jddtdd d	|�|jd!dtdd"d	|�|jd#dddd$d	d�|jd%�}|jd&d'dddd(d	d�|jd)d*d+d,d-dd.d	d/�|jd0d1dd2d,d3dd4d	g�|jd5dd6d7d8gdd9d�dd:d	d8�|jd;dddd<d	d�|jd=�}|jd>dtd,d?dd@d	dA�|jdBdtd,d?ddCd	dD�|jdE�}|jdFdGddddHd	d�|jdIddddJd	d�|j�}|j|jkr�|jdK�|j	rnd|j	krbt
jjdL�t
jjdMj
dNdO�ttj��D���t
jjdM�t
jdP�|j	}n	d	g}x�|jdks�|jdQkr�yt�|_Wn/tk
r�t
jjdM�|jdR�YnX|js�|jdS�y�tj|j|jdT|jdU|jdV|jdWdPdXdY�}	|jdk	r~|jsrt
jjdZj|jrhd[nd\��|j|	_|jdk	r�|js�t
jjd]j|jr�d[nd\��|j|	_|	j�Wn{tj k
rR}
zXt
jjd^jt!|j�|
��|j"r�|j#s7t
jdP�n	dQ|_WYdd}
~
XqzXPqzWt$|	d_|j%d`|j&j'�da|�}t(|j�|_)t(|j�|_*|j+|_+|j,|j-�|j.|j-�|js=t
jjdbjdc|j��t
jjddjt/|j)�t/|j*�t/|j*�t/de���|j0�y|j
dY�Wntk
rlYnX|js�t
jjdf�|j
�dS)gNrZdescriptionz9Miniterm - A simple terminal program for the serial port.r��nargs�?�helpz(serial port name ('-' to show port list)ryr��typez#set baud rate, default: %(default)sz
port settingsz--parity�choices�N�E�O�S�McSs
|j�S)N)r�)rrrrr�szmain.<locals>.<lambda>z*set parity, one of {N E O S M}, default: Nz--rtscts�action�
store_truez)enable RTS/CTS flow control (default off)Fz	--xonxoffz*enable software flow control (default off)z--rtsz2set initial RTS line state (possible values: 0, 1)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�dest�serial_port_encoding�metavarZCODECzXset the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default: %(default)szUTF-8z-fz--filterrn�NAMEzadd text transformationz--eolrZr\rXcSs
|j�S)N)r�)rrrrr�szend 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�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-charzAvailable filters:
rYcss'|]\}}dj||�VqdS)z{:<10} = {.__doc__}N)rp)r^r�r�rrrr`szmain.<locals>.<genexpr>rK�-z"user aborted and port is not givenzport is not givenr�r�r�Ztimeoutr�Tz--- forcing DTR {}
r�r�z--- forcing RTS {}
zcould not open port {}: {}
rVr�r�zP--- Miniterm on {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---
r�z6--- Quit: {} | Menu: {} | Help: {} followed by {} ---
�z
--- exit ---
)1�argparse�ArgumentParser�add_argumentr~Zadd_argument_group�
parse_argsZ	menu_charZ	exit_char�errorr�rr8rrqr|r�r�r�r�r�r�r�r�r�r�r�r�r��quietrpr�r�r�rZdevelopZaskr�rVr�r�r@r�r�r�r�r�r�rr�)Zdefault_portZdefault_baudrateZdefault_rtsZdefault_dtrr�parser�groupr!r�r�r�Zminitermrrr�main�sZ					
		
	
	
						(	(%					


	r�__main__)*r5r*rr�r�Zserial.tools.list_portsrZserial.toolsrrHr}�	NameError�input�chrr@r�objectrr�r?r.r(r+rGrD�NotImplementedError�platformrRrXrZr\r]rgrhrtrwr�r�r�r�rr$rrrr�<module>
s`

%

�b�

Zerion Mini Shell 1.0