관리-도구
편집 파일: serialwin32.cpython-39.opt-1.pyc
a �ֽXwN � @ sT d dl Z d dlZd dlmZ d dlZd dlmZmZmZmZm Z G dd� de�Z dS )� N)�win32)� SerialBase�SerialException�to_bytes�portNotOpenError�writeTimeoutErrorc s e Zd ZdZdZ� fdd�Zdd� Zdd� Zd d � Zdd� Z e d d� �Zd;dd�Zdd� Z dd� Zdd� Zdd� Zdd� Zdd� Zdd� Zd d!� Ze d"d#� �Ze d$d%� �Ze d&d'� �Ze d(d)� �Zd<d,d-�Zd=d/d0�Ze d1d2� �Zd3d4� Zd5d6� Zd7d8� Zej j!d9d:� �Z � Z"S )>�Serialz5Serial port implementation for Win32 based on ctypes.)�2 �K �n � � �� i, iX i� i i` i� i�% i K i � i � i � c s, d | _ d | _d | _tt| �j|i |�� d S �N)�_port_handle�_overlapped_read�_overlapped_write�superr �__init__)�self�args�kwargs�� __class__� �6/usr/lib/python3.9/site-packages/serial/serialwin32.pyr s zSerial.__init__c C s� | j du rtd��| jr td��| j}z.|�� �d�rRt|dd� �dkrRd| }W n tyf Y n0 t� |tj tjB ddtjtj tjB d�| _| jtjkr�d| _td �| jt�� ���z�t�� | _t�dd dd�| j_t�� | _t�dddd�| j_t�| jdd� t�� | _t�| jt�| j�� | �� t� | jtj!tj"B tj#B tj$B � W n. z| �%� W n Y n0 d| _� Y n0 d| _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\\.\r zcould not open port {!r}: {!r}� � T)&Z_portr �is_open�name�upper� startswith�int� ValueErrorr Z CreateFileZGENERIC_READZ GENERIC_WRITEZ OPEN_EXISTING�FILE_ATTRIBUTE_NORMALZFILE_FLAG_OVERLAPPEDr ZINVALID_HANDLE_VALUE�formatZportstr�ctypes�WinErrorZ OVERLAPPEDr ZCreateEvent�hEventr � SetupComm�COMMTIMEOUTS�_orgTimeoutsZGetCommTimeouts�byref�_reconfigure_port� PurgeComm� PURGE_TXCLEAR� PURGE_TXABORT� PURGE_RXCLEAR� PURGE_RXABORT�_close)r �portr r r �open! s^ " � ���zSerial.openc C s� | j std��t�� }| jdu r"n*| jdkr6tj|_ntt| jd �d�|_ | jdkrv| j durvtt| j d �d�|_| jdu r�n*| jdkr�tj|_ntt| jd �d�|_t� | j t�|�� t�| j tj� t�� }t�| j t�|�� | j|_| jtjk�r d|_nR| jtjk�r d|_n<| jtjk�r6d|_n&| jtjk�rLd |_ntd �| j���| jtj k�rztj!|_"d|_#n�| jtj$k�r�tj%|_"d|_#nj| jtj&k�r�tj'|_"d|_#nL| jtj(k�r�tj)|_"d|_#n.| jtj*k�r�tj+|_"d|_#ntd�| j���| j,tj-k�rtj.|_/n@| j,tj0k�r2tj1|_/n(| j,tj2k�rJtj3|_/ntd�| j,���d|_4| j5du �r�| j6�r~tj7|_8n| j9�r�tj:ntj;|_8| j6|_<n�| j5j=�s�td �| j5j=���| j5j>�r�td�| j5j>���| j5j?du�r�td�| j5j?���| j5j@du�rtd�| j5j@���| j5jA�r2td�| j5jA���tjB|_8d|_<| jC�rRtjD|_En| jF�r`tjGntjH|_E| jC|_I| jJ|_K| jJ|_Ld|_Md|_Nd|_OtjP|_QtjR|_St�T| j t�|���s�td�t�U� ���dS )z,Set communication parameters on opened port.z'Can only operate on a valid port handleNr i� r � � � r z%Unsupported number of data bits: {!r}zUnsupported parity mode: {!r}z%Unsupported number of stop bits: {!r}z:Unsupported value for RS485Settings.rts_level_for_tx: {!r}z:Unsupported value for RS485Settings.rts_level_for_rx: {!r}z9Unsupported value for RS485Settings.delay_before_tx: {!r}z9Unsupported value for RS485Settings.delay_before_rx: {!r}z2Unsupported value for RS485Settings.loopback: {!r}zCCannot configure port, something went wrong. Original message: {!r})Vr r r r, �_timeoutZMAXDWORDZReadIntervalTimeout�maxr$ ZReadTotalTimeoutConstantZ_inter_byte_timeout�_write_timeoutZWriteTotalTimeoutConstant�SetCommTimeoutsr( r. ZSetCommMaskZEV_ERRZDCBZGetCommStateZ _baudrateZBaudRateZ _bytesize�serialZFIVEBITSZByteSizeZSIXBITSZ SEVENBITSZ EIGHTBITSr% r'