Ë
    +Úa_<O  ã                   óf   — d dl mZ d dlZd dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
mZ  G d„ de«      Zy)é    )Úabsolute_importN)Úwin32)Ú
SerialBaseÚSerialExceptionÚto_bytesÚPortNotOpenErrorÚSerialTimeoutExceptionc                   ó0  ‡ — e Zd ZdZdZˆ fd„Zd„ Zd„ Zd„ Zd„ Z	e
d„ «       Zdd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze
d„ «       Ze
d„ «       Ze
d„ «       Ze
d„ «       Zdd„Zdd„Ze
d„ «       Zd„ Zd„ Zd„ Zej@                  jB                  d„ «       Z ˆ x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                 óV   •— d | _         d | _        d | _        t        t        | �  |i |¤Ž y ©N)Ú_port_handleÚ_overlapped_readÚ_overlapped_writeÚsuperr   Ú__init__)ÚselfÚargsÚkwargsÚ	__class__s      €ú4/usr/lib/python3/dist-packages/serial/serialwin32.pyr   zSerial.__init__   s/   ø€ Ø ˆÔØ $ˆÔØ!%ˆÔÜŒf�dÑ$ dÐ5¨fÓ5ó    c           	      óÊ  — | j                   €t        d«      ‚| j                  rt        d«      ‚| j                  }	 |j	                  «       j                  d«      rt        |dd «      dkD  rd|z   }t        j                  |t        j                  t        j                  z  ddt        j                  t        j                  t        j                  z  d«      | _        | j                  t        j                   k(  r>d| _        t        d	j#                  | j$                  t'        j(                  «       «      «      ‚	 t        j*                  «       | _        t        j.                  dd
dd«      | j,                  _        t        j*                  «       | _        t        j.                  dddd«      | j2                  _        t        j4                  | j                  dd«       t        j6                  «       | _        t        j:                  | j                  t'        j<                  | j8                  «      «       | j?                  «        t        j@                  | j                  t        jB                  t        jD                  z  t        jF                  z  t        jH                  z  «       d| _        y# t        $ r Y �ŒDw xY w#  	 | jK                  «        d| _        ‚ #  Y d| _        ‚ xY wxY w)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.ÚCOMé   é   z\\.\r   zcould not open port {!r}: {!r}é   é   T)&Ú_portr   Úis_openÚnameÚupperÚ
startswithÚintÚ
ValueErrorr   Ú
CreateFileÚGENERIC_READÚGENERIC_WRITEÚOPEN_EXISTINGÚFILE_ATTRIBUTE_NORMALÚFILE_FLAG_OVERLAPPEDr   ÚINVALID_HANDLE_VALUEÚformatÚportstrÚctypesÚWinErrorÚ
OVERLAPPEDr   ÚCreateEventÚhEventr   Ú	SetupCommÚCOMMTIMEOUTSÚ_orgTimeoutsÚGetCommTimeoutsÚbyrefÚ_reconfigure_portÚ	PurgeCommÚPURGE_TXCLEARÚPURGE_TXABORTÚPURGE_RXCLEARÚPURGE_RXABORTÚ_close)r   Úports     r   ÚopenzSerial.open#   sa  € ð
 �:‰:ÐÜ!Ð"RÓSÐSØ�<Š<Ü!Ð"9Ó:Ð:ð �y‰yˆð	Ø�z‰z‹|×&Ñ& uÔ-´#°d¸1¸2°h³-À!Ò2CØ  4Ñ'�ô "×,Ñ,ØÜ×Ñ¤×!4Ñ!4Ñ4ØØÜ×ÑÜ×'Ñ'¬%×*DÑ*DÑDØóˆÔð ×Ñ¤× :Ñ :Ò:Ø $ˆDÔÜ!Ð"B×"IÑ"IÈ$Ï,É,ÔX^×XgÑXgÓXiÓ"jÓkÐkð 	 Ü$)×$4Ñ$4Ó$6ˆDÔ!Ü+0×+<Ñ+<¸TÀ1ÀaÈÓ+NˆD×!Ñ!Ô(Ü%*×%5Ñ%5Ó%7ˆDÔ"ä,1×,=Ñ,=¸dÀAÀqÈ$Ó,OˆD×"Ñ"Ô)ô �O‰O˜D×-Ñ-¨t°TÔ:ô !&× 2Ñ 2Ó 4ˆDÔÜ×!Ñ! $×"3Ñ"3´V·\±\À$×BSÑBSÓ5TÔUà×"Ñ"Ô$ô �O‰OØ×!Ñ!Ü×#Ñ#¤e×&9Ñ&9Ñ9Ü×#Ñ#ñ$Ü&+×&9Ñ&9ñ:ô;ð  ˆD�Løô_ ò 	âð	ûðJ	ðØ—‘”ð
 !%ˆDÔØøðð Ø $ˆDÔØýs6   ¼5J) Ä9E(J9 Ê)	J6Ê5J6Ê9K"Ê<KËK"ËKËK"c                 óF  — | j                   st        d«      ‚t        j                  «       }| j                  €nL| j                  dk(  rt        j
                  |_        n't        t        | j                  dz  «      d«      |_	        | j                  dk7  r3| j                  �'t        t        | j                  dz  «      d«      |_        | j                  €nL| j                  dk(  rt        j
                  |_        n't        t        | j                  dz  «      d«      |_        t        j                  | j                   t        j                  |«      «       t        j                   | j                   t        j"                  «       t        j$                  «       }t        j&                  | j                   t        j                  |«      «       | j(                  |_        | j,                  t.        j0                  k(  rd|_        n“| j,                  t.        j4                  k(  rd|_        nn| j,                  t.        j6                  k(  rd|_        nI| j,                  t.        j8                  k(  rd	|_        n$t;        d
j=                  | j,                  «      «      ‚| j>                  t.        j@                  k(  rt        jB                  |_"        d|_#        �n| j>                  t.        jH                  k(  rt        jJ                  |_"        d|_#        nÒ| j>                  t.        jL                  k(  rt        jN                  |_"        d|_#        n˜| j>                  t.        jP                  k(  rt        jR                  |_"        d|_#        n^| j>                  t.        jT                  k(  rt        jV                  |_"        d|_#        n$t;        dj=                  | j>                  «      «      ‚| jX                  t.        jZ                  k(  rt        j\                  |_/        nŠ| jX                  t.        j`                  k(  rt        jb                  |_/        nW| jX                  t.        jd                  k(  rt        jf                  |_/        n$t;        dj=                  | jX                  «      «      ‚d|_4        | jj                  €f| jl                  rt        jn                  |_8        n1| jr                  rt        jt                  nt        jv                  |_8        | jl                  |_<        �np| jj                  jz                  s.t;        dj=                  | jj                  jz                  «      «      ‚| jj                  j|                  r.t;        dj=                  | jj                  j|                  «      «      ‚| jj                  j~                  �.t;        dj=                  | jj                  j~                  «      «      ‚| jj                  j€                  �.t;        dj=                  | jj                  j€                  «      «      ‚| jj                  j‚                  r.t;        dj=                  | jj                  j‚                  «      «      ‚t        j„                  |_8        d|_<        | j†                  rt        jˆ                  |_E        n1| jŒ                  rt        jŽ                  nt        j�                  |_E        | j†                  |_I        | j”                  |_K        | j”                  |_L        d|_M        d|_N        d|_O        t.        j                   |_Q        t.        j¤                  |_S        t        j¨                  | j                   t        j                  |«      «      s,t        dj=                  t        jª                  «       «      «      ‚y)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}zUnsupported parity mode: {!r}z%Unsupported number of stop bits: {!r}zQUnsupported value for RS485Settings.rts_level_for_tx: {!r} (only True is allowed)zRUnsupported value for RS485Settings.rts_level_for_rx: {!r} (only False is allowed)zPUnsupported value for RS485Settings.delay_before_tx: {!r} (only None is allowed)zPUnsupported value for RS485Settings.delay_before_rx: {!r} (only None is allowed)zJUnsupported value for RS485Settings.loopback: {!r} (only False is allowed)zCCannot configure port, something went wrong. Original message: {!r})Vr   r   r   r;   Ú_timeoutÚMAXDWORDÚReadIntervalTimeoutÚmaxr*   ÚReadTotalTimeoutConstantÚ_inter_byte_timeoutÚ_write_timeoutÚWriteTotalTimeoutConstantÚSetCommTimeoutsr5   r>   ÚSetCommMaskÚEV_ERRÚDCBÚGetCommStateÚ	_baudrateÚBaudRateÚ	_bytesizeÚserialÚFIVEBITSÚByteSizeÚSIXBITSÚ	SEVENBITSÚ	EIGHTBITSr+   r3   Ú_parityÚPARITY_NONEÚNOPARITYÚParityÚfParityÚPARITY_EVENÚ
EVENPARITYÚ
PARITY_ODDÚ	ODDPARITYÚPARITY_MARKÚ
MARKPARITYÚPARITY_SPACEÚSPACEPARITYÚ	_stopbitsÚSTOPBITS_ONEÚ
ONESTOPBITÚStopBitsÚSTOPBITS_ONE_POINT_FIVEÚONE5STOPBITSÚSTOPBITS_TWOÚTWOSTOPBITSÚfBinaryÚ_rs485_modeÚ_rtsctsÚRTS_CONTROL_HANDSHAKEÚfRtsControlÚ
_rts_stateÚRTS_CONTROL_ENABLEÚRTS_CONTROL_DISABLEÚfOutxCtsFlowÚrts_level_for_txÚrts_level_for_rxÚdelay_before_txÚdelay_before_rxÚloopbackÚRTS_CONTROL_TOGGLEÚ_dsrdtrÚDTR_CONTROL_HANDSHAKEÚfDtrControlÚ
_dtr_stateÚDTR_CONTROL_ENABLEÚDTR_CONTROL_DISABLEÚfOutxDsrFlowÚ_xonxoffÚfOutXÚfInXÚfNullÚ
fErrorCharÚfAbortOnErrorÚXONÚXonCharÚXOFFÚXoffCharÚSetCommStater6   )r   ÚtimeoutsÚcomDCBs      r   r?   zSerial._reconfigure_portd   s‚  € à× Ò Ü!Ð"KÓLÐLô ×%Ñ%Ó'ˆØ�=‰=Ð ØØ�]‰]˜aÒÜ+0¯>©>ˆHÕ(ä03´C¸¿¹ÈÑ8LÓ4MÈqÓ0QˆHÔ-Ø�=‰=˜AÒ $×":Ñ":Ð"FÜ+.¬s°4×3KÑ3KÈdÑ3RÓ/SÐUVÓ+WˆHÔ(à×ÑÐ&ØØ× Ñ  AÒ%Ü16·±ˆHÕ.ä14´S¸×9LÑ9LÈtÑ9SÓ5TÐVWÓ1XˆHÔ.Ü×Ñ˜d×/Ñ/´·±¸hÓ1GÔHä×Ñ˜$×+Ñ+¬U¯\©\Ô:ô —‘“ˆÜ×Ñ˜4×,Ñ,¬f¯l©l¸6Ó.BÔCØŸ.™.ˆŒà�>‰>œVŸ_™_Ò,ØˆF�OØ�^‰^œvŸ~™~Ò-ØˆF�OØ�^‰^œv×/Ñ/Ò/ØˆF�OØ�^‰^œv×/Ñ/Ò/ØˆF�OäÐD×KÑKÈDÏNÉNÓ[Ó\Ð\à�<‰<œ6×-Ñ-Ò-Ü!ŸN™NˆFŒMØˆFŽNØ�\‰\œV×/Ñ/Ò/Ü!×,Ñ,ˆFŒMØˆF�NØ�\‰\œV×.Ñ.Ò.Ü!ŸO™OˆFŒMØˆF�NØ�\‰\œV×/Ñ/Ò/Ü!×,Ñ,ˆFŒMØˆF�NØ�\‰\œV×0Ñ0Ò0Ü!×-Ñ-ˆFŒMØˆF�NäÐ<×CÑCÀDÇLÁLÓQÓRÐRà�>‰>œV×0Ñ0Ò0Ü#×.Ñ.ˆF�OØ�^‰^œv×=Ñ=Ò=Ü#×0Ñ0ˆF�OØ�^‰^œv×2Ñ2Ò2Ü#×/Ñ/ˆF�OäÐD×KÑKÈDÏNÉNÓ[Ó\Ð\àˆŒà×ÑÐ#Ø�|Š|Ü%*×%@Ñ%@�Õ"àAEÇÂ¤U×%=Ò%=ÔV[×VoÑVo�Ô"Ø"&§,¡,ˆFÖð ×#Ñ#×4Ò4Ü Øg×nÑnØ×(Ñ(×9Ñ9ó<ó=ð =ð ×Ñ×0Ò0Ü Øh×oÑoØ×(Ñ(×9Ñ9ó<ó=ð =ð ×Ñ×/Ñ/Ð;Ü Øf×mÑmØ×(Ñ(×8Ñ8ó;ó<ð <ð ×Ñ×/Ñ/Ð;Ü Øf×mÑmØ×(Ñ(×8Ñ8ó;ó<ð <ð ×Ñ×(Ò(Ü Ø`×gÑgØ×(Ñ(×1Ñ1ó4ó5ð 5ô "'×!9Ñ!9ˆFÔØ"#ˆFÔà�<Š<Ü!&×!<Ñ!<ˆFÕà=A¿_º_¤×!9Ò!9ÔRW×RkÑRkˆFÔØ"Ÿl™lˆÔØ—}‘}ˆŒØ—m‘mˆŒØˆŒØˆÔØ ˆÔÜŸ™ˆŒÜ Ÿ+™+ˆŒä×!Ñ! $×"3Ñ"3´V·\±\À&Ó5IÔJÜ!ð)ß)/©´·±Ó0AÓ)BóDð Dð Kr   c                 óî  — | j                   �ét        j                  | j                   | j                  «       | j                  �@| j                  «        t        j                  | j                  j                  «       d| _        | j                  �@| j                  «        t        j                  | j                  j                  «       d| _        t        j                  | j                   «       d| _         yy)zinternal close port helperN)
r   r   rT   r<   r   Úcancel_readÚCloseHandler9   r   Úcancel_write©r   s    r   rE   zSerial._closeå   s¿   € à×ÑÐ(ä×!Ñ! $×"3Ñ"3°T×5FÑ5FÔGØ×$Ñ$Ð0Ø× Ñ Ô"Ü×!Ñ! $×"7Ñ"7×">Ñ">Ô?Ø(,�Ô%Ø×%Ñ%Ð1Ø×!Ñ!Ô#Ü×!Ñ! $×"8Ñ"8×"?Ñ"?Ô@Ø)-�Ô&Ü×Ñ˜d×/Ñ/Ô0Ø $ˆDÕð )r   c                 óL   — | j                   r| j                  «        d| _         yy)z
Close portFN)r&   rE   rž   s    r   ÚclosezSerial.closeõ   s   € à�<Š<Ø�K‰KŒMØ ˆD�Lð r   c                 óP  — t        j                  «       }t        j                  «       }t        j                  | j                  t        j                  |«      t        j                  |«      «      s,t        dj                  t        j                  «       «      «      ‚|j                  S )z9Return the number of bytes currently in the input buffer.úClearCommError failed ({!r}))r   ÚDWORDÚCOMSTATÚClearCommErrorr   r5   r>   r   r3   r6   ÚcbInQue©r   ÚflagsÚcomstats      r   Ú
in_waitingzSerial.in_waitingý   sm   € ô —‘“ˆÜ—-‘-“/ˆÜ×#Ñ# D×$5Ñ$5´v·|±|ÀEÓ7JÌFÏLÉLÐY`ÓLaÔbÜ!Ð"@×"GÑ"GÌÏÉÓHYÓ"ZÓ[Ð[Ø�‰Ðr   c           	      ó¾  — | j                   s
t        «       ‚|dkD  �r­t        j                  | j                  j
                  «       t        j                  «       }t        j                  «       }t        j                  | j                  t        j                  |«      t        j                  |«      «      s,t        dj                  t        j                  «       «      «      ‚| j                  dk(  rt!        |j"                  |«      n|}|dkD  �r§t        j$                  |«      }t        j                  «       }t        j&                  | j                  ||t        j                  |«      t        j                  | j                  «      «      }|s`t        j(                  «       t        j*                  t        j,                  fvr,t        dj                  t        j                  «       «      «      ‚t        j.                  | j                  t        j                  | j                  «      t        j                  |«      d«      }|sQt        j(                  «       t        j0                  k7  r,t        dj                  t        j                  «       «      «      ‚|j2                  d|j4                   }	t7        |	«      S t7        «       }	t7        |	«      S t7        «       }	t7        |	«      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¢   zReadFile failed ({!r})Tz!GetOverlappedResult failed ({!r})N)r&   r   r   Ú
ResetEventr   r9   r£   r¤   r¥   r   r5   r>   r   r3   r6   ÚtimeoutÚminr¦   Úcreate_string_bufferÚReadFileÚGetLastErrorÚERROR_SUCCESSÚERROR_IO_PENDINGÚGetOverlappedResultÚERROR_OPERATION_ABORTEDÚrawÚvalueÚbytes)
r   Úsizer¨   r©   ÚnÚbufÚrcÚread_okÚ	result_okÚreads
             r   r¿   zSerial.read  s  € ð �|Š|Ü"Ó$Ð$Ø�!‹8Ü×Ñ˜T×2Ñ2×9Ñ9Ô:Ü—K‘K“MˆEÜ—m‘m“oˆGÜ×'Ñ'¨×(9Ñ(9¼6¿<¹<ÈÓ;NÔPV×P\ÑP\Ð]dÓPeÔfÜ%Ð&D×&KÑ&KÌFÏOÉOÓL]Ó&^Ó_Ð_Ø.2¯l©l¸aÒ.?”�G—O‘O TÔ*ÀTˆAØ�1‹uÜ×1Ñ1°!Ó4�Ü—[‘[“]�ÜŸ.™.Ø×%Ñ%ØØÜ—L‘L Ó$Ü—L‘L ×!6Ñ!6Ó7ó9�ñ ¤5×#5Ñ#5Ó#7Ä×@SÑ@SÔUZ×UkÑUkÐ?lÑ#lÜ)Ð*B×*IÑ*IÌ&Ï/É/ÓJ[Ó*\Ó]Ð]Ü!×5Ñ5Ø×%Ñ%Ü—L‘L ×!6Ñ!6Ó7Ü—L‘L Ó$Øó	�	ñ
 !Ü×)Ñ)Ó+¬u×/LÑ/LÒLÜ-Ð.Q×.XÑ.XÔY_×YhÑYhÓYjÓ.kÓlÐlØ—w‘w˜y §¡Ð)�ô
 �T‹{Ðô “w�ô �T‹{Ðô “7ˆDÜ�T‹{Ðr   c                 óŠ  — | j                   s
t        «       ‚t        |«      }|�rt        j                  «       }t        j
                  | j                  |t        |«      t        j                  |«      | j                  «      }| j                  dk7  �r|s`t        j                  «       t        j                  t        j                  fvr,t        dj!                  t        j"                  «       «      «      ‚t        j$                  | j                  | j                  t        j                  |«      d«       t        j                  «       t        j&                  k(  r|j(                  S |j(                  t        |«      k7  rt+        d«      ‚|j(                  S |rt        j                  nt        j                  «       }|t        j,                  t        j.                  t        j&                  fv ry|t        j                  t        j                  fv rt        |«      S t        dj!                  t        j"                  «       «      «      ‚y)z2Output the given byte string over the serial port.r   zWriteFile failed ({!r})TzWrite timeout)r&   r   r   r   r£   Ú	WriteFiler   Úlenr5   r>   r   rR   r±   r²   r³   r   r3   r6   r´   rµ   r·   r	   ÚERROR_INVALID_USER_BUFFERÚERROR_NOT_ENOUGH_MEMORY)r   Údatarº   ÚsuccessÚ	errorcodes        r   ÚwritezSerial.write/  s§  € à�|Š|Ü"Ó$Ð$ô ˜‹~ˆÚä—‘“ˆAÜ—o‘o d×&7Ñ&7¸¼sÀ4»yÌ&Ï,É,ÐWXË/Ð[_×[qÑ[qÓrˆGØ×"Ñ" aÓ'Ù¤5×#5Ñ#5Ó#7Ä×@SÑ@SÔUZ×UkÑUkÐ?lÑ#lÜ)Ð*C×*JÑ*JÌ6Ï?É?ÓK\Ó*]Ó^Ð^ô ×)Ñ)¨$×*;Ñ*;¸T×=SÑ=SÔU[×UaÑUaÐbcÓUdÐfjÔkÜ×%Ñ%Ó'¬5×+HÑ+HÒHØŸ7™7�NØ—7‘7œc $›iÒ'Ü0°ÓAÐAØ—w‘w�á3:œE×/Ò/Ä×@RÑ@RÓ@T�	Ø¤×!@Ñ!@Ä%×B_ÑB_Ü!&×!>Ñ!>ð!@ñ @àØ¤5×#6Ñ#6¼×8NÑ8NÐ"OÑOä˜t›9Ð$ä)Ð*C×*JÑ*JÌ6Ï?É?ÓK\Ó*]Ó^Ð^àr   c                 ób   — | j                   r#t        j                  d«       | j                   rŒ"yy)zb        Flush of file like objects. In this case, wait until all data
        is written.
        gš™™™™™©?N)Úout_waitingÚtimeÚsleeprž   s    r   ÚflushzSerial.flushT  s$   € ð
 ×ÒÜ�J‰J�tÔð ×Õr   c                 ó®   — | j                   s
t        «       ‚t        j                  | j                  t        j
                  t        j                  z  «       y)z9Clear input buffer, discarding all that is in the buffer.N)r&   r   r   r@   r   rC   rD   rž   s    r   Úreset_input_bufferzSerial.reset_input_buffer_  s7   € à�|Š|Ü"Ó$Ð$Ü�‰˜×)Ñ)¬5×+>Ñ+>Ä×ATÑATÑ+TÕUr   c                 ó®   — | j                   s
t        «       ‚t        j                  | j                  t        j
                  t        j                  z  «       y)zs        Clear output buffer, aborting the current output and discarding all
        that is in the buffer.
        N)r&   r   r   r@   r   rA   rB   rž   s    r   Úreset_output_bufferzSerial.reset_output_buffere  s9   € ð
 �|Š|Ü"Ó$Ð$Ü�‰˜×)Ñ)¬5×+>Ñ+>Ä×ATÑATÑ+TÕUr   c                 óÆ   — | j                   s
t        «       ‚| j                  r t        j                  | j
                  «       yt        j                  | j
                  «       y)zBSet break: Controls TXD. When active, to transmitting is possible.N)r&   r   Ú_break_stater   ÚSetCommBreakr   ÚClearCommBreakrž   s    r   Ú_update_break_statezSerial._update_break_staten  sC   € à�|Š|Ü"Ó$Ð$Ø×ÒÜ×Ñ˜t×0Ñ0Õ1ä× Ñ  ×!2Ñ!2Õ3r   c                 óÖ   — | j                   r/t        j                  | j                  t        j                  «       yt        j                  | j                  t        j
                  «       y)z)Set terminal status line: Request To SendN)r|   r   ÚEscapeCommFunctionr   ÚSETRTSÚCLRRTSrž   s    r   Ú_update_rts_statezSerial._update_rts_statew  ó=   € à�?Š?Ü×$Ñ$ T×%6Ñ%6¼¿¹ÕEä×$Ñ$ T×%6Ñ%6¼¿¹ÕEr   c                 óÖ   — | j                   r/t        j                  | j                  t        j                  «       yt        j                  | j                  t        j
                  «       y)z-Set terminal status line: Data Terminal ReadyN)r‰   r   rØ   r   ÚSETDTRÚCLRDTRrž   s    r   Ú_update_dtr_statezSerial._update_dtr_state~  rÜ   r   c                 óÔ   — | j                   s
t        «       ‚t        j                  «       }t        j                  | j
                  t        j                  |«      «       |j                  S r   )	r&   r   r   r£   ÚGetCommModemStatusr   r5   r>   r·   )r   Ústats     r   Ú_GetCommModemStatuszSerial._GetCommModemStatus…  sF   € Ø�|Š|Ü"Ó$Ð$Ü�{‰{‹}ˆÜ× Ñ  ×!2Ñ!2´F·L±LÀÓ4FÔGØ�z‰zÐr   c                 óJ   — t         j                  | j                  «       z  dk7  S )z(Read terminal status line: Clear To Sendr   )r   Ú	MS_CTS_ONrä   rž   s    r   Úctsz
Serial.ctsŒ  ó!   € ô �‰ ×!9Ñ!9Ó!;Ñ;¸qÑ@Ð@r   c                 óJ   — t         j                  | j                  «       z  dk7  S )z)Read terminal status line: Data Set Readyr   )r   Ú	MS_DSR_ONrä   rž   s    r   Údsrz
Serial.dsr‘  rè   r   c                 óJ   — t         j                  | j                  «       z  dk7  S )z)Read terminal status line: Ring Indicatorr   )r   Ú
MS_RING_ONrä   rž   s    r   Úriz	Serial.ri–  ó#   € ô ×Ñ $×":Ñ":Ó"<Ñ<ÀÑAÐAr   c                 óJ   — t         j                  | j                  «       z  dk7  S )z)Read terminal status line: Carrier Detectr   )r   Ú
MS_RLSD_ONrä   rž   s    r   Úcdz	Serial.cd›  rï   r   c                 óN   — |€|}t        j                  | j                  ||«       y)zŽ        Recommend a buffer size to the driver (device driver can ignore this
        value). Must be called after the port is opened.
        N)r   r:   r   )r   Úrx_sizeÚtx_sizes      r   Úset_buffer_sizezSerial.set_buffer_size¢  s$   € ð
 ˆ?ØˆGÜ�‰˜×)Ñ)¨7°GÕ<r   c                 óî   — | j                   s
t        «       ‚|r/t        j                  | j                  t        j
                  «       yt        j                  | j                  t        j                  «       y)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)r&   r   r   rØ   r   ÚSETXONÚSETXOFF)r   Úenables     r   Úset_output_flow_controlzSerial.set_output_flow_control«  sK   € ð �|Š|Ü"Ó$Ð$ÙÜ×$Ñ$ T×%6Ñ%6¼¿¹ÕEä×$Ñ$ T×%6Ñ%6¼¿¹ÕFr   c                 óP  — t        j                  «       }t        j                  «       }t        j                  | j                  t        j                  |«      t        j                  |«      «      s,t        dj                  t        j                  «       «      «      ‚|j                  S )z0Return how many bytes the in the outgoing bufferr¢   )r   r£   r¤   r¥   r   r5   r>   r   r3   r6   ÚcbOutQuer§   s      r   rÊ   zSerial.out_waiting¹  so   € ô —‘“ˆÜ—-‘-“/ˆÜ×#Ñ# D×$5Ñ$5´v·|±|ÀEÓ7JÌFÏLÉLÐY`ÓLaÔbÜ!Ð"@×"GÑ"GÌÏÉÓHYÓ"ZÓ[Ð[Ø×ÑÐr   c                 ól  — t        j                  «       }t        j                  | j                  t	        j
                  |«      t	        j
                  |«      d«      }|sVt        j                  «       t         j                  t         j                  fv r!t        j                  | j                  |«       yyy)úACancel a blocking read operation, may be called from other threadFN)
r   r£   r´   r   r5   r>   r±   r³   ÚERROR_IO_INCOMPLETEÚ
CancelIoEx)r   Ú
overlappedr¼   Úerrs       r   Ú_cancel_overlapped_iozSerial._cancel_overlapped_ioÂ  s‡   € ô �[‰[‹]ˆÜ×'Ñ'Ø×ÑÜ�L‰L˜Ó$Ü�L‰L˜ÓØó	ˆñ
 ”u×)Ñ)Ó+´×0FÑ0FÌ×HaÑHaÐ/bÑbä×Ñ˜T×.Ñ.°
Õ;ð cˆsr   c                 ó:   — | j                  | j                  «       y)rÿ   N)r  r   rž   s    r   r›   zSerial.cancel_readÏ  s   € à×"Ñ" 4×#8Ñ#8Õ9r   c                 ó:   — | j                  | j                  «       y)zBCancel a blocking write operation, may be called from other threadN)r  r   rž   s    r   r�   zSerial.cancel_writeÓ  s   € à×"Ñ" 4×#9Ñ#9Õ:r   c                 ó”   — |�|st        dj                  |«      «      ‚t        j                  j                  j                  | |«       y)z$Change the exclusive access setting.Nz.win32 only supports exclusive access (not: {}))r+   r3   r\   r   Ú	exclusiveÚ__set__)r   r  s     r   r  zSerial.exclusive×  s@   € ð Ð ©ÜÐM×TÑTÐU^Ó_Ó`Ð`ä×Ñ×'Ñ'×/Ñ/°°iÕ@r   )r#   )r$   N)T)#Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	BAUDRATESr   rG   r?   rE   r    Úpropertyrª   r¿   rÈ   rÍ   rÏ   rÑ   rÖ   rÛ   rà   rä   rç   rë   rî   rò   rö   rû   rÊ   r  r›   r�   r   r  ÚsetterÚ__classcell__)r   s   @r   r   r      s  ø„ Ù?ð4€Iô6ò? òB|DòB%ò !ð ñó ðó'òR#òJòVòVò4òFòFòð ñAó ðAð ñAó ðAð ñBó ðBð ñBó ðBó=óGð ñ ó ð ò<ò:ò;ð ×Ñ× Ñ ñAó !ôAr   r   )Ú
__future__r   r5   rË   r\   r   Úserial.serialutilr   r   r   r   r	   r   © r   r   ú<module>r     s.   ðõ 'ó Û Ý ã ß mÕ môFAˆZõ FAr   