dbfdg 3 M]W#@s@ddlZddlZddlTejejZddZGdddeZdS)N)*cCstdd|DS)NcSsg|] }t|qS)ord).0xrr/usr/lib/python3.6/serialcli.py sz!as_byte_array..)sab)stringrrr as_byte_arraysr c@seZdZdZd3ZddZddZddZeddZ d4ddZ ddZ d d!Z d"d#Z d$d%Zd&d'Zd(d)Zed*d+Zed,d-Zed.d/Zed0d1Zd2S)5Serialz)Serial port implementation for .NET/Mono.2Kn,X` %KcCs|jdkrtd|jr tdytjjj|j|_Wn:t k rp}zd|_td|j|fWYdd}~XnX|j dkrd|_ |j dkrd|_ |j |jj d|_|js|j|js|j|jdS)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.zcould not open port %s: %sT)Z_portSerialExceptionis_openSystemIOPorts SerialPortZportstr _port_handle Exception _rts_state _dtr_state_reconfigure_portZOpenZ_dsrdtr_update_dtr_state_rtscts_update_rts_statereset_input_buffer)selfmsgrrropens* $   z Serial.opencCs|jstd|jdkr*tjjjj|j_nt |jd|j_|j dkrXtjjjj|j_ nt |j d|j_ y|j |j_ Wn.tk r}ztt|WYdd}~XnX|jtkrd|j_nJ|jtkrd|j_n6|jtkrd|j_n"|jtkrd|j_ntd|j|jtkr(ttjjjd |j_n|jtkrFtjjjj|j_nh|jtkrdtjjjj|j_nJ|jtkrtjjjj |j_n,|jt!krtjjjj"|j_ntd |j|j#t$krtjjj%j&|j_%nJ|j#t'krtjjj%j(|j_%n,|j#t)krtjjj%j*|j_%ntd |j#|j+r8|j,r8tjjj-j.|j_-nH|j+rRtjjj-j/|j_-n.|j,rltjjj-j0|j_-nttjjj-d |j_-dS) z,Set communication parameters on opened port.z'Can only operate on a valid port handleNiz#Unsupported number of data bits: %rNonezUnsupported parity mode: %rz#Unsupported number of stop bits: %r)1r$rZ_timeoutr r!r"r#ZInfiniteTimeoutZ ReadTimeoutintZ_write_timeoutZ WriteTimeoutZ _baudrateZBaudRateIOError ValueErrorstrZ _bytesizeZFIVEBITSZDataBitsZSIXBITSZ SEVENBITSZ EIGHTBITSZ_parityZ PARITY_NONEgetattrZParityZ PARITY_EVENZEvenZ PARITY_ODDZOddZ PARITY_MARKZMarkZ PARITY_SPACEZSpaceZ _stopbitsZ STOPBITS_ONEZStopBitsZOneZSTOPBITS_ONE_POINT_FIVEZ OnePointFiveZ STOPBITS_TWOZTwor*Z_xonxoffZ HandshakeZRequestToSendXOnXOffZ RequestToSendZXOnXOff)r-errrr(;s\                  zSerial._reconfigure_portc CsF|jrB|jrReturn the number of characters currently in the input buffer.)rportNotOpenErrorr$Z BytesToRead)r-rrr in_waitingszSerial.in_waitingc CsX|js tt}x>|rNy|j|jjWntjk rBPYqX|d8}qWt|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>) rr< bytearrayappendr$ZReadByter TimeoutExceptionbytes)r-sizedatarrrreads z Serial.readc CsJ|js ty|jjt|dt|Wntjk r@tYnXt|S)z-Output the given string over the serial port.r) rr<r$ZWriter lenr rAZwriteTimeoutError)r-rDrrrwrites z Serial.writecCs|js t|jjdS)z9Clear input buffer, discarding all that is in the buffer.N)rr<r$ZDiscardInBuffer)r-rrrr,szSerial.reset_input_buffercCs|js t|jjdS)zs Clear output buffer, aborting the current output and discarding all that is in the buffer. N)rr<r$ZDiscardOutBuffer)r-rrrreset_output_bufferszSerial.reset_output_buffercCs|js tt|j|j_dS)zT Set break: Controls TXD. When active, to transmitting is possible. N)rr<boolZ _break_stater$Z BreakState)r-rrr_update_break_stateszSerial._update_break_statecCs|js tt|j|j_dS)z)Set terminal status line: Request To SendN)rr<rIr&r$Z RtsEnable)r-rrrr+szSerial._update_rts_statecCs|js tt|j|j_dS)z-Set terminal status line: Data Terminal ReadyN)rr<rIr'r$Z DtrEnable)r-rrrr)szSerial._update_dtr_statecCs|js t|jjS)z(Read terminal status line: Clear To Send)rr<r$Z CtsHolding)r-rrrctssz Serial.ctscCs|js t|jjS)z)Read terminal status line: Data Set Ready)rr<r$Z DsrHolding)r-rrrdsrsz Serial.dsrcCs|js tdS)z)Read terminal status line: Ring IndicatorF)rr<)r-rrrrisz Serial.ricCs|js t|jjS)z)Read terminal status line: Carrier Detect)rr<r$Z CDHolding)r-rrrcdsz Serial.cdN)r rrrrrrrrrrrrrrrr)r>)__name__ __module__ __qualname____doc__Z BAUDRATESr/r(r;propertyr=rErGr,rHrJr+r)rKrLrMrNrrrrr s$H      r ) r ZSystem.IO.PortsZserial.serialutilZArrayZByter r Z SerialBaser rrrr s