EIRTc1@sddlZddlZddlZddlZddlZddlZddlZddlZddlTej dkrddl Z neZ ej dkrddl Z neZ ej j Zed dkrdZdZd Zd Zd Zid d 6d d6dd6dd6dd6dd6dd6dd6dd6dd6dd6d d!6d"d#6d$d%6d&d'6d(d)6d*d+6d,d-6d.d/6d0d16d2d36d4d56d6d76d8d96d:d;6d<d=6d>d?6d@dA6dBdC6dDdE6dFdG6ZnRedHkrKdIZdJZi d.dK6d2dL6d6d36d8d56d:d76d<d96d>d;6d@d=6dBd?6dDdA6dFdC6Zned dMkrvdNZdOZiZned dPkped dQkrdRZdSZiZnxed dTkrejdjdUZeed dkrdVZn dWZdXZiZned dYkrBdZZd[ZiZned d\krmd]Zd^ZiZned d_krd`ZdaZiZned dbkrdcZddZiZnfed dekrdfZdgZiZn;ejjdhej ejefdiZdjZiZee dko>e jpDdlZee dmo\e jpbdnZee dooze j pdpZ ee dqoe j!pdrZ!ee dsoe j"pdZ"ee dtoe j#pdZ#ee duoe j$pdvZ$ee dwoe j%pdxZ%ee dyo.e j&p4dzZ&ee d{oLe j'pRd|Z'ee d}oje j(ppe%Z(ee d~oe j)pe&Z)ee dre j*Z*nee doe j+pdZ*ee doe j,pdZ,ej-dd Z.ej-de#Z/ej-de"Z0ee do3e j1p9dZ1ee doQe j2pWdZ2de3fdYZ4yddl5Z5Wn*e6k rde4e7fdYZ8nXde4e5j9fdYZ8de8fdYZ:e;dkre8d dd'de<de=de>dddd dd Z?e?j@d e?jAd e?jBe?jCe?jdejDjde?jEdejDjde?jF[?ndS(iN(t*iiitlinuxcCsd|S(Ns /dev/ttyS%d((tport((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytdevice$sI*T,i+T,@icCsddl}|jddgd}yhtj|jt||dctjM<|dctO<||d<|ds*  - #  c Cs|jdkrtdnd}d}}|jdk rYd}t|jd}ny1tj|j}|\}}}}} } } Wn&tjk r} td| nX|tj tj BO}|tj tj Btj BtjBtjBtjBtjBM}x4dD],} tt| r|tt| M}qqW|tjM}|tjtjBtjBtjBM}ttdr|tjM}nttd r|tjM}nyttd |j} } Wntk rpyt|j} } Wqqtk rlttd } } yt|j}Wn$tk rFtd |jqmX|dkrmtd |jqmqqXnX|tj M}|j!d kr|tj"O}np|j!dkr|tj#O}nQ|j!dkr|tj$O}n2|j!dkr|tj%O}ntd|j!|j&t'kr.|tj(M}nQ|j&t)krM|tj(O}n2|j&t*krl|tj(O}ntd|j&|tj+tj,BM}|j-t.kr|tj/tj0BM}nf|j-t1kr|tj0M}|tj/O}n9|j-t2kr|tj/tj0BO}ntd|j-ttdro|j3rP|tj4tj5BO}q|tj4tj5Btj6BM}n5|j3r|tj4tj5BO}n|tj4tj5BM}ttdr|j7r|tj8O}q|tj8M}n9ttdr|j7r|tj9O}q|tj9M}n|dks.|dkrAtd|n|| tj:<|dksf|dkrytd|n|| tj;<||||| | | g|krtj<|jtj=||||| | | gn|dk rt>||ndS(s,Set communication parameters on opened port.s+Can only operate on a valid file descriptoriii sCould not configure port: %stECHOCTLtECHOKEtIUCLCtPARMRKsB%stB38400sInvalid baud rate: %riiiisInvalid char len: %rs"Invalid stop bit specification: %rsInvalid parity: %rtIXANYtCRTSCTSt CNEW_RTSCTSisInvalid vmin: %r sInvalid vtime: %rN(RJRK(?RR;R&t_interCharTimeouttintttermiost tcgetattrterrorR tCLOCALtCREADtICANONtECHOtECHOEtECHOKtECHONLtISIGtIEXTENthasattrtgetattrtOPOSTtINLCRtIGNCRtICRNLtIGNBRKRLRMt _baudratetAttributeErrortbaudrate_constantstKeyErrorRtCSIZEt _bytesizetCS8tCS7tCS6tCS5t _stopbitst STOPBITS_ONEtCSTOPBtSTOPBITS_ONE_POINT_FIVEt STOPBITS_TWOtINPCKtISTRIPt_parityt PARITY_NONEtPARENBtPARODDt PARITY_EVENt PARITY_ODDt_xonxofftIXONtIXOFFROt_rtsctsRPRQtVMINtVTIMEt tcsetattrtTCSANOWR(RHt custom_baudtvmintvtimet orig_attrtiflagtoflagtcflagtlflagtispeedtospeedtccRItflag((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyRD7s 5 #          !1 cCsD|jr@|jdk r4tj|jd|_nt|_ndS(s Close portN(R<RR;R=REtFalse(RH((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyREs   cCs t|S(N(R(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytmakeDeviceNamescCs,tj|jtt}tjd|dS(s>Return the number of characters currently in the input buffer.R6i(RRRR3tTIOCM_zero_strtstructtunpack(RHts((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyt inWaitingsicCs3|jstnt}x t||kr(yytj|jggg|j\}}}|sgPntj|j|t|}|st dn|j |Wqtj k r}|dt j kr%t d|fq%qtk r$}|j t j kr%t d|fq%qXqWt|S(sRead 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.sgdevice reports readiness to read but returned no data (device disconnected or multiple access on port?)isread failed: %s(R<tportNotOpenErrort bytearraytlentselectRt_timeoutR=treadR&textendRVRCtEAGAINtOSErrortbytes(RHtsizeRtreadyt_RR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyRs&  *c Cs|jstnt|}t|}|jdk r^|jdkr^tj|j}nd}x|dkrytj|j |}|r|tj}|dkrt nt j g|j gg|\}}}|s+t q+n<t j g|j ggd\}}}|s+t dn||}||8}Wqgt k r}} | jtjkr~t d| fq~qgXqgWt|S(s-Output the given string over the serial port.iswrite failed (select)swrite failed: %sN(R<Rtto_bytesRt _writeTimeoutR;ttimeR=twriteRtwriteTimeoutErrorRR&RRCR( RHtdatatdttx_lenttimeouttnttimeleftRRtv((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyRs4     ' ' cCs|jdS(sTFlush of file like objects. In this case, wait until all data is written.N(t drainOutput(RH((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytflush scCs,|jstntj|jtjdS(s9Clear input buffer, discarding all that is in the buffer.N(R<RRTttcflushRR tTCIFLUSH(RH((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyRGs cCs,|jstntj|jtjdS(sbClear output buffer, aborting the current output and discarding all that is in the buffer.N(R<RRTRRR tTCOFLUSH(RH((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyt flushOutputs g?cCs3|jstntj|jt|ddS(sHSend break condition. Timed, returns to idle state after given duration.g?N(R<RRTt tcsendbreakRRS(RHtduration((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyt sendBreaks cCsK|jdkrtn|r4tj|jtntj|jtdS(sBSet break: Controls TXD. When active, no transmitting is possible.N(RR;RRRR7R8(RHtlevel((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytsetBreaks  cCsK|jstn|r1tj|jttntj|jttdS(s)Set terminal status line: Request To SendN(R<RRRRR(t TIOCM_RTS_strR)(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytsetRTS&s  cCsK|jstn|r1tj|jttntj|jttdS(s-Set terminal status line: Data Terminal ReadyN(R<RRRRR(t TIOCM_DTR_strR)(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytsetDTR.s  cCsH|jstntj|jtt}tjd|dt @dkS(s(Read terminal status line: Clear To SendR6i( R<RRRRR'RRRR-(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytgetCTS6s cCsH|jstntj|jtt}tjd|dt @dkS(s)Read terminal status line: Data Set ReadyR6i( R<RRRRR'RRRR0(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytgetDSR<s cCsH|jstntj|jtt}tjd|dt @dkS(s)Read terminal status line: Ring IndicatorR6i( R<RRRRR'RRRR2(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytgetRIBs cCsH|jstntj|jtt}tjd|dt @dkS(s)Read terminal status line: Carrier DetectR6i( R<RRRRR'RRRR1(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytgetCDHs cCs,tj|jtt}tjd|dS(s?Return the number of characters currently in the output buffer.R6i(RRRR5RRR(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyt outWaitingPscCs&|jstntj|jdS(sinternal - not portable!N(R<RRTttcdrainR(RH((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyRVs cCs2|jstntj|jtjtjdS(sinternal - not portable!N(R<RRRRtF_SETFLR=RB(RH((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyt nonblocking[s cCs|jstn|jS(s For easier use of the serial port instance with select. WARNING: this function is not portable to different platforms! (R<RR(RH((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytfileno`s cCsK|jstntr1tj|jtjntj|jtjdS(s Manually control flow - when software flow control is enabled. This will send XON (true) and XOFF (false) to the other device. WARNING: this function is not portable to different platforms! N( thComPortRtenableRTttcflowRR tTCIONtTCIOFF(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytsetXONhs  cCsK|jstn|r1tj|jtjntj|jtjdS(s Manually control flow of outgoing data - when hardware or software flow control is enabled. WARNING: this function is not portable to different platforms! N(R<RRTRRR tTCOONtTCOOFF(RHR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pytflowControlOutts  (t__name__t __module__t__doc__R>RDRERRRRRRGRRRRRRRRRRRRRRFRR(((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyR9s2 z    # !                tSerialcBseZRS((RR(((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyRscBseZRS((RR(((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyRstPosixPollSerialcBseZdZddZRS(spoll based read implementation. not all systems support poll properly. however this one has better handling of errors, such as a device disconnecting while it's in use (e.g. USB-serial unplugged)icCsN|jdkrtnt}tj}|j|jtjtjBtj Btj B|dkrDxt ||kr@xN|j|j dD]6\}}|tjtj Btj B@rt dqqWtj|j|t |}|j||j dk r|j dks2|jdk rg|jdkrg| rgPqgqgWnt|S(sRead 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.iisdevice reports error (poll)N(RR;RRRtpolltregistertPOLLINtPOLLERRtPOLLHUPtPOLLNVALRRR&R=RRRRR(RHRRRRteventR((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyRs    + # % (RRRR(((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyRst__main__RtbytesizetparitytstopbitsRtxonxofftrtsctsthellos%r s%s (GtsysR=RRTRRRCRtserial.serialutilt hexversionR RtplatformtlowertplatRR R R RRitunametsplittversionRStstderrRtnametVERSIONR`R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5tpackRRRR7R8t SerialBaseR9tiot ImportErrortFileLikeRt RawIOBaseRRt EIGHTBITSR|RrRRRRGRtstdoutRR(((s?/opt/freeware/lib/python2.7/site-packages/serial/serialposix.pyts(`                                      s