Current File : //usr/lib/python2.7/site-packages/serial/serialwin32.pyc
�
{�QNc@s1ddlZddlmZddlTd�Zdefd��YZyddlZWn*ek
r�dee	fd��YZ
nXdeejfd	��YZ
ed
kr-e
d�Z
ejjde
�e
�Z
ejjde
�d
e
_de
_e
j�de
_e
j�ejjde
�ndS(i����N(twin32(t*cCsd|dS(s%Turn a port number into a device namesCOM%di((tportnum((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytdevicestWin32SerialcBs
eZdZd-Zd�Zd�Zd�Zd�Zd�Zd�Z	dd�Z
d�Zd�Zd�Z
dd�Zdd�Zdd �Zdd!�Zd"�Zd#�Zd$�Zd%�Zd&�Zed'�Zd(�Zd)�Zd*�Zeeed+d,�ZRS(.s5Serial port implementation for Win32 based on ctypes.i2iKini�i�i�i,iXi�ii`	i�i�%iKi�i�i�cOs)d|_t|_tj|||�dS(N(tNonethComPorttFalset
_rtsTogglet
SerialBaset__init__(tselftargstkwargs((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyR
s		c	Cs�|jdkrtd��n|jr6td��n|j}y<|j�jd�rzt|d�dkrzd|}nWntk
r�nXt	j
|t	jt	jBddt	j
t	jt	jBd�|_|jt	jkrd|_td|jtj�f��nt	j|jd	d	�t	j�|_t	j|jtj|j��t	j|_t	j|_|j�t	j|jt	jt	j Bt	j!Bt	j"B�t	j#�|_$t	j%dd
dd�|j$_&t	j#�|_'t	j%dddd�|j'_&t(|_dS(sjOpen port with current settings. This may throw a SerialException
           if the port cannot be opened.s.Port must be configured before it can be used.sPort is already open.tCOMiis\\.\iscould not open port %s: %siiN()t_portRtSerialExceptiont_isOpentportstrtuppert
startswithtintt
ValueErrorRt
CreateFiletGENERIC_READt
GENERIC_WRITEt
OPEN_EXISTINGtFILE_ATTRIBUTE_NORMALtFILE_FLAG_OVERLAPPEDRtINVALID_HANDLE_VALUEtctypestWinErrort	SetupCommtCOMMTIMEOUTSt_orgTimeoutstGetCommTimeoutstbyreftRTS_CONTROL_ENABLEt	_rtsStatetDTR_CONTROL_ENABLEt	_dtrStatet_reconfigurePortt	PurgeCommt
PURGE_TXCLEARt
PURGE_TXABORTt
PURGE_RXCLEARt
PURGE_RXABORTt
OVERLAPPEDt_overlappedReadtCreateEventthEventt_overlappedWritetTrue(Rtport((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytopen!sB		+
	

	"
cCs^|jstd��n|jdkr0d}nL|jdkrZtjddddf}n"ddt|jd�ddf}|jdkr�|jdk	r�t|jd�f|d}n|jdkr�nJ|jdkr�|d dtjf}n!|d dt|jd�f}tj	|jt
jtj|���tj
|jtj�tj�}tj|jt
j|��|j|_|jtkr�d|_nd|jtkr�d|_nI|jtkr�d|_n.|jtkr�d	|_ntd
|j��|jtkr,tj|_d|_n�|jtkrStj |_d|_n�|jt!krztj"|_d|_na|jt#kr�tj$|_d|_n:|jt%kr�tj&|_d|_ntd|j��|j't(kr�tj)|_*nO|j't+krtj,|_*n1|j't-kr5tj.|_*ntd|j'��d|_/|j0ritj1|_2n$|j3r�tj4|_2n|j5|_2|j6r�tj7|_8n|j9|_8|j3r�d|_:n|j0|_:|j6|_;|j<|_=|j<|_>d|_?d|_@d|_AtB|_CtD|_EtjF|jt
j|��sZtd
t
jG���ndS(s,Set communication parameters on opened port.s'Can only operate on a valid port handleii�ii����iiiis#Unsupported number of data bits: %rsUnsupported parity mode: %rs#Unsupported number of stop bits: %rsCCannot configure port, some setting was wrong. Original message: %sN(iiiii(HRRt_timeoutRRtMAXDWORDRt_interCharTimeoutt
_writeTimeouttSetCommTimeoutsRR$R!tSetCommMasktEV_ERRtDCBtGetCommStatet	_baudratetBaudRatet	_bytesizetFIVEBITStByteSizetSIXBITSt	SEVENBITSt	EIGHTBITSRt_paritytPARITY_NONEtNOPARITYtParitytfParitytPARITY_EVENt
EVENPARITYt
PARITY_ODDt	ODDPARITYtPARITY_MARKt
MARKPARITYtPARITY_SPACEtSPACEPARITYt	_stopbitstSTOPBITS_ONEt
ONESTOPBITtStopBitstSTOPBITS_ONE_POINT_FIVEtONE5STOPBITStSTOPBITS_TWOtTWOSTOPBITStfBinaryt_rtsctstRTS_CONTROL_HANDSHAKEtfRtsControlRtRTS_CONTROL_TOGGLER&t_dsrdtrtDTR_CONTROL_HANDSHAKEtfDtrControlR(tfOutxCtsFlowtfOutxDsrFlowt_xonxofftfOutXtfInXtfNullt
fErrorChart
fAbortOnErrortXONtXonChartXOFFtXoffChartSetCommStateR(RttimeoutstcomDCB((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyR)Vs�		"!!%										cCsz|jrv|jrjtj|j|j�tj|j�tj|jj�tj|jj�d|_nt
|_ndS(s
Close portN(RRRR;R"tCloseHandleR0R2R3RR(R((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytclose�s		cCs
t|�S(N(R(RR5((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytmakeDeviceName�scCsXtj�}tj�}tj|jtj|�tj|��sQtd��n|jS(s>Return the number of characters currently in the input buffer.scall to ClearCommError failed(	RtDWORDtCOMSTATtClearCommErrorRRR$RtcbInQue(Rtflagstcomstat((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyt	inWaiting�s
*ic	CsE|jst�n|dkr2tj|jj�tj�}tj�}tj|jt	j
|�t	j
|��s�td��n|jdkrlt
|j|�}|dkr`t	j|�}tj�}tj|j||t	j
|�t	j
|j��}|r2tj�tjkr2tdt	j���ntj|jjtj�}|j|j }q/t�}q;t	j|�}tj�}tj|j||t	j
|�t	j
|j��}|r�tj�tjkr�tdt	j���ntj|jt	j
|j�t	j
|�t�}|j|j }n	t�}t|�S(s�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.iscall to ClearCommError failedsReadFile failed (%s)(RtportNotOpenErrorRt
ResetEventR0R2RwRxRyRR$RttimeouttminRztcreate_string_buffertReadFiletGetLastErrortERROR_IO_PENDINGRtWaitForSingleObjecttINFINITEtrawtvaluetbytestGetOverlappedResultR4(	RtsizeR{R|tntbuftrcterrtread((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyR��s8		*330	cCs�|jst�nt|�}|r�tj�}tj|j|t|�tj|�|j	�}|r�tj
�tjkr�tdtj
���n|jdkr�tj|j|j	tj|�t�}|jt|�kr�t�q�n|jSdSdS(s-Output the given string over the serial port.sWriteFile failed (%s)iN(RR~R�RRwt	WriteFiletlenRR$R3R�R�RRR:R�R4R�twriteTimeoutError(RtdataR�R�((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytwrite�s		0'cCs3|jst�ntj|jtjtjB�dS(s9Clear input buffer, discarding all that is in the buffer.N(RR~RR*R-R.(R((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyt
flushInputs		cCs3|jst�ntj|jtjtjB�dS(sbClear output buffer, aborting the current output and
        discarding all that is in the buffer.N(RR~RR*R+R,(R((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytflushOutputs		g�?cCsO|jst�nddl}tj|j�|j|�tj|j�dS(sHSend break condition. Timed, returns to idle state after given duration.i����N(RR~ttimeRtSetCommBreaktsleeptClearCommBreak(RtdurationR�((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyt	sendBreaks		
cCs?|jst�n|r+tj|j�ntj|j�dS(sBSet break: Controls TXD. When active, to transmitting is possible.N(RR~RR�R�(Rtlevel((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytsetBreak's
		cCsc|jst�n|r=tj|_tj|jtj�n"tj|_tj|jtj�dS(s)Set terminal status line: Request To SendN(	RR~RR%R&tEscapeCommFunctiontSETRTStRTS_CONTROL_DISABLEtCLRRTS(RR�((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytsetRTS/s		cCsc|jst�n|r=tj|_tj|jtj�n"tj|_tj|jtj�dS(s-Set terminal status line: Data Terminal ReadyN(	RR~RR'R(R�tSETDTRtDTR_CONTROL_DISABLEtCLRDTR(RR�((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytsetDTR9s		cCs/tj�}tj|jtj|��|jS(N(RRwtGetCommModemStatusRRR$R�(Rtstat((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyt_GetCommModemStatusCscCs)|jst�ntj|j�@dkS(s(Read terminal status line: Clear To Sendi(RR~Rt	MS_CTS_ONR�(R((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytgetCTSHs		cCs)|jst�ntj|j�@dkS(s)Read terminal status line: Data Set Readyi(RR~Rt	MS_DSR_ONR�(R((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytgetDSRMs		cCs)|jst�ntj|j�@dkS(s)Read terminal status line: Ring Indicatori(RR~Rt
MS_RING_ONR�(R((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytgetRIRs		cCs)|jst�ntj|j�@dkS(s)Read terminal status line: Carrier Detecti(RR~Rt
MS_RLSD_ONR�(R((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytgetCDWs		cCsK|jst�n|r1tj|jtj�ntj|jtj�dS(s#Platform specific - set flow state.N(RR~RR�tSETXONtSETXOFF(RR�((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytsetXON^s
		cCsXtj�}tj�}tj|jtj|�tj|��sQtd��n|jS(s5return how many characters the in the outgoing bufferscall to ClearCommError failed(	RRwRxRyRRR$RtcbOutQue(RR{R|((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyt
outWaitingfs
*cCs#||_|jr|j�ndS(s"Change RTS toggle control setting.N(RRR)(Rt	rtsToggle((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytsetRtsToggleos		cCs|jS(s+Get the current RTS toggle control setting.(R(R((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pytgetRtsToggletstdocsRTS toggle control setting(i2iKini�i�i�i,iXi�ii`	i�i�%iKi�i�i�(t__name__t
__module__t__doc__t	BAUDRATESR
R6R)RuRvR}R�R�R�R�R�R�R�R�R�R�R�R�R�R4R�R�R�R�tpropertyR�(((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyRs6		5	i	
		#			

									tSerialcBseZRS((R�R�(((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyR��scBseZRS((R�R�(((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyR��st__main__is%s
iKi(RtserialRtserial.serialutilRR	RtiotImportErrortFileLikeR�t	RawIOBaseR�tstsyststdoutR�tbaudratetdatabitsRuR5R6(((s6/usr/lib/python2.7/site-packages/serial/serialwin32.pyt<module>s*
	�i