
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
MÊ]W�#  ã               @   s@   d dl Z d dlZ d dlT e je j Zdd„ ZG dd„ deƒZdS )é    N)Ú*c             C   s   t dd„ | D ƒƒS )Nc             S   s   g | ]}t |ƒ‘qS © )Úord)Ú.0Úxr   r   ú/usr/lib/python3.6/serialcli.pyú
<listcomp>   s    z!as_byte_array.<locals>.<listcomp>)Úsab)Ústringr   r   r   Úas_byte_array   s    r   c               @   s¢   e Zd ZdZd3Zdd„ Zdd„ Zdd„ Zedd„ ƒZ	d4dd„Z
dd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zed*d+„ ƒZed,d-„ ƒZed.d/„ ƒZed0d1„ ƒZd2S )5ÚSerialz)Serial port implementation for .NET/Mono.é2   éK   én   é†   é–   éÈ   é,  éX  é°  é  é`	  éÀ  é€%  é K  é –  é á  é Â c             C   sÒ   | j dkrtdƒ‚| jr tdƒ‚ytjjj| jƒ| _W n: t	k
rp } zd| _td| j|f ƒ‚W Y dd}~X nX | j
dkr‚d| _
| jdkr’d| _| jƒ  | jjƒ  d| _| js¸| jƒ  | jsÆ| jƒ  | jƒ  dS )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.zPort is already open.zcould not open port %s: %sT)Z_portÚSerialExceptionÚis_openÚSystemÚIOÚPortsÚ
SerialPortZportstrÚ_port_handleÚ	ExceptionÚ
_rts_stateÚ
_dtr_stateÚ_reconfigure_portZOpenZ_dsrdtrÚ_update_dtr_stateÚ_rtsctsÚ_update_rts_stateÚreset_input_buffer)ÚselfÚmsgr   r   r   Úopen   s*    
$


zSerial.openc             C   s„  | j stdƒ‚| jdkr*tjjjj| j _nt	| jd ƒ| j _| j
dkrXtjjjj| j _nt	| j
d ƒ| j _y| j| j _W n. tk
r¦ } ztt|ƒƒ‚W Y dd}~X nX | jtkr¼d| j _nJ| jtkrÐd| j _n6| jtkräd| j _n"| jtkrød| j _ntd| j ƒ‚| jtk�r(ttjjjd	ƒ| j _n†| jtk�rFtjjjj| j _nh| jtk�rdtjjjj| j _nJ| jtk�r‚tjjjj | j _n,| jt!k�r tjjjj"| j _ntd
| j ƒ‚| j#t$k�rÌtjjj%j&| j _%nJ| j#t'k�rêtjjj%j(| j _%n,| j#t)k�rtjjj%j*| j _%ntd| j# ƒ‚| j+�r8| j,�r8tjjj-j.| j _-nH| j+�rRtjjj-j/| j _-n.| j,�rltjjj-j0| j _-nttjjj-d	ƒ| j _-dS )z,Set communication parameters on opened port.z'Can only operate on a valid port handleNiè  é   é   é   é   z#Unsupported number of data bits: %rÚNonezUnsupported parity mode: %rz#Unsupported number of stop bits: %r)1r$   r   Z_timeoutr    r!   r"   r#   ZInfiniteTimeoutZReadTimeoutÚintZ_write_timeoutZWriteTimeoutZ	_baudrateZBaudRateÚIOErrorÚ
ValueErrorÚstrZ	_bytesizeZFIVEBITSZDataBitsZSIXBITSZ	SEVENBITSZ	EIGHTBITSZ_parityZPARITY_NONEÚgetattrZParityZPARITY_EVENZEvenZ
PARITY_ODDZOddZPARITY_MARKZMarkZPARITY_SPACEZSpaceZ	_stopbitsZSTOPBITS_ONEZStopBitsZOneZSTOPBITS_ONE_POINT_FIVEZOnePointFiveZSTOPBITS_TWOZTwor*   Z_xonxoffZ	HandshakeZRequestToSendXOnXOffZRequestToSendZXOnXOff)r-   Úer   r   r   r(   ;   s\    









zSerial._reconfigure_portc             C   sF   | j rB| jr<y| jjƒ  W n tjjjk
r4   Y nX d| _d| _ dS )z
Close portNF)r   r$   ZCloser    r!   r"   ZInvalidOperationException)r-   r   r   r   Úcloseƒ   s    zSerial.closec             C   s   | j s
t‚| jjS )z>Return the number of characters currently in the input buffer.)r   ÚportNotOpenErrorr$   ZBytesToRead)r-   r   r   r   Ú
in_waiting‘   s    zSerial.in_waitingé   c             C   sX   | j s
t‚tƒ }x>|rNy|j| jjƒ ƒ W n tjk
rB   P Y qX |d8 }qW 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.
        r>   )	r   r<   Ú	bytearrayÚappendr$   ZReadByter    ÚTimeoutExceptionÚbytes)r-   ÚsizeÚdatar   r   r   Úread˜   s    zSerial.readc             C   sJ   | j s
t‚y| jjt|ƒdt|ƒƒ W n tjk
r@   t‚Y nX t|ƒS )z-Output the given string over the serial port.r   )	r   r<   r$   ZWriter   Úlenr    rA   ZwriteTimeoutError)r-   rD   r   r   r   Úwrite¬   s    
zSerial.writec             C   s   | j s
t‚| jjƒ  dS )z9Clear input buffer, discarding all that is in the buffer.N)r   r<   r$   ZDiscardInBuffer)r-   r   r   r   r,   º   s    zSerial.reset_input_bufferc             C   s   | j s
t‚| jjƒ  dS )zs        Clear output buffer, aborting the current output and
        discarding all that is in the buffer.
        N)r   r<   r$   ZDiscardOutBuffer)r-   r   r   r   Úreset_output_bufferÀ   s    zSerial.reset_output_bufferc             C   s   | j s
t‚t| jƒ| j_dS )zT
        Set break: Controls TXD. When active, to transmitting is possible.
        N)r   r<   ÚboolZ_break_stater$   Z
BreakState)r-   r   r   r   Ú_update_break_stateÉ   s    zSerial._update_break_statec             C   s   | j s
t‚t| jƒ| j_dS )z)Set terminal status line: Request To SendN)r   r<   rI   r&   r$   Z	RtsEnable)r-   r   r   r   r+   Ñ   s    zSerial._update_rts_statec             C   s   | j s
t‚t| jƒ| j_dS )z-Set terminal status line: Data Terminal ReadyN)r   r<   rI   r'   r$   Z	DtrEnable)r-   r   r   r   r)   ×   s    zSerial._update_dtr_statec             C   s   | j s
t‚| jjS )z(Read terminal status line: Clear To Send)r   r<   r$   Z
CtsHolding)r-   r   r   r   ÚctsÝ   s    z
Serial.ctsc             C   s   | j s
t‚| jjS )z)Read terminal status line: Data Set Ready)r   r<   r$   Z
DsrHolding)r-   r   r   r   Údsrä   s    z
Serial.dsrc             C   s   | j s
t‚dS )z)Read terminal status line: Ring IndicatorF)r   r<   )r-   r   r   r   Úrië   s    z	Serial.ric             C   s   | j s
t‚| jjS )z)Read terminal status line: Carrier Detect)r   r<   r$   Z	CDHolding)r-   r   r   r   Úcdó   s    z	Serial.cdN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r>   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Z	BAUDRATESr/   r(   r;   Úpropertyr=   rE   rG   r,   rH   rJ   r+   r)   rK   rL   rM   rN   r   r   r   r   r      s$    H
	r   )	r    ZSystem.IO.PortsZserial.serialutilZArrayZByter	   r   Z
SerialBaser   r   r   r   r   Ú<module>
   s
   