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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? opcconnector.java

?? 用于串口通訊測(cè)試的工具軟件。完全使用java語言編寫。
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
			{
				conn.writeHeader(String.valueOf(ig.index));
			}
		}
		String hdr = conn.readHeader();
		if (getResultCode(hdr) != 0)
		{
			conn.close();
			throw new OpcException(hdr);
		}
		conn.close();
	}


	/**
	 * 刷新所有確定了index值的變量組上的變量值
	 */
	public void refreshGroups() throws IOException
	{
		TcpConnection conn = getConnection();
		conn.writeHeader("RF" + DELIMETER + Integer.toString(3));//3=事務(wù)碼
		ItemGroup ig;
		for (int groupIndex = 0, cntGroups = groups.size(); groupIndex < cntGroups; groupIndex++)
		{
			ig = (ItemGroup)groups.get(groupIndex);
			if (ig.index != -1)
			{
				conn.writeHeader(Integer.toString(ig.index));
			}
		}
		//conn.flushHeanders();
		String hdr = conn.readHeader();
		if (getResultCode(hdr) != 0)
		{
			conn.close();
			throw new OpcException(hdr);
		}
		conn.close();
	}


	public boolean isConnected()
	{
		return connected;
	}

	/**
	 * 關(guān)閉到OPC服務(wù)的所有連接,釋放資源
	 */
	public void disconnect()
	{
		if (socketRcvUDP != null)
		{
			socketRcvUDP.close();
			socketRcvUDP = null;
		}
		if (!connected)
		{
			return;
		}
		int cntGroups = groups.size();
		if (connected && cntGroups > 0)
		{
			try
			{
				TcpConnection conn = getConnection();
				conn.writeHeader("RM" + DELIMETER + cntGroups);
				ItemGroup ig;
				for (int groupIndex = cntGroups - 1; groupIndex >= 0; groupIndex--)
				{
					ig = (ItemGroup)groups.get(groupIndex);
					conn.writeHeader(Integer.toString(ig.index));
					ig.index = -1;
				}
				//conn.flushHeanders();
				//debug("disconnect " + conn.readHeader());
				conn.close();
				connected = false;
			}
			catch (IOException ex)
			{
				ex.printStackTrace();
			}
		}
	}


	/**
	 * 確保釋放資源
	 */
	protected void finalize()
	{
		this.disconnect();
	}

	/**
	 * 獲得加入的各個(gè)組構(gòu)成集合上的某個(gè)組
	 * @param index 索引號(hào)
	 * @return ItemGroup對(duì)象。如果指定索引無效,則拋出異常ArrayIndexOutOfBoundsException。
	 */
	public final ItemGroup getGroup(int index)
	{
		return (ItemGroup)groups.get(index);
	}

	/**
	 * 變量值發(fā)生變化通知的處理
	 * 遵循2.2版本協(xié)議處理
	 */
	void dataChanged(byte[] data, int offset, int length)
	{
		if (length < 16) return;//should never happen//20=4+2+2+4+1+(2+1)
		int end = offset + length;
		offset += 4;//跳過事務(wù)號(hào)
		int hGroup;
		//XXX 嚴(yán)格意義上,應(yīng)該  & 0xFFFF,按考慮到hGroup的值不會(huì)超過32512,故省去
		ItemGroup ig = groupAt(hGroup = ((data[offset++] << 8) | data[offset++]));
		if (ig == null)
		{//should never happen
			System.err.println("Caution: groupIndex " + hGroup + " is illegal.");
			return;
		}
		//XXX 嚴(yán)格意義上,應(yīng)該  & 0xFFFF,按考慮到itemCount的值不會(huì)超過32512,故省去
		int itemCount = ((data[offset++] << 8) | data[offset++]);
		boolean hasError = ((data[offset++] << 24) | (data[offset++] << 16)
								  | (data[offset++] << 8) | data[offset++]) != 0;
		boolean notAllGood = data[offset++] != 0;
		ig.ensureCapacity(itemCount);
		Item[] itemsChanged = ig.cachedActiveItems;
		Variant[] oldValues = ig.cachedOldValues;
		Item item;
		int cntValueBytes;
		for (int i = 0; offset < end && i < itemCount; i++)
		{
			//XXX 嚴(yán)格意義上,應(yīng)該 & 0xFFFF,但考慮到data[offset++]<<8的值不會(huì)超過32512,故省去
			itemsChanged[i] = item = ig.getItem(((data[offset++] << 8) | data[offset++]));
			//XXX 嚴(yán)格意義上,應(yīng)該 & 0xFF,但考慮到目前valueBytes的值不會(huì)超出127,故省去
			cntValueBytes = data[offset++];
			oldValues[i] = item.setValue(data, offset);

			offset += cntValueBytes;
			if (notAllGood)
			{
				item.quality = (short)(data[offset++] & 0xFF);
				debug(item.getID() + "'quality=" + Item.getQualityText(item.quality));
			}
			if (hasError) offset += 4;//忽略對(duì)變量值錯(cuò)誤的處理
		}

		ig.fireDataChanged(new CallbackEvent(ig, itemCount));
	}

	/**
	 * 異步寫入操作執(zhí)行完成通知的處理
	 * 遵循2.3版本協(xié)議處理
	 */
	void writeCompleted(byte[] data, int offset, int length)
	{
		if (length < 12) return;//should never happen//20=4+2+2+4
		int end = offset + length;
		offset += 4;//跳過事務(wù)號(hào)
		int hGroup;
		//XXX 嚴(yán)格意義上,應(yīng)該  & 0xFFFF,按考慮到hGroup的值不會(huì)超過32512,故省去
		ItemGroup ig = groupAt(hGroup = ((data[offset++] << 8) | data[offset++]));
		if (ig == null)
		{//should never happen
			System.err.println("Caution: groupIndex " + hGroup + " is illegal.");
			return;
		}
		//XXX 嚴(yán)格意義上,應(yīng)該  & 0xFFFF,按考慮到itemCount的值不會(huì)超過32512,故省去
		int itemCount = ((data[offset++] << 8) | data[offset++]);
		boolean hasError = ((data[offset++] << 24) | (data[offset++] << 16)
								  | (data[offset++] << 8) | data[offset++]) != 0;
		ig.ensureCapacity(itemCount);
		Item[] items = ig.cachedActiveItems;
		for (int i = 0; offset < end && i < itemCount; i++)
		{
			//XXX 嚴(yán)格意義上,應(yīng)該 & 0xFFFF,但考慮到data[offset++]<<8的值不會(huì)超過32512,故省去
			items[i] = ig.getItem(((data[offset++] << 8) | data[offset++]));
			if (hasError) offset += 4;//忽略對(duì)變量值錯(cuò)誤的處理
		}

		//ig.fireWriteComplete(new CallbackEvent(ig, itemCount));
	}


	/**
	 * 異步取消操作執(zhí)行完成通知的處理
	 * 遵循2.3版本協(xié)議處理
	 */
	void cancelCompleted(byte[] data, int offset, int length)
	{
		if (length < 6) return;//should never happen//20=4+2
		int end = offset + length;
		offset += 4;//跳過事務(wù)號(hào)
		int hGroup;
		//XXX 嚴(yán)格意義上,應(yīng)該  & 0xFFFF,按考慮到hGroup的值不會(huì)超過32512,故省去
		ItemGroup ig = groupAt(hGroup = ((data[offset++] << 8) | data[offset++]));
		if (ig == null)
		{//should never happen
			System.err.println("Caution: groupIndex " + hGroup + " is illegal.");
			return;
		}

		//ig.fireCancelComplete(new CallbackEvent(ig));
	}


	void debug(String msg)
	{
		System.out.println(msg);
	}

	/**
	 *
	 * 根據(jù)OPC控制中心提供的變量組索引碼查找對(duì)應(yīng)的ItemGroup對(duì)象
	 * @return 如果沒有找到,則返回null,否則返回非負(fù)數(shù)
	 */
	public final ItemGroup groupAt(int groupIndex)
	{
		List groups = this.groups;
		ItemGroup ig;
		if (groups.size() > groupIndex)//多數(shù)情況下groupIndex就是數(shù)組下標(biāo)
		{
			for (int i = groupIndex; i >= 0; i--)
			{
				ig = (ItemGroup)groups.get(i);
				if (ig.index == groupIndex)
				{
					return ig;
				}
			}
		}
		for (int i = groups.size() - 1; i > groupIndex; i--)
		{
			ig = (ItemGroup)groups.get(i);
			if (ig.index == groupIndex)
			{
				return ig;
			}
		}

		return null;
	}

	/**
	 *
	 * 根據(jù)組的ID查找它的ItemGroup對(duì)象在加入的組集合上的索引
	 * @return 如果沒有找到,則返回-1,否則返回非負(fù)數(shù)
	 */
	public final int indexOfGroup(String groupId)
	{
		int index  = -1;
		List groups = this.groups;
		for (int i = groups.size() - 1; i >= 0; i--)
		{
			if (((ItemGroup)groups.get(i)).getName().equals(groupId))
			{
				index = i;
				break;
			}
		}
		return index;
	}

	/**
	 * 根據(jù)組的ID查找它的ItemGroup對(duì)象
	 * @return 如果沒有找到,則返回null
	 */
	public ItemGroup findGroup(String groupId)
	{
		int index = indexOfGroup(groupId);
		return index != -1?getGroup(index):null;
	}

	/**
	 * CommandSent實(shí)現(xiàn)
	 */
	public void request(java.util.List headerStrings) throws IOException
	{
		if (!connected)
		{
			throw new OpcException("Has't connected to OpcCtrl");
		}
		TcpConnection conn = this.getConnection();
		try
		{
			for (int i = 0, n = headerStrings.size(); i < n; i++)
			{
				//System.out.println("  ." + headerStrings.get(i));
				conn.writeHeader((String)headerStrings.get(i));
			}
			//conn.flushHeanders();
			String response = conn.readHeader();
			if (getResultCode(response) != 0)
			{
				throw new OpcException(response);
			}
		}
		finally
		{
			conn.close();
		}
	}


	public int getPortRequest()
	{
		return portRequest;
	}

	/**
	 *
	 * @param portRequest OPC控制中心上的外部請(qǐng)求監(jiān)聽端口
	 */
	public void setPortRequest(int portRequest)
	{
		this.portRequest = portRequest;
	}

	/**
	 *
	 * @return OPC控制中心所在機(jī)器的IP地址
	 */
	public InetAddress getHostRequest()
	{
		return hostRequest;
	}


	public void setHostRequest(InetAddress hostRequest)
	{
		this.hostRequest = hostRequest;
	}

	private int getResultCode(String firstReponseLine)
	{
		int indexDelim = firstReponseLine != null?firstReponseLine.indexOf(DELIMETER):-1;

		return indexDelim != -1?Integer.parseInt(firstReponseLine.substring(0, indexDelim)):Integer.MIN_VALUE;
	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人丝袜视频网| 色综合久久精品| 日韩亚洲欧美在线观看| 午夜精品久久久久久久99水蜜桃| 色狠狠一区二区三区香蕉| 亚洲一区二区av在线| 欧美精选午夜久久久乱码6080| 日韩高清在线不卡| 欧美精品一区二区三区在线| 国产高清一区日本| 亚洲人妖av一区二区| 欧美性大战久久久久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久五月婷婷丁香社区| 成人精品鲁一区一区二区| 一区二区三区成人| 91精品国产一区二区人妖| 国产精品2024| 一区二区国产视频| 91精品啪在线观看国产60岁| 国产剧情一区二区| 玉米视频成人免费看| 欧美一区二区三区四区高清| 成人在线综合网站| 亚洲成人av中文| 久久久久久久久久看片| 色诱视频网站一区| 国产尤物一区二区在线| 亚洲美女区一区| 久久这里只有精品6| 在线看日韩精品电影| 激情丁香综合五月| 亚洲欧美欧美一区二区三区| 欧美变态tickling挠脚心| 91在线观看免费视频| 免费的国产精品| 一区二区三区鲁丝不卡| 久久精品一区二区三区不卡| 欧美片在线播放| 成人午夜免费av| 美脚の诱脚舐め脚责91| 一区二区三区资源| 国产拍揄自揄精品视频麻豆| 欧美电影在线免费观看| 99久久99久久精品免费看蜜桃 | 欧美日韩成人综合在线一区二区| 美女久久久精品| 亚洲第一成人在线| 中文字幕在线免费不卡| 久久夜色精品国产噜噜av| 欧美揉bbbbb揉bbbbb| 99综合影院在线| 国产成人午夜片在线观看高清观看| 亚洲成a人v欧美综合天堂| 中文字幕日韩欧美一区二区三区| 精品播放一区二区| 4hu四虎永久在线影院成人| 99精品黄色片免费大全| 国产精品18久久久久久vr| 免费成人你懂的| 日韩黄色免费电影| 亚洲成av人片一区二区三区| 亚洲欧美另类久久久精品2019| 国产午夜精品一区二区| 亚洲视频在线观看一区| 久久综合九色综合欧美98| 欧美mv日韩mv| 日韩三级电影网址| 欧美一区二区人人喊爽| 欧美人妖巨大在线| 欧洲在线/亚洲| 91福利区一区二区三区| 色猫猫国产区一区二在线视频| 99久久夜色精品国产网站| gogogo免费视频观看亚洲一| 高清国产一区二区| 成人国产电影网| 97久久久精品综合88久久| 91视视频在线直接观看在线看网页在线看| 国产高清无密码一区二区三区| 国产精品夜夜嗨| 成人午夜电影久久影院| 成人精品在线视频观看| 99这里只有精品| 91色九色蝌蚪| 欧美日韩一区二区电影| 777a∨成人精品桃花网| 欧美成人vps| 久久久久久免费网| 国产欧美精品一区二区三区四区 | 久久99深爱久久99精品| 经典三级一区二区| 国产综合久久久久久久久久久久| 国产一区二区在线电影| 成人免费看的视频| 91国偷自产一区二区三区成为亚洲经典| av电影一区二区| 欧美天堂亚洲电影院在线播放| 5858s免费视频成人| 精品国产一区二区三区不卡| 日本一区二区综合亚洲| 一区二区三区电影在线播| 日本欧美肥老太交大片| 国产成人日日夜夜| 色婷婷综合五月| 亚洲伊人色欲综合网| 同产精品九九九| 国产成人av电影在线观看| 色综合久久综合网欧美综合网| 69堂精品视频| 欧美激情一区二区三区全黄| 亚洲综合激情小说| 国产中文字幕一区| 色综合久久中文综合久久97| 日韩网站在线看片你懂的| 国产精品丝袜一区| 天天综合色天天综合色h| 国产一区二区三区四区五区入口| 色狠狠一区二区三区香蕉| 亚洲精品在线一区二区| 樱花草国产18久久久久| 国产在线播放一区| 欧美日韩一二三| 亚洲国产精品99久久久久久久久| 污片在线观看一区二区| 成人av在线播放网址| 日韩一区二区三区免费观看| 亚洲天堂精品视频| 极品少妇一区二区| 欧美性受xxxx| 国产精品久久影院| 久久超碰97中文字幕| 欧美性极品少妇| 亚洲色图在线看| 国产99久久久国产精品潘金网站| 欧美日韩精品电影| 亚洲少妇30p| 国产电影一区二区三区| 欧美一区中文字幕| 一区二区久久久久| 91在线免费视频观看| 欧美激情一区二区三区全黄| 捆绑紧缚一区二区三区视频| 欧美亚洲国产bt| 亚洲人成网站色在线观看| 国产91精品欧美| 精品国产一二三| 美腿丝袜亚洲色图| 欧美另类高清zo欧美| 夜夜揉揉日日人人青青一国产精品| 成人午夜免费电影| 日本一区二区三区久久久久久久久不| 日本特黄久久久高潮| 欧美日本在线播放| 亚洲午夜精品在线| 日本国产一区二区| 亚洲欧洲综合另类| 色哟哟在线观看一区二区三区| 国产精品国产三级国产专播品爱网| 国产一区二区网址| 久久婷婷成人综合色| 韩国午夜理伦三级不卡影院| 日韩一区二区麻豆国产| 视频一区在线播放| 日韩视频123| 久草中文综合在线| 精品国产三级电影在线观看| 麻豆精品精品国产自在97香蕉| 欧美一级日韩不卡播放免费| 免费看欧美女人艹b| 欧美一区二区在线免费播放| 视频一区国产视频| 精品噜噜噜噜久久久久久久久试看 | 欧美日韩国产一级二级| 亚洲一二三四区不卡| 在线播放一区二区三区| 蜜臀久久99精品久久久久宅男| 日韩精品一区二区三区中文不卡| 久久精品久久99精品久久| 精品国产三级电影在线观看| 福利电影一区二区| ●精品国产综合乱码久久久久| 在线视频亚洲一区| 日韩精品午夜视频| 久久久.com| 色天天综合久久久久综合片| 亚洲成人午夜影院| 日韩欧美高清一区| 成人自拍视频在线观看| 亚洲一区二区欧美激情| 在线综合视频播放| 懂色av一区二区在线播放| 亚洲精品一二三区| 欧美另类变人与禽xxxxx| 精品一区二区三区日韩| 综合久久一区二区三区| 777xxx欧美| 成人手机在线视频| 亚洲国产乱码最新视频| 精品欧美乱码久久久久久|