a : iY¦{ã@sÂddlZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z m Z m Z mZGdd„deƒZdZej ¡Zedd…dkrÐddlZdZdZd Zd Zd Zd Zd ZdZdZdZGdd„deƒZnÄedkrêGdd„deƒZnªedd…dkrddlZdZ Gdd„deƒZnzedd…dksbedd…dksbedd…dksbedd…dkr„Gdd „d eƒZ!Gd!d„deƒZnGd"d„deƒZe"ed#d$ƒZ#e"ed%d&ƒZ$e"ed'd(ƒZ%e"ed)d*ƒZ&e"ed+dƒZ'e"ed,dƒZ(e"ed-d.ƒZ)e"ed/d0ƒZ*e"ed1d2ƒZ+e"ed3d4ƒZ,e"ed5e*ƒZ-e"ed6e+ƒZ.e/ed7ƒr8ej0Z0n e"ed8d9ƒZ0e"ed:d;ƒZ1e 2dƒZ6e"ed?d@ƒZ7GdAdB„dBe eƒZ8GdCdD„dDe8ƒZ9GdEdF„dFe8ƒZ:dS)GéN)Ú SerialBaseÚSerialExceptionÚto_bytesÚportNotOpenErrorÚwriteTimeoutErrorÚTimeoutc@s eZdZiZdd„Zdd„ZdS)ÚPlatformSpecificBasecCs tdƒ‚dS)Nz9non-standard baudrates are not supported on this platform©ÚNotImplementedError)ÚselfÚbaudrate©r ú6/usr/lib/python3.9/site-packages/serial/serialposix.pyÚ_set_special_baudrate.sz*PlatformSpecificBase._set_special_baudratecCs tdƒ‚dS)Nz$RS485 not supported on this platformr )r Úrs485_settingsr r rÚ_set_rs485_mode1sz$PlatformSpecificBase._set_rs485_modeN©Ú__name__Ú __module__Ú __qualname__ÚBAUDRATE_CONSTANTSrrr r r rr+sréZlinuxi@l*TXi+T,@ii.Ti/Tééééc @s`eZdZddddddddd d d d d ddddddddddddddddddd œZd!d"„Zd#d$„Zd%S)&ÚPlatformSpecificrrrérréééé é é é é ééiiéiéiééé é é é é éé)ré2éKéné†é–éÈi,iXi°ii` iÀi€%iKi–iáiÂi„ié ¡éÊéé@Bé”é`ã逄é %&éÀÆ-iàg5i =c Cs¤t ddgd¡}zXt |jt|¡|dtjM<|dtO<||d<|d<t |jt|¡Wn4t yž}zt d  ||¡ƒ‚WYd}~n d}~00dS)NÚiré@rr!r"z'Failed to set custom baud rate ({}): {}) ÚarrayÚfcntlÚioctlÚfdÚTCGETS2ÚtermiosZCBAUDÚBOTHERÚTCSETS2ÚIOErrorÚ ValueErrorÚformat)r r ÚbufÚer r rrtsú&PlatformSpecific._set_special_baudratec CsHt ddgd¡}züt |jt|¡|dtO<|durô|jrT|dtO<n|dtM<|jr~|dt O<n|dt M<|j r¨|dt O<n|dt M<|j durÖt |j dƒ|d<|jdurüt |jdƒ|d<nd|d<t |jt|¡Wn4tyB}ztd |¡ƒ‚WYd}~n d}~00dS)NrBrr éèrrzFailed to set RS485 mode: {})rDrErFrGÚ TIOCGRS485ÚSER_RS485_ENABLEDZloopbackÚSER_RS485_RX_DURING_TXZrts_level_for_txÚSER_RS485_RTS_ON_SENDZrts_level_for_rxÚSER_RS485_RTS_AFTER_SENDZdelay_before_txÚintZdelay_before_rxÚ TIOCSRS485rLrMrN)r rrOrPr r rr„s,  z PlatformSpecific._set_rs485_modeNrr r r rrQsDá"rÚcygwinc @s(eZdZddddddddd d d d œ Zd S)rr(r)r*r+r,r-r.r/r0r1r2) iôièr9r:r;r<r=r>r?r@rAN)rrrrr r r rr£sõrÚdarwinlTc@s6eZdZe ¡d d¡Zeedƒdkr2dd„ZdS)rrÚ.rr cCs$t d|g¡}t |jt|d¡dS)NrBr)rDrErFrGÚ IOSSIOSPEED)r r rOr r rr»srQN) rrrÚosÚunameÚsplitZ osx_versionrXrr r r rr·srZbsdrZfreebsdZnetbsdZopenbsdc@seZdZdd„ZdS)ÚReturnBaudratecCs|S)Nr )r Úkeyr r rÚ __getitem__ÆszReturnBaudrate.__getitem__N)rrrrcr r r rraÅsrac@seZdZeƒZdS©rN)rrrrarr r r rrÉsc@s eZdZdSrd)rrrr r r rrÐsÚTIOCMGETiTÚTIOCMBISiTÚTIOCMBICiTÚTIOCMSETiTÚ TIOCM_DTRÚ TIOCM_RTSÚ TIOCM_CTSé Ú TIOCM_CARrCÚ TIOCM_RNGé€Ú TIOCM_DSRéÚTIOCM_CDÚTIOCM_RIÚTIOCINQZFIONREADiTÚTIOCOUTQiTÚIÚTIOCSBRKi'TÚTIOCCBRKi(Tc@sòeZdZdZdd„Zd7dd„Zdd„Zed d „ƒZd8d d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zd9dd„Zdd„Zdd „Zd!d"„Zed#d$„ƒZed%d&„ƒZed'd(„ƒZed)d*„ƒZed+d,„ƒZd-d.„Zd:d0d1„Zd;d2d3„Zd4d5„Zd6S)<ÚSerialz¢ Serial port class POSIX implementation. Serial port configuration is done with termios and fcntl. Runs on Linux and many other Un*x like systems. c Csˆ|jdurtdƒ‚|jr tdƒ‚d|_z"t |jtjtjBtj B¡|_Wn@t yˆ}z(d|_t|j d  |j|¡ƒ‚WYd}~n d}~00z|j ddWn2zt |j¡Wn Yn0d|_‚Yn0d|_z |jsä| ¡|jsò| ¡Wn>ty2}z$|j t jt jfvrn‚WYd}~n d}~00| ¡t ¡\|_|_t ¡\|_|_t |jtjtj ¡t |jtjtj ¡dS)zo 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.zcould not open port {}: {}T)Ú force_update)Ú_portrÚis_openrGr^ÚopenZportstrÚO_RDWRÚO_NOCTTYÚ O_NONBLOCKÚOSErrorÚerrnorNÚ_reconfigure_portÚcloseZ_dsrdtrÚ_update_dtr_stateÚ_rtsctsÚ_update_rts_staterLÚEINVALZENOTTYÚreset_input_bufferÚpipeÚpipe_abort_read_rÚpipe_abort_read_wÚpipe_abort_write_rÚpipe_abort_write_wrEÚF_SETFL)r ÚmsgrPr r rr}þsD ", z Serial.openFcCsî|jdurtdƒ‚|jdurŠ|jrzzt |jtjtjB¡WqŠtyv}z"t|jd  |j |¡ƒ‚WYd}~qŠd}~00nt |jtj ¡d}d}}|j dur²d}t |j dƒ}z"t |j¡}|\}}} } } } } Wn6tjy }ztd  |¡ƒ‚WYd}~n d}~00| tjtjBO} | tjtjBtjBtjBtjBtjBtjBM} dD]"}tt|ƒrP| tt|ƒM} qP|tjtjBtjBM}|tjtj Btj!Btj"BM}ttd ƒrÂ|tj#M}ttd ƒrÚ|tj$M}zttd   |j%¡ƒ} } Wnšt&yŽz|j'|j%} } Wnpt(yˆttd ƒ} } zt |j%ƒ}Wn$t)yht)d   |j%¡ƒ‚Yn0|dkr„t)d   |j%¡ƒ‚Yn0Yn0| tj*M} |j+dkr´| tj,O} nX|j+dkrÌ| tj-O} n@|j+dkrä| tj.O} n(|j+dkrü| tj/O} nt)d  |j+¡ƒ‚|j0t1j2kr(| tj3M} nD|j0t1j4krB| tj3O} n*|j0t1j5kr\| tj3O} nt)d  |j0¡ƒ‚|tj6tj7BM}|j8t1j9kr¤| tj:tj;Btkrø| t<M} | tj:tj;BO} nj|j8t1j?kr"t<r"| tj:td}t|jdƒ}n&|jdurRd}d}nd}t|jdƒ}z"t   |j¡}|\}}}}} } } Wn6t j y¼} zt   d | ¡¡‚WYd} ~ n d} ~ 00|dksÎ|dkrÜtd |¡ƒ‚|| t j<|| t j<t  |jt j||||| | | g¡dS)r‘rNrr"r’r˜r™)ÚsuperròrƒrErGrršrXr»rIr›rœr¡rrNrMr¤r£r¥r¦) r rzr§r¨r©rªr«r¬r­r®r¯r°r©Ú __class__r rrƒüs0   &  ýzVTIMESerial._reconfigure_portrcCsL|js t‚tƒ}t|ƒ|krDt |j|t|ƒ¡}|s8qD| |¡qt|ƒS)r¹) r|rrºr¼r^r¿rGrÀrÇ)r rÈr¿rOr r rr¿s  zVTIMESerial.read)T)r) rrrrírƒr¿rîrÏÚ __classcell__r r rôrròós rò);r‚rEr^r½r´ÚsysrIr¡Zserial.serialutilrrrrrrÚobjectrr¢ÚplatformÚlowerZplatrDrHrKrJrSrYrTrVrWrUrr]raržrerfrgrhrirjrkrmrnrprrrsrrtruÚpackr³rÜrÝrwrxryrïròr r r rÚs†   P ÿþý                    \#