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

📄 serialportevent.java

📁 发送短信 接收短信 多种接口com/net/modem 开发库
💻 JAVA
字号:
package org.smslib.helper;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * A serial port event. * <p> * <b>Please note: </b>This is a wrapper around * <code>javax.comm.SerialPortEvent</code> (and so * <code>gnu.io.SerialPortEvent</code>). The API definition is taken from * Sun. So honor them! * </p> *  * @author Jagane Sundar */public class SerialPortEvent{	static private Class<?> classSerialPortEvent;	/** Break interrupt. */	public static final int BI;	/** Carrier detect. */	public static final int CD;	/** Clear to send. */	public static final int CTS;	/** Data available at the serial port. */	public static final int DATA_AVAILABLE;	/** Data set ready. */	public static final int DSR;	/** Framing error. */	public static final int FE;	/** Overrun error. */	public static final int OE;	/** Output buffer is empty. */	public static final int OUTPUT_BUFFER_EMPTY;	/** Parity error. */	public static final int PE;	/** Ring indicator. */	public static final int RI;	static	{		try		{			classSerialPortEvent = Class.forName("javax.comm.SerialPortEvent");		}		catch (ClassNotFoundException e1)		{			try			{				classSerialPortEvent = Class.forName("gnu.io.SerialPortEvent");			}			catch (ClassNotFoundException e2)			{				throw new RuntimeException("SerialPortEvent class not found");			}		}		try		{			// get the value of constants			Field f;			f = classSerialPortEvent.getField("BI");			BI = f.getInt(null);			f = classSerialPortEvent.getField("CD");			CD = f.getInt(null);			f = classSerialPortEvent.getField("CTS");			CTS = f.getInt(null);			f = classSerialPortEvent.getField("DATA_AVAILABLE");			DATA_AVAILABLE = f.getInt(null);			f = classSerialPortEvent.getField("DSR");			DSR = f.getInt(null);			f = classSerialPortEvent.getField("FE");			FE = f.getInt(null);			f = classSerialPortEvent.getField("OE");			OE = f.getInt(null);			f = classSerialPortEvent.getField("OUTPUT_BUFFER_EMPTY");			OUTPUT_BUFFER_EMPTY = f.getInt(null);			f = classSerialPortEvent.getField("PE");			PE = f.getInt(null);			f = classSerialPortEvent.getField("RI");			RI = f.getInt(null);		}		catch (Exception e)		{			throw new RuntimeException(e);		}	}	private Object realObject;	/**	 * Constructs a <code>SerialPortEvent</code> with the specified serial	 * port, event type, old and new values. Application programs should not	 * directly create <code>SerialPortEvent</code> objects.	 * 	 * @param srcport	 *            source parallel port	 * @param eventtype	 *            event type	 * @param oldvalue	 *            old value	 * @param newvalue	 *            new value	 */	public SerialPortEvent(SerialPort srcport, int eventtype, boolean oldvalue, boolean newvalue)	{		if (classSerialPortEvent == null) { throw new RuntimeException("SerialPortEvent class not found"); }		try		{			Constructor<?> constr = classSerialPortEvent.getConstructor(SerialPort.class, int.class, boolean.class, boolean.class);			this.realObject = constr.newInstance(srcport, eventtype, oldvalue, newvalue);		}		catch (Exception e)		{			throw new RuntimeException(e);		}	}	SerialPortEvent(Object obj)	{		if (classSerialPortEvent == null) { throw new RuntimeException("SerialPortEvent class not found"); }		this.realObject = obj;	}	/**	 * Gets the type of this event.	 * 	 * @return integer that can be equal to one of the following static	 *         variables:	 *         <code>BI, CD, CTS, DATA_AVAILABLE, DSR, FE, OE, OUTPUT_BUFFER_EMPTY, PE</code>	 *         or <code>RI</code>.	 * @since CommAPI 1.1	 */	public int getEventType()	{		int eventType;		try		{			Method method = classSerialPortEvent.getMethod("getEventType", (java.lang.Class[]) null);			eventType = (Integer) method.invoke(this.realObject);		}		catch (InvocationTargetException e)		{			throw new RuntimeException(new RuntimeException(e.getTargetException().toString()));		}		catch (Exception e)		{			throw new RuntimeException(e);		}		return eventType;	}	/**	 * Gets the new value of the state change that caused the SerialPortEvent to	 * be propagated. For example, when the CD bit changes, newValue reflects	 * the new value of the CD bit.	 */	public boolean getNewValue()	{		boolean newValue;		try		{			Method method = classSerialPortEvent.getMethod("getNewValue", (java.lang.Class[]) null);			newValue = (Boolean) method.invoke(this.realObject);		}		catch (InvocationTargetException e)		{			throw new RuntimeException(new RuntimeException(e.getTargetException().toString()));		}		catch (Exception e)		{			throw new RuntimeException(e);		}		return newValue;	}	/**	 * Gets the old value of the state change that caused the SerialPortEvent to	 * be propagated. For example, when the CD bit changes, oldValue reflects	 * the old value of the CD bit.	 */	public boolean getOldValue()	{		boolean oldValue;		try		{			Method method = classSerialPortEvent.getMethod("getOldValue", (java.lang.Class[]) null);			oldValue = (Boolean) method.invoke(this.realObject);		}		catch (InvocationTargetException e)		{			throw new RuntimeException(new RuntimeException(e.getTargetException().toString()));		}		catch (Exception e)		{			throw new RuntimeException(e);		}		return oldValue;	}}

⌨️ 快捷键说明

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