%PDF- %PDF-
Mini Shell

Mini Shell

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



j�qV�u�@s}ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZm
Z
mZGdd�de�Zejj�Zedd�dkr*ddlZdZdZd	Zd
ZdZdZd
ZdZdZGdd�de�Zn�edkrOGdd�de�Zn�edd�dkr~Gdd�de�Zn�edd�dkp�edd�dkr�Gdd�de�ZnBedd�dkrddlZdZGdd�de�Znedd�dkr3Gd d�de�Zn�edd�d!krbGd"d�de�Zn�edd
�d#kr�Gd$d�de�Zntedd�d%kr�Gd&d�de�ZnEedd�d'kr�Gd(d�de�ZnGd)d�de�Ze ed*d+�Z!e ed,d-�Z"e ed.d/�Z#e ed0d1�Z$e ed2d
�Z%e ed3d�Z&e ed4d5�Z'e ed6d7�Z(e ed8d9�Z)e ed:d;�Z*e ed<e(�Z+e ed=e)�Z,e-ed>�r�ej.Z.ne ed?d@�Z.e edAdB�Z/ej0dCd�Z1ej0dCe&�Z2ej0dCe%�Z3e edDdE�Z4e edFdG�Z5dHZ6GdIdJ�dJe
e�Z7GdKdL�dLe7�Z8GdMdN�dNe7�Z9e:dOkrye7ddPdQdRej;dSej<dTej=dUddVddWd�Z>dXe>_?dXe>_@e>jA�e>jB�e>jCdY�ejDjCdZe>jEd��ejDjCd[e>jF��[>dS)\�N)�
SerialBase�SerialException�to_bytes�portNotOpenError�writeTimeoutErrorc@s:eZdZiZdd�Zdd�Zdd�ZdS)�PlatformSpecificBasecCs6tjjdtjtjtjf�td��dS)Na�don't know how to number ttys on this system.
! Use an explicit path (eg /dev/ttyS1) or send this information to
! the author of this module:

sys.platform = %r
os.name = %r
serialposix.py version = %s

also add the device name of the serial port and where the
counting starts for the first serial port.
e.g. 'first serial port: /dev/ttyS0'
and with a bit luck you can get this module running...
z4no number-to-device mapping defined on this platform)	�sys�stderr�write�platform�os�name�serial�VERSION�NotImplementedError)�self�port_number�r�4/usr/lib/python3/dist-packages/serial/serialposix.py�number_to_devices	
z%PlatformSpecificBase.number_to_devicecCstd��dS)Nz9non-standard baudrates are not supported on this platform)r)r�baudraterrr�_set_special_baudrate0sz*PlatformSpecificBase._set_special_baudratecCstd��dS)Nz$RS485 not supported on this platform)r)r�rs485_settingsrrr�_set_rs485_mode3sz$PlatformSpecificBase._set_rs485_modeN)�__name__�
__module__�__qualname__�BAUDRATE_CONSTANTSrrrrrrrrsr��linuxl*TXi+T,@ii.Ti/T����c>@s�eZdZdddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=iZd>d?�Zd@dA�ZdBdC�ZdDS)E�PlatformSpecificr�2r �Kr!�n��r"�r���i,�iX�i��	i�
i`	�i��i�%�
iK�i��i�ii�ii�iiii �ii�iiii@Bii�i	i`�i
i��ii�%&ii��-i
i�g5ii	=icCsd|fS)Nz/dev/ttyS%dr)rrrrrrnsz!PlatformSpecific.number_to_devicecCs�tjddgd�}ybtj|jt|�|dtjM<|dtO<||d<|d<tj|jt|�Wn;t	k
r�}zt
d||f��WYdd}~XnXdS)N�ir�@r!r/r0z'Failed to set custom baud rate (%s): %s)�array�fcntl�ioctl�fd�TCGETS2�termiosZCBAUD�BOTHER�TCSETS2�IOError�
ValueError)rr�buf�errrrqsz&PlatformSpecific._set_special_baudratecCsJtjddgd�}y�tj|jt|�|dk	r�|jrX|dtO<n|dtM<|jr�|dtO<n|dtM<|j	r�|dt
O<n|dt
M<t|jd�|d<t|j
d�|d<n
d|d<tj|jt|�Wn8tk
rE}ztd|f��WYdd}~XnXdS)Nr6rr.i�r r!zFailed to set RS485 mode: %s)r8r9r:r;�
TIOCGRS485Zloopback�SER_RS485_RX_DURING_TXZrts_level_for_tx�SER_RS485_RTS_ON_SENDZrts_level_for_rx�SER_RS485_RTS_AFTER_SEND�intZdelay_rts_before_sendZdelay_rts_after_send�
TIOCSRS485r@rA)rrrBrCrrrr�s&			
z PlatformSpecific._set_rs485_modeN)rrrrrrrrrrrr$KsDr$�cygwinc@sdeZdZddddddddd	d
ddd
dddddddddiZdd�ZdS)r$i�ii�ii �ii�iii	i@Bi
i�ii`�ii��i
i�%&ii��-icCsd|dfS)Nz
/dev/com%dr r)rrrrrr�sz!PlatformSpecific.number_to_deviceN)rrrrrrrrrr$�sr-Zopenbsdc@seZdZdd�ZdS)r$cCsd|fS)Nz/dev/cua%02dr)rrrrrr�sz!PlatformSpecific.number_to_deviceN)rrrrrrrrr$�sr(ZbsdZfreebsdc@seZdZdd�ZdS)r$cCsd|fS)Nz/dev/cuad%dr)rrrrrr�sz!PlatformSpecific.number_to_deviceN)rrrrrrrrr$�sr,�darwinlTc@sWeZdZdd�Zej�djd�Zeed�dkrSdd�Z	d	S)
r$cCsd|fS)Nz/dev/cuad%dr)rrrrrr�sz!PlatformSpecific.number_to_devicer!�.rr.cCs2tjd|g�}tj|jt|d�dS)Nr6r )r8r9r:r;�IOSSIOSPEED)rrrBrrrr�sz&PlatformSpecific._set_special_baudrateN)
rrrrr�uname�splitZosx_versionrHrrrrrr$�sZnetbsdc@seZdZdd�ZdS)r$cCsd|fS)Nz/dev/dty%02dr)rrrrrr�sz!PlatformSpecific.number_to_deviceN)rrrrrrrrr$�s�irixc@seZdZdd�ZdS)r$cCsd|dfS)Nz/dev/ttyf%dr r)rrrrrr�sz!PlatformSpecific.number_to_deviceN)rrrrrrrrr$�sZhpc@seZdZdd�ZdS)r$cCsd|dfS)Nz/dev/tty%dp0r r)rrrrrr�sz!PlatformSpecific.number_to_deviceN)rrrrrrrrr$�s�sunosc@seZdZdd�ZdS)r$cCsdtd�|fS)Nz
/dev/tty%c�a)�ord)rrrrrr�sz!PlatformSpecific.number_to_deviceN)rrrrrrrrr$�s�aixc@seZdZdd�ZdS)r$cCsd|fS)Nz
/dev/tty%dr)rrrrrr�sz!PlatformSpecific.number_to_deviceN)rrrrrrrrr$�sc@seZdZdS)r$N)rrrrrrrr$�s�TIOCMGETiT�TIOCMBISiT�TIOCMBICiT�TIOCMSETiT�	TIOCM_DTR�	TIOCM_RTS�	TIOCM_CTS� �	TIOCM_CARr7�	TIOCM_RNG��	TIOCM_DSR��TIOCM_CD�TIOCM_RI�TIOCINQZFIONREADiT�TIOCOUTQiT�I�TIOCSBRKi'T�TIOCCBRKi(Ti@c@sQeZdZdZdd�Zddd�Zdd�Zed	d
��Zddd
�Z	dd�Z
dd�Zdd�Zdd�Z
ddd�Zdd�Zdd�Zdd�Zedd ��Zed!d"��Zed#d$��Zed%d&��Zed'd(��Zd)d*�Zd+d,�Zd-d.d/�Zd-d0d1�Zd2S)3�Serialz�    Serial port class POSIX implementation. Serial port configuration is
    done with termios and fcntl. Runs on Linux and many other Un*x like
    systems.
    cCs=|jdkrtd��|jr0td��d|_y-tj|jtjtjBtj	B�|_WnMt
k
r�}z-d|_t|jd|j|f��WYdd}~XnXy|jdd�Wn3ytj
|j�WnYnXd|_�Yn
Xd|_|js|j�|js/|j�|j�dS)zo        Open port with current settings. This may throw a SerialException
        if the port cannot be opened.Nz.Port must be configured before it can be used.zPort is already open.zcould not open port %s: %s�force_updateT)Z_portr�is_openr;r�openZportstr�O_RDWR�O_NOCTTY�
O_NONBLOCK�OSError�errno�_reconfigure_port�closeZ_dsrdtr�_update_dtr_state�_rtscts�_update_rts_state�reset_input_buffer)r�msgrrrrls2		-	2			
	
zSerial.openFc,Cs�|jdkrtd��d}d}}|jdk	rSd}t|jd�}y1tj|j�}|\}}}}	}
}}Wn8tjk
r�}
ztd|
��WYdd}
~
XnX|tjtjBO}|	tj	tj
BtjBtjBtj
BtjBtjBM}	x1dD])}tt|�r|	tt|�M}	qW|tjtjBtjBM}|tjtjBtjBtjBM}ttd	�r�|tjM}ttd
�r�|tjM}yttd|j�}
}Wn�tk
r�y|j|j}
}Wntk
rttd�}
}yt|j�}Wn%tk
r[td
|j��Yn X|dkr{td
|j��YnXYnX|tj M}|j!dkr�|tj"O}np|j!dkr�|tj#O}nQ|j!dkr�|tj$O}n2|j!dkr|tj%O}ntd|j!��|j&t'j(krE|tj)M}nW|j&t'j*krg|tj)O}n5|j&t'j+kr�|tj)O}ntd|j&��|tj,tj-BM}|j.t'j/kr�|tj0tj1BM}n�|j.t'j2kr|tj1M}|tj0O}n�|j.t'j3kr4|tj0tj1BO}n�|j.t'j4krwt5dd�dkrw|tj0t6Btj1BO}n]|j.t'j7kr�t5dd�dkr�|tj0t6BO}|tj1M}ntd|j.��ttd�r"|j8r|tj9tj:BO}qW|tj9tj:Btj;BM}n5|j8rB|tj9tj:BO}n|tj9tj:BM}ttd�r�|j<r|tj=O}q�|tj=M}n6ttd�r�|j<r�|tj>O}n|tj>M}|dks�|dkr�td|��||tj?<|dks|dkr#td|��||tj@<|sW||||	|
||g|kr�tjA|jtjB||||	|
||g�|dk	r�|jC|�|jDdk	r�|jE|jD�dS)z,Set communication parameters on opened port.Nz+Can only operate on a valid file descriptorrr r0zCould not configure port: %s�ECHOCTL�ECHOKE�IUCLC�PARMRKzB%sZB38400zInvalid baud rate: %rr.r-r,rzInvalid char len: %rz"Invalid stop bit specification: %rrzInvalid parity: %r�IXANY�CRTSCTS�CNEW_RTSCTS�zInvalid vmin: %r zInvalid vtime: %r)ryrz)Fr;r�_inter_byte_timeoutrHr=�	tcgetattr�errorZCLOCALZCREADZICANONZECHOZECHOEZECHOKZECHONLZISIGZIEXTEN�hasattr�getattrZOPOSTZONLCRZOCRNLZINLCRZIGNCRZICRNLZIGNBRKr{r|Z	_baudrate�AttributeErrorr�KeyErrorrAZCSIZEZ	_bytesizeZCS8ZCS7ZCS6ZCS5Z	_stopbitsr�STOPBITS_ONEZCSTOPBZSTOPBITS_ONE_POINT_FIVEZSTOPBITS_TWOZINPCKZISTRIPZ_parityZPARITY_NONEZPARENBZPARODD�PARITY_EVENZ
PARITY_ODDZPARITY_MARK�plat�CMSPARZPARITY_SPACEZ_xonxoffZIXONZIXOFFr}rur~r�VMIN�VTIME�	tcsetattr�TCSANOWrZ_rs485_moder)rrjZcustom_baud�vmin�vtime�	orig_attr�iflag�oflag�cflag�lflag�ispeed�ospeed�ccrxZflagrrrrr<s�
#5
#


((				

'
zSerial._reconfigure_portcCs>|jr:|jdk	r1tj|j�d|_d|_dS)z
Close portNF)rkr;rrs)rrrrrs�s
		zSerial.closecCs,tj|jtt�}tjd|�dS)z9Return the number of bytes currently in the input buffer.rfr)r9r:r;rd�TIOCM_zero_str�struct�unpack)r�srrr�
in_waiting�szSerial.in_waitingr c	Cs�|jst�t�}|j}xYt|�|kr|y�tj�}tj|jggg|�\}}}|ssPtj	|j|t|��}|s�t
d��|j|�|dk	r�|tj�|8}|dkr�PWq$tk
r+}z*|j
t
jkrt
d|f��WYdd}~Xq$tjk
rx}z+|dt
jkrft
d|f��WYdd}~Xq$Xq$Wt|�S)z�        Read size bytes from the serial port. If a timeout is set it may
        return less characters as requested. With no timeout it will block
        until the requested number of bytes is read.
        zgdevice reports readiness to read but returned no data (device disconnected or multiple access on port?)Nrzread failed: %s)rkr�	bytearray�_timeout�len�time�selectr;r�readr�extendrprq�EAGAINr��bytes)	r�sizer��timeoutZ
start_time�ready�_rBrCrrrr��s2			'
%*zSerial.readc
Cs�|jst�t|�}t|�}|jdk	r[|jdkr[tj�|j}nd}x]|dkr�y�tj|j|�}|r�|tj�}|dkr�t	�t
j
g|jgg|�\}}}|st	�n9t
j
g|jggd�\}}}|std��||d�}||8}Wqdtk
rQ�Yqdtk
r�}	zL|	j
t
jkr�td|	f��|r�|tj�dkr�t	�WYdd}	~	XqdXqdWt|�S)z2Output the given byte string over the serial port.Nrzwrite failed (select)zwrite failed: %s)rkrrr�Z_write_timeoutr�rr
r;rr�rrprqr�)
r�data�dZtx_lenr��nZtimeleftr�r��vrrrr
s<	'	'
zSerial.writecCs#|jst�tj|j�dS)zb        Flush of file like objects. In this case, wait until all data
        is written.
        N)rkrr=Ztcdrainr;)rrrr�flush)s	zSerial.flushcCs)|jst�tj|jtj�dS)z9Clear input buffer, discarding all that is in the buffer.N)rkrr=�tcflushr;ZTCIFLUSH)rrrrrw2s	zSerial.reset_input_buffercCs)|jst�tj|jtj�dS)zs        Clear output buffer, aborting the current output and discarding all
        that is in the buffer.
        N)rkrr=r�r;ZTCOFLUSH)rrrr�reset_output_buffer8s	zSerial.reset_output_bufferg�?cCs0|jst�tj|jt|d��dS)za        Send break condition. Timed, returns to idle state after given
        duration.
        g�?N)rkrr=Ztcsendbreakr;rH)rZdurationrrr�
send_breakAs	zSerial.send_breakcCs6|jrtj|jt�ntj|jt�dS)zS        Set break: Controls TXD. When active, no transmitting is possible.
        N)Z_break_stater9r:r;rgrh)rrrr�_update_break_stateJs	zSerial._update_break_statecCs<|jr"tj|jtt�ntj|jtt�dS)z)Set terminal status line: Request To SendN)Z
_rts_stater9r:r;rV�
TIOCM_RTS_strrW)rrrrrvSs	zSerial._update_rts_statecCs<|jr"tj|jtt�ntj|jtt�dS)z-Set terminal status line: Data Terminal ReadyN)Z
_dtr_stater9r:r;rV�
TIOCM_DTR_strrW)rrrrrtZs	zSerial._update_dtr_statecCsE|jst�tj|jtt�}tjd|�dt	@dkS)z(Read terminal status line: Clear To Sendrfr)
rkrr9r:r;rUr�r�r�r[)rr�rrr�ctsas	z
Serial.ctscCsE|jst�tj|jtt�}tjd|�dt	@dkS)z)Read terminal status line: Data Set Readyrfr)
rkrr9r:r;rUr�r�r�r`)rr�rrr�dsris	z
Serial.dsrcCsE|jst�tj|jtt�}tjd|�dt	@dkS)z)Read terminal status line: Ring Indicatorrfr)
rkrr9r:r;rUr�r�r�rc)rr�rrr�riqs	z	Serial.ricCsE|jst�tj|jtt�}tjd|�dt	@dkS)z)Read terminal status line: Carrier Detectrfr)
rkrr9r:r;rUr�r�r�rb)rr�rrr�cdys	z	Serial.cdcCs,tj|jtt�}tjd|�dS)z:Return the number of bytes currently in the output buffer.rfr)r9r:r;rer�r�r�)rr�rrr�out_waiting�szSerial.out_waitingcCs/|jst�tj|jtjtj�dS)zinternal - not portable!N)rkrr9r;�F_SETFLrro)rrrr�nonblocking�s	zSerial.nonblockingcCs|jst�|jS)z�        For easier use of the serial port instance with select.
        WARNING: this function is not portable to different platforms!
        )rkrr;)rrrr�fileno�s	z
Serial.filenoTcCsH|jst�|r.tj|jtj�ntj|jtj�dS)z�        Manually control flow - when software flow control is enabled.
        This will send XON (true) or XOFF (false) to the other device.
        WARNING: this function is not portable to different platforms!
        N)rkrr=�tcflowr;ZTCIONZTCIOFF)r�enablerrr�set_input_flow_control�s
	zSerial.set_input_flow_controlcCsH|jst�|r.tj|jtj�ntj|jtj�dS)z�        Manually control flow of outgoing data - when hardware or software flow
        control is enabled.
        WARNING: this function is not portable to different platforms!
        N)rkrr=r�r;ZTCOONZTCOOFF)rr�rrr�set_output_flow_control�s
	zSerial.set_output_flow_controlN)rrr�__doc__rlrrrs�propertyr�r�r
r�rwr�r�r�rvrtr�r�r�r�r�r�r�r�r�rrrrris.$�
.'				
	
ric@s%eZdZdZddd�ZdS)�PosixPollSerialz�    Poll based read implementation. Not all systems support poll properly.
    However this one has better handling of errors, such as a device
    disconnecting while it's in use (e.g. USB-serial unplugged).
    r cCsB|jdkrt�t�}tj�}|j|jtjtjBtjBtj	B�|dkr8x�t
|�|kr7xK|j|jd�D]3\}}|tjtjBtj	B@r�td��q�Wt
j|j|t
|��}|j|�|jdk	r|jdks,|jdk	rd|jdkrd|rdPqdWt|�S)z�        Read size bytes from the serial port. If a timeout is set it may
        return less characters as requested. With no timeout it will block
        until the requested number of bytes is read.
        Nri�zdevice reports error (poll))r;rr�r��poll�registerZPOLLINZPOLLERRZPOLLHUPZPOLLNVALr�r�rrr�r�r�r�)rr�r�r�r;ZeventrBrrrr��s 	+#
%zPosixPollSerial.readN)rrrr�r�rrrrr��sr�cs:eZdZdZd�fdd�Zddd�Z�S)�VTIMESeriala    Implement timeout using vtime of tty device instead of using select.
    This means that no inter character timeout can be specified and that
    the error handling is degraded.

    Overall timeout is disabled when inter-character timeout is used.
    Tc
sStt|�j�tj|jtjd�|jdk	rWd}t|jd�}nd}t|jd�}y1t	j
|j�}|\}}}}}	}
}Wn;t	jk
r�}ztj
d|��WYdd}~XnX|dks�|dkrtd|��||t	j<||t	j<t	j|jt	j|||||	|
|g�dS)z,Set communication parameters on opened port.rNr r0zCould not configure port: %sr�zInvalid vtime: %r)�superr�rrr9r;r�r�rHr�r=r�r�rrrAr�r�r�r�)
rrjr�r�r�r�r�r�r�r�r�r�rx)�	__class__rrrr�s(&

zVTIMESerial._reconfigure_portr cCsn|jst�t�}xIt|�|krctj|j|t|��}|sSP|j|�qWt|�S)z�        Read size bytes from the serial port. If a timeout is set it may
        return less characters as requested. With no timeout it will block
        until the requested number of bytes is read.
        )	rkrr�r�rr�r;r�r�)rr�r�rBrrrr��s		zVTIMESerial.read)rrrr�rrr�rr)r�rr��sr��__main__riKZbytesizeZparityZstopbitsr�ZxonxoffZrtsctsTZhelloz%r
z%s
)Grqr9rr�r�rr=r�rZserial.serialutilrrrrr�objectrr�lowerr�r8r<r?r>rDrIZSER_RS485_ENABLEDrFrGrEr$rMr�rUrVrWrXrYrZr[r]r^r`rbrcr�rdreZpackr�r�r�rgrhr�rir�r�rZ	EIGHTBITSr�r�r�ZrtsZdtrrwr�r
�stdoutr�Z	inWaitingrrrr�<module>s�(P,
	��#6							




Zerion Mini Shell 1.0