📄 commportopen.java~2~
字号:
package keti2;
import java.awt.*;
import java.io.*;
import javax.comm.*;
import java.util.*;
import java.util.StringTokenizer;
/**
* Open a serial port using Java Communications.
*
*/
public class CommPortOpen {
/** How long to wait for the open to finish up. */
public static final int TIMEOUTSECONDS = 30;
/** The baud rate to use. */
public static final int BAUD = 115200;
/** The parent Frame, for the chooser. */
protected Frame parent;
/** The input stream */
protected DataInputStream is;
// protected DataInputStream in;
/** The output stream */
File fFile= new File("c:/a.txt");
RandomAccessFile outf=new RandomAccessFile(fFile,"rw");
//protected FileInputStream filein;
protected FileOutputStream fileout=new FileOutputStream(fFile);
protected DataOutputStream oi= new DataOutputStream(fileout);
protected PrintStream os;
protected BufferedInputStream br;
/** The last line read from the serial port. */
protected String response;
/** A flag to control debugging output. */
protected boolean debug = true;
/** The chosen Port Identifier */
protected CommPortIdentifier thePortID;
/** The chosen Port itself */
protected CommPort thePort;
public static void main(String[] argv)
throws IOException, NoSuchPortException, PortInUseException,
UnsupportedCommOperationException {
new CommPortOpen(null).converse( );
System.exit(0);
}
/* Constructor */
public CommPortOpen(Frame f)
throws IOException, NoSuchPortException, PortInUseException,
UnsupportedCommOperationException {
// Use the PortChooser from before. Pop up the JDialog.
PortChooser chooser = new PortChooser(null);
String portName = null;
do {
chooser.setVisible(true);
// Dialog done. Get the port name.
portName = chooser.getSelectedName( );
if (portName == null)
System.out.println("No port selected. Try again.\n");
} while (portName == null);
// Get the CommPortIdentifier.
thePortID = chooser.getSelectedIdentifier( );
// Now actually open the port.
// This form of openPort takes an Application Name and atimeout.
//
System.out.println("Trying to open " + thePortID.getName( ) +"...");
System.out.println("right here 56");
switch (thePortID.getPortType( )) {
case CommPortIdentifier.PORT_SERIAL:
thePort = thePortID.open("DarwinSys DataComm",
TIMEOUTSECONDS * 1000);
SerialPort myPort = (SerialPort) thePort;
// set up the serial port
myPort.setSerialPortParams(BAUD, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
break;
case CommPortIdentifier.PORT_PARALLEL:
thePort = thePortID.open("DarwinSys Printing",
TIMEOUTSECONDS * 1000);
ParallelPort pPort = (ParallelPort)thePort;
// Tell API to pick "best available mode" - can fail!
// myPort.setMode(ParallelPort.LPT_MODE_ANY);
// Print what the mode is
int mode = pPort.getMode( );
switch (mode) {
case ParallelPort.LPT_MODE_ECP:
System.out.println("Mode is: ECP");
break;
case ParallelPort.LPT_MODE_EPP:
System.out.println("Mode is: EPP");
break;
case ParallelPort.LPT_MODE_NIBBLE:
System.out.println("Mode is: Nibble Mode.");
break;
case ParallelPort.LPT_MODE_PS2:
System.out.println("Mode is: Byte mode.");
break;
case ParallelPort.LPT_MODE_SPP:
System.out.println("Mode is: Compatibility mode.");
break;
// ParallelPort.LPT_MODE_ANY is a "set only" mode;
// tells the API to pick "best mode"; will report the
// actual mode it selected.
default:
throw new IllegalStateException
("Parallel mode " + mode + " invalid.");
}
break;
default: // Neither parallel nor serial??
throw new IllegalStateException("Unknown port type " +
thePortID);
}
// Get the input and output streams
// Printers can be write-only
try {
thePort.setInputBufferSize(400);
is = new DataInputStream(thePort.getInputStream( ));
br = new BufferedInputStream(thePort.getInputStream());
} catch (IOException e) {
System.err.println("Can't open input stream: write-only");
is = null;
}
os = new PrintStream(thePort.getOutputStream( ), true);
oi = new DataOutputStream(thePort.getOutputStream( ));
}
/** This method will be overridden by non-trivial subclasses
* to hold a conversation.
*/
protected void converse( ) throws IOException {
System.out.println("Ready to read and write port.");
// Input/Output code not written -- must subclass.
// Finally, clean up.
if (is != null)
is.close( );
os.close( );
oi.close();
br.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -