|
|
- /*
- * This class is one end of a test pair of programs
- * SimpleRead.class is the other end.
- * To run the test requires two com ports
- * and a null modem cable.
- * Start SimpleSnuV1 and then run SimpleRead
- * on the other machine/com port.
- * This code is supplied for demonstration purposes only.
- * You are free to use it as you please.
- */
-
-
- import java.io.*;
- import java.util.*;
- import gnu.io.*;
-
- public class SimpleSnuV1 implements Runnable, SerialPortEventListener {
-
- static CommPortIdentifier portId;
- static Enumeration portList;
-
- InputStream inputStream;
- OutputStream outputStream;
- SerialPort serialPort;
- Thread readThread;
-
- int numBytes = 0;
- String num = "021891383";
- String rst = "atz";
- String dial ="atd";
- String outData = "";
- String outDataBuff = "";
- boolean running = true;
- boolean process = true;
- boolean waitForInput = true;
-
- public static void main(String[] args) {
- if (args.length < 1) {
- System.out.print("SimpleSnuV1.class /dev/ttyxx\n");
- System.exit(-1);
- }
- portList = CommPortIdentifier.getPortIdentifiers();
- while (portList.hasMoreElements()) {
- portId = (CommPortIdentifier) portList.nextElement();
- if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
- if (portId.getName().equals(args[0])) {
- SimpleSnuV1 reader = new SimpleSnuV1();
- }
- }
- }
- }
-
- public SimpleSnuV1() {
- try {
- serialPort = (SerialPort) portId.open("SimpleSnu", 2000);
- } catch (PortInUseException e) {}
- try {
- inputStream = serialPort.getInputStream();
- outputStream = serialPort.getOutputStream();
- } catch (IOException e) {}
- try {
- serialPort.setSerialPortParams(19200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
- } catch (UnsupportedCommOperationException e) {}
- byte[] readBuffer = new byte[20];
- try {
- serialPort.addEventListener(this);
- } catch (TooManyListenersException e) {
- System.out.print("To Many Event Listeners\n");
- System.exit(-1);
- }
- serialPort.notifyOnDataAvailable(true);
- readThread = new Thread(this);
- readThread.start();
- }
-
- public void run() {
- int resetCount = 0;
- int numBytes = 0;
- byte[] readBuffer = new byte[20];
- String sReadBuff = "";
- boolean connected = false;
- while (running) {
- if (!connected) {
- try {
- while (inputStream.available() > 0) {
- numBytes = inputStream.read(readBuffer);
- String tmpR = new String(readBuffer);
- sReadBuff += tmpR.substring(0, numBytes);
- }
- } catch (IOException e) {
- System.exit(1);
- }
- if (!sReadBuff.equals("")) {
- System.out.print(sReadBuff + "\n");
- } else {
-
- }
- int pos = 0;
- if ((pos = sReadBuff.indexOf("atz")) != -1) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {}
- try {
- outputStream.write(new String("OK").getBytes());
- outputStream.write((byte)0x0D);
- outputStream.write((byte)0x0A);
- System.out.print("OK Sent\n");
- } catch (IOException e) {
- System.exit(1);
- }
- sReadBuff = "";
- } else if ((pos = sReadBuff.indexOf("atd")) != -1) {
- sReadBuff = "";
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {}
- try {
- outputStream.write(new String("CONNECT 9600").getBytes());
- outputStream.write((byte)0x0D);
- outputStream.write((byte)0x0A);
- // connected = true;
- } catch (IOException e) {
- System.exit(1);
- }
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {}
- }
- } else {
-
- }
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {}
- }
-
- System.out.print("Normal Exit...\n");
- }
- public void serialEvent(SerialPortEvent event) {
- // try {
- // Thread.sleep(500);
- // } catch (InterruptedException e) {}
- switch(event.getEventType()) {
- case SerialPortEvent.BI:
- System.out.print("BI\n");
- break;
- case SerialPortEvent.OE:
- System.out.print("OE\n");
- break;
- case SerialPortEvent.FE:
- System.out.print("FE\n");
- break;
- case SerialPortEvent.PE:
- System.out.print("PE\n");
- break;
- case SerialPortEvent.CD:
- System.out.print("CD\n");
- break;
- case SerialPortEvent.CTS:
- System.out.print("CTS\n");
- break;
- case SerialPortEvent.DSR:
- System.out.print("DSR\n");
- break;
- case SerialPortEvent.RI:
- System.out.print("RI\n");
- break;
- case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
- System.out.print("Out Buff Empty\n");
- break;
- case SerialPortEvent.DATA_AVAILABLE:
- // waitForInput = false;
- System.out.print("Data Available\n");
- break;
- }
- }
- }
-
|