⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 item.java

📁 用于串口通讯测试的工具软件。完全使用java语言编写。
💻 JAVA
字号:
package com.zcsoft.opc;/** 数据项,或者称变量 * <p>Copyright: Copyright (c) 2005-2006</p> * <p>Company: Zhicheng Software&Service Co. Ltd.</p> * @author 蒋智湘 * @version 1.0 */public class Item{	/** 数据项值的质量种类常量定义 */	public static final short OPC_QUALITY_BAD = 0		, OPC_QUALITY_UNCERTAIN = 0x40		, OPC_QUALITY_GOOD = 0xc0		, OPC_QUALITY_CONFIG_ERROR = 0x4		, OPC_QUALITY_NOT_CONNECTED = 0x8		, OPC_QUALITY_DEVICE_FAILURE = 0xc		, OPC_QUALITY_SENSOR_FAILURE = 0x10		, OPC_QUALITY_LAST_KNOWN = 0x14		, OPC_QUALITY_COMM_FAILURE = 0x18		, OPC_QUALITY_OUT_OF_SERVICE = 0x1c		, OPC_QUALITY_WAITING_FOR_INITIAL_DATA	=	0x20		, OPC_QUALITY_LAST_USABLE = 0x44		, OPC_QUALITY_SENSOR_CAL = 0x50		, OPC_QUALITY_EGU_EXCEEDED = 0x54		, OPC_QUALITY_SUB_NORMAL = 0x58		, OPC_QUALITY_LOCAL_OVERRIDE = 0xd8;	/** 变量的识别码,不包含协议和应用程序名部分 */	String ID;	/**	 * 别名。变量ID可能很长,且含很多格式字符。我们给它取一个简短的人性化别名,	 * 以便简化和加速外部程序对变量的识别。	 */	private String alias;	/** 是否需要及时获取现场主站或从站设备的该变量的最新值 */	boolean active = true;	/** 最近一次取得的值的品质 */	short quality = OPC_QUALITY_GOOD;	///** 值的更新时间 */	//long updateTime;	/** 变量值 */	Variant value;	/** 变量伺服的对象,一般指该变量是哪一台设备上的某个信息量。该对象到底是什么类的实例	 * 只有使用该变量的程序清楚。该属性的赋值和值提取操作仅由该使用该变量的程序完成。 */	private Object owner;	protected Item()	{		value = new Variant();	}	public Item(String id)	{		this();		this.ID = id;	}////	protected Item(Variant value)//	{//		this.setValue(value);//	}	public Item(String id, Variant value)	{		this.setValue(value);		this.ID = id;	}	public String getID()	{		return ID;	}	/**	 *	 * @param ID 变量的名称。不包含协议和应用程序名部分。	 * 将该变量传递给OPC服务器实例,实际传递的变量名为:<code>协议:[应用程序名]ID</code>。	 */	public void setID(String ID)	{		this.ID = ID;	}	/**	 *	 * @param active 是否需要及时获取现场主站或从站设备的该变量的最新值。缺省为true。	 *  对于本实例所在进程进行值写入操作的变量,一般都需要设定为false。由其它进程或设备完成值写入	 * 操作的变量,则设定为true。	 */	public void setActive(boolean active)	{		this.active = active;	}	public boolean isActive()	{		return active;	}	/**	 *	 * @param value 变量的值。	 */	public void setValue(Variant value)	{		if (value == null)		{			throw new NullPointerException("value is null");		}		this.value = value;	}	public Variant getValue()	{		return value;	}	/**	 * 整数形式表示的变量值	 */	public int getIntValue()	{		return value.iValue;	}	public void setIntValue(int intVal)	{		value.iValue = intVal;	}	/**	 * 取出字节流中存储的变量值作为Item的新值,同时返回修改前的值	 * @param data 新值的字节序列所在的容器	 * @param offset data上哪个偏移量开始才是存储新值的字节序列的位置	 * @return 修改前的值	 */	public Variant setValue(byte data[], int offset)	{		Variant old = value;		value = new Variant(old.vt);		switch (old.vt)		{			case Variant.VT_I1:				value.iValue = (data[offset]);				break;			case Variant.VT_I4:				value.iValue = ((data[offset] << 24) | (0xFF0000 & (data[offset + 1] << 16))							  | (0xFF00 & (data[offset + 2] << 8)) | (0xFF & data[offset + 3]));				break;			case Variant.VT_UI2:				value.iValue = ((data[offset] << 8) | data[offset + 1]) & 0xFFFF;				break;			case Variant.VT_UI1:				value.iValue = (data[offset]) & 0xFF;				break;			case Variant.VT_I2:				value.iValue = ((data[offset] << 8) | data[offset + 1]);				break;			default:				//should never happen				System.err.println("Caution: illegal valueType " + value.vt											+ " for item " + ID);		}		return old;	}	public short getQuality()	{		return quality;	}//	public long getUpdateTime()//	{//		return updateTime;//	}	/**	 *	 * @return getID()	 */	public String toString()	{		return ID;	}	public static String getQualityText(short qnr)	{		String qstr;		switch(qnr)		{			case OPC_QUALITY_BAD:			qstr = "bad";				break;			case OPC_QUALITY_UNCERTAIN:		qstr = "uncertain";				break;			case OPC_QUALITY_GOOD:			qstr = "good";				break;			case OPC_QUALITY_NOT_CONNECTED:	qstr = "not_connected";				break;			case OPC_QUALITY_DEVICE_FAILURE:qstr = "device_failure";				break;			case OPC_QUALITY_SENSOR_FAILURE:qstr = "sensor_failure";				break;			case OPC_QUALITY_LAST_KNOWN:    qstr = "last_known";				break;			case OPC_QUALITY_COMM_FAILURE:  qstr = "comm_failure";				break;			case OPC_QUALITY_OUT_OF_SERVICE:qstr = "out_of_service";				break;			case OPC_QUALITY_LAST_USABLE:	qstr = "last_usable";				break;			case OPC_QUALITY_SENSOR_CAL:	qstr = "sensor_cal";				break;			case OPC_QUALITY_EGU_EXCEEDED:  qstr = "egu_exceeded";				break;			case OPC_QUALITY_SUB_NORMAL:	qstr = "sub_normal";				break;			case OPC_QUALITY_LOCAL_OVERRIDE:qstr = "local_override";				break;			default:						qstr = "unknown error";		}		return qstr;	}	public String getAlias()	{		return alias;	}	/**	 * 设定变量的别名。别名往往是简短的,人性化的字符串。	 * 一个变量组上的各个变量的ID是不允许重复的,但别名可以重复。	 */	public void setAlias(String alias)	{		this.alias = alias;	}	public Object getOwner()	{		return owner;	}	public void setOwner(Object owner)	{		this.owner = owner;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -