📄 serial.java
字号:
//export CLASSPATH=$CLASSPATH:/usr/lib/jvm/java-6-openjdk/jre/lib/comm.jar// derived from SUN's examples in the javax.comm packageimport java.io.*;import java.util.*;import javax.comm.*; // for SUN's serial/parallel port libraries//import gnu.io.*; // for rxtxSerial librarypublic class Serial implements Runnable, SerialPortEventListener { static CommPortIdentifier portId; static CommPortIdentifier saveportId; static Enumeration portList; InputStream inputStream; SerialPort serialPort; Thread readThread; static String messageString = "Hello, world!"; static OutputStream outputStream; static boolean outputBufferEmptyFlag = false; public static Serial get() { boolean portFound = false; String defaultPort; // determine the name of the serial port on several operating systems String osname = System.getProperty("os.name","").toLowerCase(); if ( osname.startsWith("windows") ) { // windows defaultPort = "COM1"; } else if (osname.startsWith("linux")) { // linux defaultPort = "/dev/ttyS0"; // defaultPort ="/dev/ttyUSB0"; } else if ( osname.startsWith("mac") ) { // mac defaultPort = "????"; } else { System.out.println("Sorry, your operating system is not supported"); return null; } /* if (args.length > 0) { defaultPort = args[0]; } */ System.out.println("Set default port to "+defaultPort); // parse ports and if the default port is found, initialized the reader portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (portId.getName().equals(defaultPort)) { System.out.println("Found port: "+defaultPort); portFound = true; // init reader thread return new Serial(); } } } if (!portFound) { System.out.println("port " + defaultPort + " not found."); } return null; } public void Serial() { boolean portFound = false; String defaultPort; // determine the name of the serial port on several operating systems String osname = System.getProperty("os.name","").toLowerCase(); if ( osname.startsWith("windows") ) { // windows defaultPort = "COM1"; } else if (osname.startsWith("linux")) { // linux defaultPort = "/dev/ttyS0"; } else if ( osname.startsWith("mac") ) { // mac defaultPort = "????"; } else { System.out.println("Sorry, your operating system is not supported"); return; } /* if (args.length > 0) { defaultPort = args[0]; } */ System.out.println("Set default port to "+defaultPort); // parse ports and if the default port is found, initialized the reader portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (portId.getName().equals(defaultPort)) { System.out.println("Found port: "+defaultPort); portFound = true; // init reader thread Serial reader = new Serial(); } } } if (!portFound) { System.out.println("port " + defaultPort + " not found."); } } public void initwritetoport() { // initwritetoport() assumes that the port has already been opened and // initialized by "public SerialConnection()" try { // get the outputstream outputStream = serialPort.getOutputStream(); } catch (IOException e) {} try { // activate the OUTPUT_BUFFER_EMPTY notifier serialPort.notifyOnOutputEmpty(true); } catch (Exception e) { System.out.println("Error setting event notification"); System.out.println(e.toString()); System.exit(-1); } } public void writetoport() { System.out.println("Writing \""+messageString+"\" to "+serialPort.getName()); try { // write string to serial port outputStream.write(messageString.getBytes()); } catch (IOException e) {} } public Serial() { // initalize serial port try { serialPort = (SerialPort) portId.open("SimpleReadApp", 2000); } catch (PortInUseException e) {} try { inputStream = serialPort.getInputStream(); } catch (IOException e) {} try { serialPort.addEventListener(this); } catch (TooManyListenersException e) {} // activate the DATA_AVAILABLE notifier serialPort.notifyOnDataAvailable(true); try { // set port parameters serialPort.setSerialPortParams(19200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) {} // start the read thread /*readThread = new Thread(this); readThread.start();*/ } public void write(String message) { initwritetoport(); try { // write string to serial port outputStream.write(message.getBytes()); } catch (IOException e) {} } public void run() { // first thing in the thread, we initialize the write operation initwritetoport(); try { while (true) { // write string to port, the serialEvent will read it writetoport(); Thread.sleep(1000); } } catch (InterruptedException e) {} } public void serialEvent(SerialPortEvent event) { switch (event.getEventType()) { case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent.CD: case SerialPortEvent.CTS: case SerialPortEvent.DSR: case SerialPortEvent.RI: case SerialPortEvent.OUTPUT_BUFFER_EMPTY: break; case SerialPortEvent.DATA_AVAILABLE: // we get here if data has been received byte[] readBuffer = new byte[20]; /* try { // read data while (inputStream.available() > 0) { int numBytes = inputStream.read(readBuffer); } // print data String result = new String(readBuffer); System.out.println("Read: "+result); } catch (IOException e) {} */ break; } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -