a_)ddlmZddlZddlZddlZ ddlZn#e$r ddlmZYnwxYw ddl Z n#e$rddl Z YnwxYwddl m Z m Z mZmZmZmZejejejejdZGdde ZedkrddlZedZejd eejd ed eejd ed e dSdS))absolute_importN) SerialBaseSerialExceptionto_bytes iterbytesSerialTimeoutExceptionPortNotOpenError)debuginfowarningerrorceZdZdZdZfdZdZfdZdZdZ e dZ dd Z d Z d Zd ZdZdZe dZdZdZdZe dZe dZe dZe dZxZS)SerialzSSerial port implementation that simulates a loop back connection in plain software.)2Kni,iXiii` ii%iKiiicd|_d|_d|_d|_t t |j|i|dS)NiF) buffer_sizequeuelogger _cancel_writesuperr__init__)selfargskwargs __class__s A/usr/lib/python3/dist-packages/serial/urlhandler/protocol_loop.pyrzSerial.__init__/sI  "$fd$d5f55555c|jrtdd|_tj|j|_|jtd||j| d|_|j s| |j s| ||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_openrrrQueuer_portfrom_urlport_reconfigure_port_dsrdtr_update_dtr_state_rtscts_update_rts_statereset_input_bufferreset_output_bufferrs r!openz Serial.open6s < ;!"9:: : [!122 : !"RSS S di        | %  " " $ $ $| %  " " $ $ $ !!!   """""r"c|jr8d|_ |jdn#tj$rYnwxYwt t |dS)NF)r$r put_nowaitFullrrclose)rr s r!r5z Serial.closeQsv <  DL  %%d++++:     fd!!#####s ,>>ct|jtjrd|jcxkrdks)nt d|j|jr|jddSdS)zx Set communication parameters on opened port. For the loop:// protocol all settings are ignored! rlzinvalid baudrate: {!r}z_reconfigure_port()N) isinstance _baudratenumbersIntegral ValueErrorformatrr r0s r!r)zSerial._reconfigure_portZs $.'*:;; N1t~C_C_C_C_X_C_C_C_C_5< {:d}r$r rr r<rqsizer0s r! in_waitingzSerial.in_waiting~sn| %"$$ $ ; O K  299$*:J:J:L:LMM N N Nz!!!r"c|jst|j'|jdkrtj|jz}nd}t }|dkr|jr |j|j}| ||z }|dz}n#nj#t j$r|jdkrYnNYnwxYw|r9tj|kr"|jr|j dn |dkr|jt|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. NrtimeoutrSz read timeout) r$r _timeouttime bytearrayrgetEmptyrr bytes)rsizerVdatabs r!readz Serial.reads. | %"$$ $ = $!););ikkDM1GGG{{Qhh4 >D JNN4) {:d}rPr0s r! out_waitingzSerial.out_waitingsn| %"$$ $ ; P K  3::4:;K;K;M;MNN O O Oz!!!r"c||jr4|jd|jdSdS)z[ Set break: Controls TXD. When active, to transmitting is possible. z_update_break_state({!r})N)rr r< _break_stater0s r!_update_break_statezSerial._update_break_statesI ; T K  8??@QRR S S S S S T Tr"c||jr4|jd|jdSdS)z)Set terminal status line: Request To Sendz'_update_rts_state({!r}) -> state of CTSN)rr r< _rts_stater0s r!r-zSerial._update_rts_stateF ; ` K  FMMdo^^ _ _ _ _ _ ` `r"c||jr4|jd|jdSdS)z-Set terminal status line: Data Terminal Readyz'_update_dtr_state({!r}) -> state of DSRNrr r< _dtr_stater0s r!r+zSerial._update_dtr_stater{r"c|jst|jr2|jd|j|jS)z(Read terminal status line: Clear To SendzCTS -> state of RTS ({!r}))r$r rr r<rzr0s r!ctsz Serial.ctssT| %"$$ $ ; S K  9@@QQ R R Rr"c|jr2|jd|j|jS)z)Read terminal status line: Data Set ReadyzDSR -> state of DTR ({!r})r}r0s r!dsrz Serial.dsr s> ; S K  9@@QQ R R Rr"cr|jst|jr|jddS)z)Read terminal status line: Ring Indicatorzreturning dummy for RIFr$r rr r0s r!riz Serial.ris@| %"$$ $ ; 7 K  5 6 6 6ur"cr|jst|jr|jddS)z)Read terminal status line: Carrier Detectzreturning dummy for CDTrr0s r!cdz Serial.cds@| %"$$ $ ; 7 K  5 6 6 6tr")rS)__name__ __module__ __qualname____doc__ BAUDRATESrr1r5r)r'propertyrRr`rbrdrnr.r/rurxr-r+rrrr __classcell__)r s@r!rr)s]]4I66666###6$$$$$ 4 4 4PPP2""X"B$$$"""6      ""X"TTT``` ``` XX XXr"r__main__zloop://z{} z write... zhello z read: {!r} )! __future__rr?r9rXr@ ImportError urllib.parseparserr%serial.serialutilrrrrrr DEBUGINFOWARNINGERRORrIrrsyssstdoutrnr<flushr`r5r"r!rs '&&&&& $OOOO$$$########$LLLLyxxxxxxxxxxxxxxx] L ]  zzzzzZzzzB zJJJyAJV]]1%%&&&J\"""GGIGGIIIJ^**166!9955666GGIIIIIs ''0 <<