亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? modbus.java

?? 工控modbus協議通訊
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
	public short PresetMultipleRegisters(short nAddr,  int nDataStart , short nQtd , double adRegValues[],int nRealType) {
		
		short anRegValues[];
		short nError;
		
		anRegValues=new short[nQtd*4];
		DoubleToShortArray(adRegValues,anRegValues,nRealType);
		return PresetMultipleRegisters(nAddr,nDataStart ,(short)(nQtd*4) ,anRegValues);
		
	}
	
	
	public short PresetSingleRegister(short nAddr,  int nRegister , short nRegValue) {
		
		
		short QUERY_LENGHT=(short)(6);
		byte abyQuery[]= new byte[QUERY_LENGHT+MBAP_HEADER_SIZE];
		short nReplyLength=(short)(6);
		int  aiReply[]  = new int[nReplyLength+MBAP_HEADER_SIZE];
		short nError;
		short nByte;
		short nRespByte;
		int	  iReg; 	
		int iRetry;
		
		
		//Query 
		InsertMBAPHeader(abyQuery,QUERY_LENGHT);
		
		//modbus message 
		abyQuery[OFFSET_MODBUS_MESS+0]=(byte)nAddr; //ADDR	
		abyQuery[OFFSET_MODBUS_MESS+1]=PRESET_SINGLE_REGISTER; //Function 
		abyQuery[OFFSET_MODBUS_MESS+2]=HiByte(nRegister);
		abyQuery[OFFSET_MODBUS_MESS+3]=LoByte(nRegister);
		abyQuery[OFFSET_MODBUS_MESS+4]=HiByte(nRegValue);
		abyQuery[OFFSET_MODBUS_MESS+5]=LoByte(nRegValue);
		
		iRetry=0;
		
		do {
			nError=TxRxMessage(abyQuery,(short)(QUERY_LENGHT+MBAP_HEADER_SIZE),aiReply, nReplyLength);
			
			
			if (nError==ERR_OK) {
				
				for (iReg=0;iReg<QUERY_LENGHT;iReg++){
					if ((byte)aiReply[iReg]!=abyQuery[OFFSET_MODBUS_MESS+iReg]) {
						nError=ERR_INVALID_RESPONSE;
						break;
					}
				}
				
			}//nerror=ERR_OK
			iRetry++;
			
		} while ((iRetry<m_iRetries)&&(nError!=ERR_OK));

		ThrowException(nError);

		return(nError);
		
	}//end PresetSingleRegister
	
	public short PresetSingleRegister(short nAddr,  int nRegister , int iRegValue) {
	
		return PresetSingleRegister(nAddr,nRegister ,(short)iRegValue);
	
	}

	public short PresetSingleRegister(short nAddr,  int nRegister ,float fRegValue,int nRealType) {
		
	    float afRegs[] = new float[1];
	
		afRegs[0] = fRegValue;

		return PresetMultipleRegisters(nAddr,nRegister ,(short)(1) ,afRegs,nRealType);
		
	}

	public short PresetSingleRegister(short nAddr,  int nRegister ,double dRegValue,int nRealType) {
		
	    double adRegs[] = new double[1];
	
		adRegs[0] = dRegValue;

		return PresetMultipleRegisters(nAddr,nRegister ,(short)(1) ,adRegs,nRealType);
		
	}

	public short LoopbackTest(short nAddr) throws ModbusException {
		
		
		short QUERY_LENGHT=(short)(6);
		byte abyQuery[]= new byte[QUERY_LENGHT+MBAP_HEADER_SIZE];
		short nReplyLength=(short)(6+MBAP_HEADER_SIZE);
		int  aiReply[]  = new int[nReplyLength];
		short nError;
		int	  iReg; 	
		short nQueryLenght = (short)(QUERY_LENGHT+MBAP_HEADER_SIZE);
		int iRetry;
		
		iReg=0;
	
		//Query 
		InsertMBAPHeader(abyQuery ,QUERY_LENGHT);
		
		//modbus message 
		abyQuery[OFFSET_MODBUS_MESS+0]=(byte)nAddr; //ADDR	
		abyQuery[OFFSET_MODBUS_MESS+1]=LOOP_BACK_TEST; //Function 
		abyQuery[OFFSET_MODBUS_MESS+2]=HiByte((short)0); //diag. code=0
		abyQuery[OFFSET_MODBUS_MESS+3]=LoByte((short)0);
		abyQuery[OFFSET_MODBUS_MESS+4]=(byte)System.currentTimeMillis();
		abyQuery[OFFSET_MODBUS_MESS+5]=(byte)System.currentTimeMillis();
		
		iRetry=0;

		do {
			nError=TxRxMessage(abyQuery,nQueryLenght,aiReply, nReplyLength);
			
			
			if (nError==ERR_OK) {
				
				for (iReg=0;iReg<QUERY_LENGHT;iReg++){
					if ((byte)aiReply[iReg]!=abyQuery[OFFSET_MODBUS_MESS+iReg]) {
						nError=ERR_INVALID_RESPONSE;
						break;
					}
				}
				
			}//nerror=ERR_OK
			
			iRetry++;

		} while ((iRetry<m_iRetries)&&(nError!=ERR_OK));

		ThrowException(nError);

		return(nError);
		
	}//end LoopBackTest
	
	
	public short ForceSingleCoil(short nAddr, int nRegister, boolean bCoilValue) {
		
		
		short QUERY_LENGHT=(short)(6);
		byte abyQuery[]= new byte[QUERY_LENGHT+MBAP_HEADER_SIZE];
		short nReplyLength=(short)(6);
		int  aiReply[]  = new int[nReplyLength+MBAP_HEADER_SIZE];
		short nError;
		int	  iReg; 	
		
		int iRetry;
		
		
		//Query 
		InsertMBAPHeader(abyQuery,QUERY_LENGHT);
		
		
		//modbus message 
		abyQuery[OFFSET_MODBUS_MESS+0]=(byte)nAddr; //ADDR	
		abyQuery[OFFSET_MODBUS_MESS+1]=FORCE_SINGLE_COIL; //Function 
		abyQuery[OFFSET_MODBUS_MESS+2]=HiByte(nRegister); //diag. code=0
		abyQuery[OFFSET_MODBUS_MESS+3]=LoByte(nRegister);
		abyQuery[OFFSET_MODBUS_MESS+4]=HiByte(CmodBool(bCoilValue));
		abyQuery[OFFSET_MODBUS_MESS+5]=LoByte(CmodBool(bCoilValue));
		
		
		iRetry=0;
		
		do {
			
			nError=TxRxMessage(abyQuery,(short)(QUERY_LENGHT+MBAP_HEADER_SIZE),aiReply, nReplyLength);
			
			
			if (nError==ERR_OK) {
				
				for (iReg=0;iReg<QUERY_LENGHT;iReg++){
					if ((byte)aiReply[iReg]!=abyQuery[OFFSET_MODBUS_MESS+iReg]) {
						nError=ERR_INVALID_RESPONSE;
						break;
					}
				}
				
			}//nerror=ERR_OK
			iRetry++;
		} while ((iRetry<m_iRetries)&&(nError!=ERR_OK));


		ThrowException(nError);

		return(nError);
		
	}//end ForceSingleCoil 
	
	
	public short ForceMultipleCoils(short nAddr,  int nDataStart , short nQtd , boolean abCoilValues[]) {
		
		
		short QUERY_LENGHT=(short)(7+(nQtd + 7)/8);
		byte abyQuery[]= new byte[QUERY_LENGHT+MBAP_HEADER_SIZE];
		short nReplyLength=(short)(6);
		int  aiReply[]  = new int[nReplyLength];
		short nError;
		short nByte;
		short nQueryByte;
		int	  iCoil; 
		int   iBit;
		int   iReg;
		int iRetry;
		
		
		
		
		//Query 
		InsertMBAPHeader(abyQuery ,QUERY_LENGHT);
		
		//modbus message 
		abyQuery[OFFSET_MODBUS_MESS+0]=(byte)nAddr; //ADDR	
		abyQuery[OFFSET_MODBUS_MESS+1]=FORCE_MULTIPLE_COILS; //Function 
		abyQuery[OFFSET_MODBUS_MESS+2]=HiByte(nDataStart);
		abyQuery[OFFSET_MODBUS_MESS+3]=LoByte(nDataStart);
		abyQuery[OFFSET_MODBUS_MESS+4]=HiByte(nQtd);
		abyQuery[OFFSET_MODBUS_MESS+5]=LoByte(nQtd);
		abyQuery[OFFSET_MODBUS_MESS+6]=(byte)((nQtd + 7)/8);
		nQueryByte=OFFSET_MODBUS_MESS+7;
		iBit=0;

		for (iCoil=0;iCoil<(nQtd);iCoil++){
			if (iBit>7){
				iBit=0;
				nQueryByte++;
			}
			
			if (abCoilValues[iCoil]) {
				abyQuery[nQueryByte]=(byte)(abyQuery[nQueryByte] | (0x01<<iBit));
			}
			iBit++;
			
		}
		
		
		iRetry=0;
		
		do {
			
			nError=TxRxMessage(abyQuery,(short)(QUERY_LENGHT+MBAP_HEADER_SIZE),aiReply, nReplyLength);
			
			
			if (nError==ERR_OK) {
				
				for (iReg=0;iReg<6;iReg++){
					if ((byte)aiReply[iReg]!=abyQuery[OFFSET_MODBUS_MESS+iReg]) {
						nError=ERR_INVALID_RESPONSE;
						break;
					}
				}
				
			}//nerror=ERR_OK
			
			iRetry++;
		} while ((iRetry<m_iRetries)&&(nError!=ERR_OK));

		ThrowException(nError);
		
		return(nError);
		
	}//end ForceMultipleCoils 
	
	
	public synchronized  short TxRxMessage(byte abyQuery[] , short nQueryLength, int aiReply[], short nReplyLenght) {
		
		long lInitialTime;
		boolean bTimeout=false; 
		int iByteRecived;
		long lCurrentTime;
		short  iRespSize=0;
		
		
		if (m_bReConnectOnEveryMessage) {
			if (!openConnection(m_sAddress,m_iPort,m_iTimeOut)){	
				return(ERR_EXECPTION);
			}
		}
		
			
		try	{
			m_ostream.flush();	
			m_ostream.flush();	
			m_istream.skip(m_istream.available()); //discard any value in the buffer 
			//send question 
			m_ostream.write(abyQuery, 0, nQueryLength); //offset=0 
			m_ostream.flush(); 
			
			lInitialTime=System.currentTimeMillis(); 
			bTimeout=false; 
			
			while (!bTimeout){
				if (this.m_istream.available()<MBAP_HEADER_SIZE){
					if ((System.currentTimeMillis()-lInitialTime)>m_iTimeOut){
						lCurrentTime=(System.currentTimeMillis()-lInitialTime);
						lCurrentTime=System.currentTimeMillis();
						bTimeout=true;
					} 
					
				}
				else {
					break;
				} 
				
			}	
			
			if (!bTimeout){
				
				for (iByteRecived=0;iByteRecived<MBAP_HEADER_SIZE;iByteRecived++){	
					aiReply[iByteRecived]=m_istream.readUnsignedByte();
				}
				
				iRespSize = (short)(aiReply[MBAP_HEADER_SIZE-2]);
				iRespSize = (short)((iRespSize<<8)|(aiReply[MBAP_HEADER_SIZE-1]));
				
				while (!bTimeout){
					if (this.m_istream.available()<(iRespSize)){
						if ((System.currentTimeMillis()-lInitialTime)>m_iTimeOut){
							lCurrentTime=(System.currentTimeMillis()-lInitialTime);
							lCurrentTime=System.currentTimeMillis();
							bTimeout=true;
						} 
						
					}
					else {
						break;
					} 
					
					
					
				}
			}
			
			if (!bTimeout){
				
				for (iByteRecived=0;iByteRecived<iRespSize;iByteRecived++){	
					aiReply[iByteRecived]=m_istream.readUnsignedByte();
				}
				
				//verify modbus exception 
				if (aiReply[1]>0x80){
					return (short)(ERR_MODBUS_EXCPTION+aiReply[2]);
				}
										
			}
			else {
				return(ERR_TIMEOUT);
			}
			
			
			if (m_bReConnectOnEveryMessage) {
				closeConnection();
			}
			
			
		}//end try
		
		catch(IOException ioe) { 
			System.err.println("Could not read data from Modbus server."); 
			return(ERR_EXECPTION);
		}

		return(ERR_OK);	
		
	}//end TxRxMessage 
	
	
	public void InsertMBAPHeader(byte abQuery[] , short nqueryLenght ){

		if (abQuery.length<6) {
			return;
		}

		abQuery[0]=0; //identifier
		abQuery[1]=0;
		abQuery[2]=0;//protocol identifier 
		abQuery[3]=0;
		abQuery[4]=HiByte(nqueryLenght);//length field (upper byte) 
		abQuery[5]=LoByte(nqueryLenght);
	
	}


	private byte HiByte(int iNumber) {
		return( (byte)((iNumber>>8) & (int)0x000000FF));
	}
	
	
	private byte LoByte(int iNumber) {
		return( (byte)((iNumber) & 0xFF));
	}

	private short HiWord(int iNumber) {
		return( (short)((iNumber>>16) & (int)0x0000FFFF));
	}

	private short LoWord(int iNumber) {
		return( (short)((iNumber) & (int)0x0000FFFF));
	}

	//java boolean to modbus boolean 
	private short CmodBool(boolean bCoil) {
		if (bCoil) {
			return((short)0xFF00);
		}
		else {
			return((short)0x0000);
		}
		
	}
	
	private void ShortToIntArray(short nArray[] , int iArray[]) {
		
		int i;
		int iTest;
		for (i=0;i<nArray.length;i++){
			
			iArray[i]=(int)((char)nArray[i]);
			iTest=iArray[i];
		}
		
	}
	
	private void IntToShortArray(int iArray[] , short nArray[]) {
		
		int i;
		short nTest;
		for (i=0;i<nArray.length;i++){
			
			nArray[i]=(short)iArray[i];
			nTest=nArray[i];
		}
		
	}

    private void ShortToFloatArray(short anArray[] , float afArray[] , int nRealTye) {
		
		int i;
        float fValue;
		
		if (anArray.length!=(2*afArray.length)) {
	
			System.err.println("ShortToFloat Error");
			return;
		}

        
        for (i=0;i<afArray.length;++i){
		
			if (REAL_NORMAL==nRealTye) {
				afArray[i]= Float.intBitsToFloat(HiLoWord2Int (anArray[2*i+1],anArray[2*i+0]));
			}
			else {
				afArray[i]= Float.intBitsToFloat(HiLoWord2Int (anArray[2*i+0],anArray[2*i+1]));
			}
		}

	}

	
	private void FloatToShortArray(float afArray[] ,short anArray[], int nRealTye) {
		
		int i;
        int iValue;
		
		if (anArray.length!=(2*afArray.length)) {
			
			System.err.println("ShortToFloat Error");
			return;
		}
		
		for (i=0;i<afArray.length;++i){
		
			iValue  = Float.floatToIntBits(afArray[i]);
			
			
			if (REAL_NORMAL==nRealTye) {
				anArray[2*i+1]=HiWord(iValue);
				anArray[2*i+0]=LoWord(iValue);
			
			}
			else {
				anArray[2*i+0]=HiWord(iValue);
				anArray[2*i+1]=LoWord(iValue);
			}

			
		}
		
		
	}



	private void ShortToDoubleArray(short anArray[] , double adArray[] , int nRealTye) {
		
		int i;
        float fValue;
		
		if (anArray.length!=(4*adArray.length)) {
	
			System.err.println("ShortToFloat Error");
			return;
		}

        
        for (i=0;i<adArray.length;++i){
		
			if (REAL_NORMAL==nRealTye) {
				adArray[i]= Double.longBitsToDouble(Words2Long(anArray[4*i+3],anArray[4*i+2],anArray[4*i+1],anArray[4*i+0]));
			}
			else {
				adArray[i]= Double.longBitsToDouble(Words2Long(anArray[4*i+0],anArray[4*i+1],anArray[4*i+2],anArray[4*i+3]));
			}
		}

	}


	private void DoubleToShortArray(double adArray[] ,short anArray[], int nRealTye) {
		
		int i;
        long lValue;
		
		if (anArray.length!=(4*adArray.length)) {
			
			System.err.println("DoubleToShortArray Error");
			return;
		}
		
		for (i=0;i<adArray.length;++i){
		
			lValue  = Double.doubleToLongBits(adArray[i]);
			
			
			if (REAL_NORMAL==nRealTye) {
				
				anArray[4*i+3]=GetWord(3,lValue);
				anArray[4*i+2]=GetWord(2,lValue);
				anArray[4*i+1]=GetWord(1,lValue);
				anArray[4*i+0]=GetWord(0,lValue);
			
			}
			else {
				anArray[4*i+0]=GetWord(3,lValue);
				anArray[4*i+1]=GetWord(2,lValue);
				anArray[4*i+2]=GetWord(1,lValue);
				anArray[4*i+3]=GetWord(0,lValue);
			}

			
		}
		
		
	}



	private int HiLoWord2Int(short iHi , short iLo) {
		int iRet=0;
		int iHiPart=0;
		int iLoPart=0;
        iHiPart = ((int)0xFFFF & iHi);
        iHiPart = (iHiPart<<16);
		iRet = iHiPart|((int)0xFFFF & iLo);
		return( iRet)  ; //(byte)((iNumber>>8) & (int)0x000000FF));
	}

	private long Words2Long(short w3 , short w2,short w1 , short w0) {
		
		long lRel=0;
		long lTemp=0;
		        
		lTemp = ((long)0xFFFF & w3);
        lTemp = lTemp<<(3*16);
		lRel = lRel | lTemp;

		lTemp = ((long)0xFFFF & w2);
        lTemp = lTemp<<(2*16);
		lRel = lRel | lTemp;
		

		lTemp = ((long)0xFFFF & w1);
        lTemp = lTemp<<(1*16);
		lRel = lRel | lTemp;

		lTemp = ((long)0xFFFF & w0);
        lTemp = lTemp<<(0*16);
		lRel = lRel | lTemp;

		return lRel;
        
	}

	private short GetWord(int iPart, long lValue) {
		
		long lTemp=0;
		
		lTemp =lValue;
        lTemp = lTemp>>(iPart*16);
		lTemp = ((long)0xFFFF & lTemp);
		
		return (short)lTemp;
        

	}

}//end Modbus Class 


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费av一区| 欧美激情在线看| 色呦呦日韩精品| 国产一区999| 综合自拍亚洲综合图不卡区| 国产欧美日韩在线看| 日韩色在线观看| 日韩午夜激情av| 日韩欧美中文字幕制服| 日韩美一区二区三区| 欧美va日韩va| 国产亚洲精久久久久久| 国产女同互慰高潮91漫画| 国产清纯美女被跳蛋高潮一区二区久久w| 日韩色在线观看| 欧美一二三区精品| 欧美一区二区女人| 在线视频观看一区| 色综合天天视频在线观看| 国产aⅴ精品一区二区三区色成熟| 国产欧美日韩精品在线| 国产日本一区二区| 久久男人中文字幕资源站| 日韩精品影音先锋| 久久久精品黄色| 欧美r级电影在线观看| 欧美美女黄视频| 久久综合九色综合欧美亚洲| 欧美一区国产二区| 日韩视频免费直播| 欧美国产禁国产网站cc| 亚洲国产电影在线观看| 久久久久久99精品| 亚洲一区二区三区四区在线观看| 国产精品另类一区| 国产精品网站在线观看| 日韩av电影天堂| www.亚洲激情.com| 91色porny在线视频| 日韩—二三区免费观看av| 日本免费新一区视频| 蜜臀久久99精品久久久画质超高清 | 亚洲视频网在线直播| 国产日韩欧美精品综合| 99综合电影在线视频| 欧美日韩精品专区| 91精品国产乱| 日本道免费精品一区二区三区| 555夜色666亚洲国产免| 精品国产乱码久久久久久久| 久久久99精品久久| 国产日韩一级二级三级| 国产日韩精品视频一区| 国产精品久久久久久福利一牛影视| 国产精品久久久久国产精品日日| 亚洲视频中文字幕| 亚洲r级在线视频| 精品在线亚洲视频| 国产风韵犹存在线视精品| 91亚洲精品一区二区乱码| 欧美色老头old∨ideo| 国产精品亲子乱子伦xxxx裸| 久久精品欧美一区二区三区麻豆| 3d动漫精品啪啪| 中文字幕电影一区| 亚洲妇女屁股眼交7| 精品一区二区精品| 99国产欧美久久久精品| 91精品国产全国免费观看| 国产日韩欧美高清在线| 亚洲国产精品综合小说图片区| 日本欧美肥老太交大片| www..com久久爱| 91精品午夜视频| 亚洲欧美区自拍先锋| 久久精品久久久精品美女| 国产精品亚洲视频| 91精品国产综合久久香蕉麻豆| 国产欧美日韩卡一| 性欧美疯狂xxxxbbbb| 成人h精品动漫一区二区三区| 精品一区二区久久| 欧美日韩成人综合| 国产情人综合久久777777| 奇米精品一区二区三区在线观看| 99久久精品国产一区| 精品嫩草影院久久| 亚洲国产成人va在线观看天堂| 国产剧情一区在线| 成人免费视频视频在线观看免费| 欧美日韩不卡一区| 中文字幕永久在线不卡| 国模套图日韩精品一区二区| 国产激情视频一区二区三区欧美| 欧美久久一二三四区| 亚洲天堂成人在线观看| 国产一区二区三区免费看| 欧美日韩国产天堂| 亚洲精品国产精品乱码不99| 国产精品羞羞答答xxdd| 精品国产一区二区精华| 热久久免费视频| 欧美视频在线观看一区二区| 中文字幕亚洲成人| 波多野结衣在线一区| 亚洲国产成人私人影院tom| 亚洲欧美乱综合| av资源网一区| 国产精品福利一区| 一区二区视频免费在线观看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产成人在线看| 亚洲精品在线三区| 日韩成人精品视频| 欧美色视频在线| 日日欢夜夜爽一区| 欧美精品精品一区| 性做久久久久久免费观看欧美| 色综合久久综合网| 亚洲亚洲人成综合网络| 7777精品伊人久久久大香线蕉 | 国产成人亚洲综合a∨婷婷| 欧美成人官网二区| 国产综合色精品一区二区三区| 久久久国产一区二区三区四区小说| 99久久国产综合色|国产精品| 亚洲欧美日韩国产一区二区三区 | 国产成人精品免费网站| 精品国产sm最大网站免费看| 成人午夜激情在线| 亚洲精品免费看| 欧美一区二区三区视频在线观看| 国产91清纯白嫩初高中在线观看| 久久久久久97三级| 欧美亚洲综合另类| 男男视频亚洲欧美| 中文字幕国产一区| 色综合天天综合网天天狠天天| 国产在线视视频有精品| 亚洲人成亚洲人成在线观看图片| 精品视频色一区| 色一区在线观看| 日本v片在线高清不卡在线观看| 久久综合九色综合97_久久久| 国产成人鲁色资源国产91色综| 亚洲欧美二区三区| 日韩精品资源二区在线| 日本欧美久久久久免费播放网| 一区二区三区欧美激情| 国产综合久久久久影院| 一区二区三区高清| 2022国产精品视频| 日韩欧美国产一二三区| 91蜜桃免费观看视频| 日韩 欧美一区二区三区| 天天操天天干天天综合网| 国产欧美日韩视频在线观看| 精品视频色一区| a美女胸又www黄视频久久| 一区二区三区精品在线| 国产精品视频线看| 欧美日韩在线不卡| 豆国产96在线|亚洲| 一区二区三区小说| 欧美激情艳妇裸体舞| 日韩精品中文字幕一区二区三区| 狠狠色2019综合网| 国产精品久久久久久久久免费丝袜 | av亚洲精华国产精华精华| 麻豆一区二区在线| 一区二区三区四区不卡在线 | 国产成人在线影院| 蜜桃视频一区二区| 亚洲r级在线视频| 婷婷国产在线综合| 亚洲天堂网中文字| 国产精品水嫩水嫩| 夜夜夜精品看看| 樱花草国产18久久久久| 中文字幕日韩精品一区| 国产日产欧产精品推荐色 | 91日韩一区二区三区| 不卡的电影网站| 天天射综合影视| 欧美又粗又大又爽| av亚洲精华国产精华精| 日韩精品91亚洲二区在线观看 | 久久综合色天天久久综合图片| 欧美美女网站色| 欧美吻胸吃奶大尺度电影| 欧美精品免费视频| 欧美日韩一区二区电影| 欧美人与性动xxxx| 欧美在线观看视频在线| 色狠狠综合天天综合综合| 97久久精品人人澡人人爽| 色综合久久久久| 91国产视频在线观看| 欧洲人成人精品| 色悠悠亚洲一区二区|