📄 nullserialport.java
字号:
/*
* @(#)NullSerialPort.java 1.12 98/06/25 SMI
*
* Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved.
*
* Sun grants you ("Licensee") a non-exclusive, royalty free, license
* to use, modify and redistribute this software in source and binary
* code form, provided that i) this copyright notice and license appear
* on all copies of the software; and ii) Licensee does not utilize the
* software in a manner which is disparaging to Sun.
*
* This software is provided "AS IS," without a warranty of any kind.
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
* ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
* LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE
* SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS
* BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES,
* HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING
* OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control
* of aircraft, air traffic, aircraft navigation or aircraft
* communications; or in the design, construction, operation or
* maintenance of any nuclear facility. Licensee represents and
* warrants that it will not use or redistribute the Software for such
* purposes.
*/
package samples.NullDriver;
import java.io.*;
import java.util.TooManyListenersException;
import javax.comm.*;
class NullSerialPort extends SerialPort {
NullSerialPort(String name) throws IOException {
this.name = name;
}
private InputStream ins;
public InputStream getInputStream() throws IOException {
if (closed) throw new IllegalStateException("Port Closed");
return ins;
}
private OutputStream outs;
public OutputStream getOutputStream() throws IOException {
if (closed) throw new IllegalStateException("Port Closed");
return outs;
}
/**
* The following methods deal with receive thresholds
*/
private int rcvThreshold = -1;
public void enableReceiveThreshold(int thresh)
throws UnsupportedCommOperationException {
if (closed) throw new IllegalStateException("Port Closed");
rcvThreshold = thresh;
}
public void disableReceiveThreshold() {
if (closed) throw new IllegalStateException("Port Closed");
rcvThreshold = -1;
}
public boolean isReceiveThresholdEnabled() {
if (closed) throw new IllegalStateException("Port Closed");
return rcvThreshold != -1;
}
public int getReceiveThreshold() {
if (closed) throw new IllegalStateException("Port Closed");
return rcvThreshold;
}
/**
* The following methods deal with receive timeouts
*/
int rcvTimeout = -1;
public void enableReceiveTimeout(int rcvTimeout)
throws UnsupportedCommOperationException {
if (closed) throw new IllegalStateException("Port Closed");
this.rcvTimeout = rcvTimeout;
}
public void disableReceiveTimeout() {
if (closed) throw new IllegalStateException("Port Closed");
this.rcvTimeout = -1;
}
public int getReceiveTimeout() {
if (closed) throw new IllegalStateException("Port Closed");
return rcvTimeout;
}
public boolean isReceiveTimeoutEnabled() {
if (closed) throw new IllegalStateException("Port Closed");
return rcvTimeout == -1 ? false : true;
}
/**
* The following methods deal with receive framing
*/
private boolean framing = false;
private int framingByte;
boolean framingByteReceived;
public void disableReceiveFraming() {
if (closed) throw new IllegalStateException("Port Closed");
framing = false;
}
public void enableReceiveFraming(int framingByte)
throws UnsupportedCommOperationException {
if (closed) throw new IllegalStateException("Port Closed");
framing = true;
this.framingByte = framingByte & 0xff;
}
public int getReceiveFramingByte() {
if (closed) throw new IllegalStateException("Port Closed");
return framingByte;
}
public boolean isReceiveFramingEnabled() {
if (closed) throw new IllegalStateException("Port Closed");
return framing;
}
public void setInputBufferSize(int size) {
if (closed) throw new IllegalStateException("Port Closed");
}
public int getInputBufferSize() {
if (closed) throw new IllegalStateException("Port Closed");
return 0;
}
public void setOutputBufferSize(int size) {
if (closed) throw new IllegalStateException("Port Closed");
}
public int getOutputBufferSize() {
if (closed) throw new IllegalStateException("Port Closed");
return 0;
}
/* Serial Port methods */
private int baudrate;
private int parity;
private int dataBits;
private int stopBits;
private int flowcontrol;
public int getBaudRate() {
if (closed) throw new IllegalStateException("Port Closed");
return baudrate;
}
public int getDataBits() {
if (closed) throw new IllegalStateException("Port Closed");
return dataBits;
}
public int getStopBits() {
if (closed) throw new IllegalStateException("Port Closed");
return stopBits;
}
public int getParity() {
if (closed) throw new IllegalStateException("Port Closed");
return parity;
}
public void setFlowControlMode(int flowcontrol)
throws UnsupportCommOperationException {
if (closed) throw new IllegalStateException("Port Closed");
this.flowcontrol = flowcontrol;
}
public int getFlowControlMode() {
if (closed) throw new IllegalStateException("Port Closed");
return flowcontrol;
}
public void setSerialPortParams(int baudrate, int dataBits,
int stopBits, int parity) throws UnsupportedCommOperationException {
if (closed) throw new IllegalStateException("Port Closed");
this.baudrate = baudrate;
this.parity = parity;
this.dataBits = dataBits;
this.stopBits = stopBits;
}
public void sendBreak(int millis) {
if (closed) throw new IllegalStateException("Port Closed");
}
private boolean dtr = true;
public void setDTR(boolean dtr) {
if (closed) throw new IllegalStateException("Port Closed");
/*
* Illegal to change state of DTR when hardware flow control is on
*/
if ((flowcontrol & FLOWCONTROL_RTSCTS_IN) == FLOWCONTROL_RTSCTS_IN) {
return;
}
this.dtr = dtr;
}
public boolean isDTR() {
if (closed) throw new IllegalStateException("Port Closed");
return dtr;
}
private boolean rts = true;
public void setRTS(boolean rts) {
if (closed) throw new IllegalStateException("Port Closed");
/*
* Illegal to change state of RTS when hardware flow control is on
*/
if ((flowcontrol & FLOWCONTROL_RTSCTS_IN) == FLOWCONTROL_RTSCTS_IN) {
throw new IllegalStateException(
"Cannot modify RTS when Hardware flowcontrol is on.");
}
this.rts = rts;
}
public boolean isRTS() {
if (closed) throw new IllegalStateException("Port Closed");
return rts;
}
public boolean isCTS() {
if (closed) throw new IllegalStateException("Port Closed");
return true;
}
public boolean isDSR() {
if (closed) throw new IllegalStateException("Port Closed");
return true;
}
public boolean isRI() {
if (closed) throw new IllegalStateException("Port Closed");
return false;
}
public boolean isCD() {
if (closed) throw new IllegalStateException("Port Closed");
return true;
}
public synchronized void addEventListener(SerialPortEventListener lsnr)
throws TooManyListenersException
{
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void removeEventListener() {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnDataAvailable(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnOutputEmpty(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnCTS(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnDSR(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnCarrierDetect(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnRingIndicator(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnOverrunError(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnParityError(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnFramingError(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
public synchronized void notifyOnBreakInterrupt(boolean notify) {
if (closed) throw new IllegalStateException("Port Closed");
}
/* finalizer. so we can close the comm port and release native resources */
protected void finalize() throws Throwable {
}
private boolean closed = false;
public void close() {
closed = true;
/*
* WARNING *** WARNING *** WARNING *** WARNING *** WARNING *** WARNING
* AFTER YOU ARE DONE WITH YOUR OWN close() processing,
* YOU MUST MAKE THIS CALL TO CommPort's close(). OTHERWISE
* CommPort's HOUSEKEEPING WILL FAIL.
* WARNING *** WARNING *** WARNING *** WARNING *** WARNING *** WARNING
*/
super.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -