%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__/serialwin32.cpython-35.pyc



*�qV�G�@sddlZddlZddlmZddlZddlmZmZmZmZm	Z	Gdd�de�Z
edkr
ddlZe
d�Z
ejjde
�e
�Z
ejjde
�de
_d	e
_e
j�de
_e
j�ejjde
�dS)
�N)�win32)�
SerialBase�SerialException�to_bytes�portNotOpenError�writeTimeoutErrorcsZeZdZdZdCZ�fdd�Zdd�Zdd�Zdd�Zdd�Z	e
dd��Zdd d!�Zd"d#�Z
d$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Ze
d2d3��Ze
d4d5��Ze
d6d7��Ze
d8d9��Zd:d;d<d=�Zd>d?d@�Ze
dAdB��Z�S)D�Serialz5Serial port implementation for Win32 based on ctypes.�2�K�n�����,�X���`	��%�K������csEtt|�j�d|_d|_d|_tj|||�dS)N)�superr�__init__�_port_handle�_overlapped_read�_overlapped_write)�self�args�kwargs)�	__class__��4/usr/lib/python3/dist-packages/serial/serialwin32.pyrs
			zSerial.__init__cCs|jdkrtd��|jr0td��|j}y?|j�jd�rwt|dd��dkrwd|}Wntk
r�YnXtj	|tj
tjBddtjtj
tjBd�|_|jtjkrd|_td	|jtj�f��y�tj�|_tjdd
dd�|j_tj�|_tjdddd�|j_tj|jdd�tj�|_tj|jtj|j��|j�tj|jtj tj!Btj"Btj#B�Wn-y|j$�WnYnXd|_�Yn
Xd|_dS)
zx        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.ZCOM��z\\.\rzcould not open port %r: %r�iT)%Z_portr�is_open�name�upper�
startswith�int�
ValueErrorrZ
CreateFileZGENERIC_READZ
GENERIC_WRITEZ
OPEN_EXISTING�FILE_ATTRIBUTE_NORMALZFILE_FLAG_OVERLAPPEDrZINVALID_HANDLE_VALUEZportstr�ctypes�WinErrorZ
OVERLAPPEDrZCreateEvent�hEventr�	SetupComm�COMMTIMEOUTS�_orgTimeoutsZGetCommTimeouts�byref�_reconfigure_port�	PurgeComm�
PURGE_TXCLEAR�
PURGE_TXABORT�
PURGE_RXCLEAR�
PURGE_RXABORT�_close)r�portr#r#r$�open!sR		1


	
#	zSerial.opencCsD|jstd��tj�}|jdkr3n=|jdkrQtj|_ntt|jd�d�|_	|jdkr�|j
dk	r�tt|j
d�d�|_|jdkr�n=|jdkr�tj|_ntt|jd�d�|_tj
|jtj|��tj|jtj�tj�}tj|jtj|��|j|_|jtjkr�d|_nm|jtjkr�d|_nO|jtjkr�d|_n1|jtjkr�d	|_ntd
|j��|jtjkrtj |_!d|_"n�|jtj#krAtj$|_!d|_"n�|jtj%krktj&|_!d|_"ng|jtj'kr�tj(|_!d|_"n=|jtj)kr�tj*|_!d|_"ntd|j��|j+tj,kr�tj-|_.nU|j+tj/krtj0|_.n4|j+tj1kr5tj2|_.ntd|j+��d|_3|j4dkr�|j5rxtj6|_7n|j8r�tj9ntj:|_7|j5|_;n�|j4j<s�td
|j4j<f��|j4j=r�td|j4j=f��|j4j>dk	rtd|j4j>f��|j4j?dk	rEtd|j4j?f��|j4j@rjtd|j4j@f��tjA|_7d|_;|jBr�tjC|_Dn|jEr�tjFntjG|_D|jB|_H|jI|_J|jI|_Kd|_Ld|_Md|_NtjO|_PtjQ|_RtjS|jtj|��s@tdtjT���dS)z,Set communication parameters on opened port.z'Can only operate on a valid port handleNri�r'���r&z#Unsupported number of data bits: %rzUnsupported parity mode: %rz#Unsupported number of stop bits: %rz8Unsupported value for RS485Settings.rts_level_for_tx: %rz8Unsupported value for RS485Settings.rts_level_for_rx: %rz7Unsupported value for RS485Settings.delay_before_tx: %rz7Unsupported value for RS485Settings.delay_before_rx: %rz0Unsupported value for RS485Settings.loopback: %rzACannot configure port, something went wrong. Original message: %r)Urrrr3Z_timeoutZMAXDWORDZReadIntervalTimeout�maxr,ZReadTotalTimeoutConstantZ_inter_byte_timeout�_write_timeoutZWriteTotalTimeoutConstant�SetCommTimeoutsr/r5ZSetCommMaskZEV_ERRZDCBZGetCommStateZ	_baudrateZBaudRateZ	_bytesize�serialZFIVEBITSZByteSizeZSIXBITSZ	SEVENBITSZ	EIGHTBITSr-Z_parityZPARITY_NONEZNOPARITYZParityZfParityZPARITY_EVENZ
EVENPARITYZ
PARITY_ODDZ	ODDPARITYZPARITY_MARKZ
MARKPARITYZPARITY_SPACEZSPACEPARITYZ	_stopbitsZSTOPBITS_ONEZ
ONESTOPBITZStopBitsZSTOPBITS_ONE_POINT_FIVEZONE5STOPBITSZSTOPBITS_TWOZTWOSTOPBITSZfBinaryZ_rs485_modeZ_rtsctsZRTS_CONTROL_HANDSHAKEZfRtsControl�
_rts_stateZRTS_CONTROL_ENABLEZRTS_CONTROL_DISABLEZfOutxCtsFlowZrts_level_for_txZrts_level_for_rxZdelay_before_txZdelay_before_rxZloopbackZRTS_CONTROL_TOGGLEZ_dsrdtrZDTR_CONTROL_HANDSHAKEZfDtrControl�
_dtr_stateZDTR_CONTROL_ENABLEZDTR_CONTROL_DISABLEZfOutxDsrFlowZ_xonxoffZfOutXZfInXZfNullZ
fErrorCharZ
fAbortOnErrorZXONZXonCharZXOFFZXoffCharZSetCommStater0)rZtimeoutsZcomDCBr#r#r$r6bs�								zSerial._reconfigure_portcCs�|jr�tj|j|j�tj|j�|jdk	rZtj|jj�d|_|jdk	r�tj|jj�d|_d|_dS)zinternal close port helperN)rrrDr4ZCloseHandlerr1r)rr#r#r$r<�s			z
Serial._closecCs |jr|j�d|_dS)z
Close portFN)r(r<)rr#r#r$�close�s	
zSerial.closecCsUtj�}tj�}tj|jtj|�tj|��sNtd��|jS)z9Return the number of bytes currently in the input buffer.zcall to ClearCommError failed)	r�DWORD�COMSTAT�ClearCommErrorrr/r5r�cbInQue)r�flags�comstatr#r#r$�
in_waiting�s
*zSerial.in_waitingr'c	Csh|jst�|dkrUtj|jj�tj�}tj�}tj|jt	j
|�t	j
|��s|td��|jdkr�t
|j|�}|dkryt	j|�}tj�}tj|j||t	j
|�t	j
|j��}|r2tj�tjtjfkr2tdt	j���tj|jt	j
|j�t	j
|�d�|jd|j�}qRt�}q^t	j|�}tj�}tj|j||t	j
|�t	j
|j��}|rtj�tjtjfkrtdt	j���tj|jt	j
|j�t	j
|�d�|jd|j�}n	t�}t|�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.rzcall to ClearCommError failedzReadFile failed (%r)TN)rrrZ
ResetEventrr1rIrJrKr/r5rZtimeout�minrLZcreate_string_bufferZReadFile�GetLastErrorZ
ERROR_SUCCESS�ERROR_IO_PENDINGr0�GetOverlappedResult�raw�value�bytes)	r�sizerMrN�nZbuf�rcZread_ok�readr#r#r$rZs8	*3%.3%.	zSerial.readcCs�|jst�t|�}|r�tj�}tj|j|t|�tj|�|j	�}|r�tj
�tjkr�tdtj
���|jdkr�tj|j|j	tj|�d�}|jt|�kr�t�|jSdSdS)z2Output the given byte string over the serial port.zWriteFile failed (%r)rTN)rrrrrIZ	WriteFile�lenr/r5rrQrRrr0rCrSrUr)r�datarX�errr#r#r$�write&s	0'zSerial.writecCs!x|jrtjd�qWdS)zb        Flush of file like objects. In this case, wait until all data
        is written.
        g�������?N)�out_waiting�timeZsleep)rr#r#r$�flush>szSerial.flushcCs0|jst�tj|jtjtjB�dS)z9Clear input buffer, discarding all that is in the buffer.N)rrrr7r:r;)rr#r#r$�reset_input_bufferIs	zSerial.reset_input_buffercCs0|jst�tj|jtjtjB�dS)zs        Clear output buffer, aborting the current output and discarding all
        that is in the buffer.
        N)rrrr7r8r9)rr#r#r$�reset_output_bufferOs	zSerial.reset_output_buffercCs?|jst�|jr+tj|j�ntj|j�dS)zBSet break: Controls TXD. When active, to transmitting is possible.N)rrZ_break_staterZSetCommBreakZClearCommBreak)rr#r#r$�_update_break_stateXs
		zSerial._update_break_statecCs<|jr"tj|jtj�ntj|jtj�dS)z)Set terminal status line: Request To SendN)rFr�EscapeCommFunctionrZSETRTSZCLRRTS)rr#r#r$�_update_rts_stateas	zSerial._update_rts_statecCs<|jr"tj|jtj�ntj|jtj�dS)z-Set terminal status line: Data Terminal ReadyN)rGrrerZSETDTRZCLRDTR)rr#r#r$�_update_dtr_statehs	zSerial._update_dtr_statecCs>|jst�tj�}tj|jtj|��|jS)N)rrrrIZGetCommModemStatusr/r5rU)r�statr#r#r$�_GetCommModemStatusos
	zSerial._GetCommModemStatuscCstj|j�@dkS)z(Read terminal status line: Clear To Sendr)rZ	MS_CTS_ONri)rr#r#r$�ctsvsz
Serial.ctscCstj|j�@dkS)z)Read terminal status line: Data Set Readyr)rZ	MS_DSR_ONri)rr#r#r$�dsr{sz
Serial.dsrcCstj|j�@dkS)z)Read terminal status line: Ring Indicatorr)rZ
MS_RING_ONri)rr#r#r$�ri�sz	Serial.ricCstj|j�@dkS)z)Read terminal status line: Carrier Detectr)rZ
MS_RLSD_ONri)rr#r#r$�cd�sz	Serial.cdiNcCs,|dkr|}tj|j||�dS)z�        Recommend a buffer size to the driver (device driver can ignore this
        value). Must be called before the port is opended.
        N)rr2r)rZrx_sizeZtx_sizer#r#r$�set_buffer_size�szSerial.set_buffer_sizeTcCsH|jst�|r.tj|jtj�ntj|jtj�dS)a*        Manually control flow - when software flow control is enabled.
        This will do the same as if XON (true) or XOFF (false) are received
        from the other device and control the transmission accordingly.
        WARNING: this function is not portable to different platforms!
        N)rrrreZSETXONZSETXOFF)r�enabler#r#r$�set_output_flow_control�s
	zSerial.set_output_flow_controlcCsUtj�}tj�}tj|jtj|�tj|��sNtd��|jS)z0Return how many bytes the in the outgoing bufferzcall to ClearCommError failed)	rrIrJrKrr/r5rZcbOutQue)rrMrNr#r#r$r_�s
*zSerial.out_waiting)r	r
rrr
rrrrrrrrrrrr)�__name__�
__module__�__qualname__�__doc__Z	BAUDRATESrr>r6r<rH�propertyrOrZr^rarbrcrdrfrgrirjrkrlrmrnrpr_r#r#)r"r$rs2A	%			r�__main__z%s
iKrA)r/r`rErZserial.serialutilrrrrrrrq�sys�s�stdoutr^ZbaudrateZdatabitsrHr=r>r#r#r#r$�<module>s$(��			
	


Zerion Mini Shell 1.0