Файловый менеджер - Редактировать - /opt/imh-python/lib/python3.9/site-packages/serial/urlhandler/__pycache__/protocol_loop.cpython-39.pyc
Ðазад
a ]�h) � @ s, d dl mZ d dlZd dlZd dlZzd dlZW n eyN d dlmZ Y n0 zd dl Z W n eyv d dl Z Y n0 d dlmZm Z mZmZmZmZ ejejejejd�ZG dd� de�Zedk�r(d dlZed�Zej�d �e�� ej�d � e�d� e�� ej�d�e�d ��� e� � dS )� )�absolute_importN)� SerialBase�SerialException�to_bytes� iterbytes�SerialTimeoutException�PortNotOpenError)�debug�info�warning�errorc s� e Zd ZdZdZ� fdd�Zdd� Z� fdd�Zd d � Zdd� Z e d d� �Zd,dd�Zdd� Z dd� Zdd� Zdd� Zdd� Ze dd� �Zdd� Zd d!� Zd"d#� Ze d$d%� �Ze d&d'� �Ze d(d)� �Ze d*d+� �Z� ZS )-�SerialzSSerial port implementation that simulates a loop back connection in plain software.)�2 �K �n � � �� i, iX i� i i` i� i�% i K i � i � i � c s2 d| _ d | _d | _d| _tt| �j|i |�� d S )Ni F)�buffer_size�queue�logger� _cancel_write�superr �__init__)�self�args�kwargs�� __class__� ��/root/rpmbuild/BUILDROOT/imh-python39-modules-3.9.7-92.el8.x86_64/opt/imh-python/lib/python3.9/site-packages/serial/urlhandler/protocol_loop.pyr / s zSerial.__init__c C s~ | j rtd��d| _t�| j�| _| jdu r4td��| �| j� | � � d| _ | j s\| �� | jsj| � � | �� | �� dS )zx Open port with current settings. This may throw a SerialException if the port cannot be opened. zPort is already open.Nz.Port must be configured before it can be used.T)�is_openr r r �Queuer Z_port�from_url�port�_reconfigure_portZ_dsrdtr�_update_dtr_stateZ_rtscts�_update_rts_state�reset_input_buffer�reset_output_buffer�r r r r �open6 s zSerial.openc sD | j r2d| _ z| j�d � W n tjy0 Y n0 tt| ��� d S )NF)r! r � put_nowait�Fullr r �closer* r r r r. Q s zSerial.closec C sL t | jtj�r&d| j k r$dk s6n td�| j���| jrH| j�d� dS )zx Set communication parameters on opened port. For the loop:// protocol all settings are ignored! r l zinvalid baudrate: {!r}z_reconfigure_port()N)� isinstance� _baudrate�numbers�Integral� ValueError�formatr r r* r r r r% Z s &zSerial._reconfigure_portc C s� t �|�}|jdkr$td�|j���zlt �|jd��� D ]T\}}|dkr~t� � t� d�| _| j�t |d � | j�d� q8td�|���q8W n2 ty� } ztd �|���W Y d }~n d }~0 0 d S )z(extract host and port from an URL string�loopznexpected a string in the form "loop://[?logging={debug|info|warning|error}]": not starting with loop:// ({!r})T�loggingz pySerial.loopr zenabled loggingzunknown option: {!r}zPexpected a string in the form "loop://[?logging={debug|info|warning|error}]": {}N)�urlparse�urlsplit�schemer r4 �parse_qs�query�itemsr6 �basicConfig� getLoggerr �setLevel� LOGGER_LEVELSr r3 )r �url�parts�option�values�er r r r# e s* ����zSerial.from_urlc C s4 | j st� �| jr*| j�d�| j�� �� | j�� S )z9Return the number of bytes currently in the input buffer.zin_waiting -> {:d}�r! r r r r4 r �qsizer* r r r � in_waiting~ s zSerial.in_waiting� c C s� | j st� �| jdur0| jdkr0t�� | j }nd}t� }|dkr�| j r�z| jj| jd�}W n" tjy~ | jdkrzY q�Y n0 |dur�||7 }|d8 }nq�|r:t�� |kr:| jr�| j� d� q�q: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. Nr ��timeoutrI zread timeout)r! r �_timeout�time� bytearrayr �get�Emptyr r �bytes)r �sizerK �data�br r r �read� s* zSerial.readc C s | j �d � d S )N)r r, r* r r r �cancel_read� s zSerial.cancel_readc C s d| _ d S )NT)r r* r r r �cancel_write� s zSerial.cancel_writec C s� d| _ | jst� �t|�}dt|� | j }| jdur�|| jkr�| j}|dkrn| j snt�t |d�� |d8 }qF| j rxdS t d��t|�D ]}| jj || jd� q�t|�S )z� Output the given byte string over the serial port. Can block if the connection is blocked. May raise SerialException if the connection is closed. Fg $@Nr g �?z Write timeoutrJ )r r! r r �lenr0 Z_write_timeoutrM �sleep�minr r r �put)r rS Ztime_used_to_sendZ time_left�byter r r �write� s zSerial.writec C sR | j st� �| jr| j�d� z| j�� r6| j�� q W n tjyL Y n0 dS )z9Clear input buffer, discarding all that is in the buffer.zreset_input_buffer()N�r! r r r r rG � get_nowaitrP r* r r r r( � s zSerial.reset_input_bufferc C sR | j st� �| jr| j�d� z| j�� r6| j�� q W n tjyL Y n0 dS )zs Clear output buffer, aborting the current output and discarding all that is in the buffer. zreset_output_buffer()Nr^ r* r r r r) � s zSerial.reset_output_bufferc C s4 | j st� �| jr*| j�d�| j�� �� | j�� S )z0Return how many bytes the in the outgoing bufferzout_waiting -> {:d}rF r* r r r �out_waiting� s zSerial.out_waitingc C s | j r| j �d�| j�� dS )z[ Set break: Controls TXD. When active, to transmitting is possible. z_update_break_state({!r})N)r r r4 Z_break_stater* r r r �_update_break_state� s zSerial._update_break_statec C s | j r| j �d�| j�� dS )z)Set terminal status line: Request To Sendz'_update_rts_state({!r}) -> state of CTSN)r r r4 � _rts_stater* r r r r'