1 | package usb;
|
2 |
|
3 | import gnu.io.*;
|
4 |
|
5 | import java.io.IOException;
|
6 | import java.io.InputStream;
|
7 | import java.io.OutputStream;
|
8 | import java.util.Enumeration;
|
9 | import java.util.TooManyListenersException;
|
10 |
|
11 | //import OeffnenUndSenden.serialPortEventListener;
|
12 |
|
13 |
|
14 |
|
15 | public class Main implements Runnable {
|
16 |
|
17 | /**
|
18 | * @param args
|
19 | */
|
20 | public static void main(String[] args)
|
21 | {
|
22 | Runnable runnable = new Main();
|
23 | new Thread(runnable).start();
|
24 | System.out.println("main finished");
|
25 | }
|
26 |
|
27 | /**
|
28 | *
|
29 | */
|
30 |
|
31 | CommPortIdentifier serialPortId;
|
32 | Enumeration enumComm;
|
33 | SerialPort serialPort;
|
34 | OutputStream outputStream;
|
35 | InputStream inputStream;
|
36 | Boolean serialPortGeoeffnet = false;
|
37 |
|
38 | int baudrate = 460800;
|
39 | int dataBits = SerialPort.DATABITS_8;
|
40 | int stopBits = SerialPort.STOPBITS_1;
|
41 | int parity = SerialPort.PARITY_NONE;
|
42 | int fluss = SerialPort.FLOWCONTROL_NONE;
|
43 | String portName = "/dev/ttyUSB0";
|
44 |
|
45 | int secondsRuntime = 60;
|
46 |
|
47 | public Main()
|
48 | {
|
49 | System.out.println("Konstruktor: EinfachSenden");
|
50 | }
|
51 |
|
52 | public void run()
|
53 | {
|
54 | Integer secondsRemaining = secondsRuntime;
|
55 | if (oeffneSerialPort(portName) != true)
|
56 | return;
|
57 |
|
58 | while (secondsRemaining > 0) {
|
59 | System.out.println("Sekunden verbleiben: " + secondsRemaining.toString() );
|
60 | secondsRemaining--;
|
61 | try {
|
62 | Thread.sleep(2000);
|
63 | } catch(InterruptedException e) { }
|
64 | sendeSerialPort("@128001disc;&");
|
65 | }
|
66 | schliesseSerialPort();
|
67 |
|
68 |
|
69 | }
|
70 |
|
71 | boolean oeffneSerialPort(String portName)
|
72 | {
|
73 | Boolean foundPort = false;
|
74 | if (serialPortGeoeffnet != false) {
|
75 | System.out.println("Serialport bereits geöffnet");
|
76 | return false;
|
77 | }
|
78 | System.out.println("Öffne Serialport");
|
79 | enumComm = CommPortIdentifier.getPortIdentifiers();
|
80 | while(enumComm.hasMoreElements()) {
|
81 | serialPortId = (CommPortIdentifier) enumComm.nextElement();
|
82 | if (portName.contentEquals(serialPortId.getName())) {
|
83 | foundPort = true;
|
84 | break;
|
85 | }
|
86 | }
|
87 | if (foundPort != true) {
|
88 | System.out.println("Serialport nicht gefunden: " + portName);
|
89 | return false;
|
90 | }
|
91 | try {
|
92 | serialPort = (SerialPort) serialPortId.open("Öffnen und Senden", 500);
|
93 | } catch (PortInUseException e) {
|
94 | System.out.println("Port belegt");
|
95 | }
|
96 |
|
97 | try {
|
98 | outputStream = serialPort.getOutputStream();
|
99 | } catch (IOException e) {
|
100 | System.out.println("Keinen Zugriff auf OutputStream");
|
101 | }
|
102 |
|
103 | try {
|
104 | inputStream = serialPort.getInputStream();
|
105 | } catch (IOException e) {
|
106 | System.out.println("Keinen Zugriff auf InputStream");
|
107 | }
|
108 | try {
|
109 | serialPort.addEventListener(new serialPortEventListener());
|
110 | } catch (TooManyListenersException e) {
|
111 | System.out.println("TooManyListenersException für Serialport");
|
112 | }
|
113 | serialPort.notifyOnDataAvailable(true);
|
114 | try {
|
115 | serialPort.setSerialPortParams(baudrate, dataBits, stopBits, parity);
|
116 | serialPort.setFlowControlMode(fluss);
|
117 | } catch(UnsupportedCommOperationException e) {
|
118 | System.out.println("Konnte Schnittstellen-Paramter nicht setzen");
|
119 | }
|
120 |
|
121 | serialPortGeoeffnet = true;
|
122 | return true;
|
123 | }
|
124 |
|
125 | void schliesseSerialPort()
|
126 | {
|
127 | if ( serialPortGeoeffnet == true) {
|
128 | System.out.println("Schließe Serialport");
|
129 | serialPort.close();
|
130 | serialPortGeoeffnet = false;
|
131 | } else {
|
132 | System.out.println("Serialport bereits geschlossen");
|
133 | }
|
134 | }
|
135 |
|
136 | void serialPortDatenVerfuegbar() {
|
137 | try {
|
138 | byte[] data = new byte[150];
|
139 | int num;
|
140 | while(inputStream.available() > 0) {
|
141 | num = inputStream.read(data, 0, data.length);
|
142 | System.out.println("Empfange: "+ new String(data, 0, num));
|
143 | }
|
144 |
|
145 | } catch (IOException e) {
|
146 | System.out.println("Fehler beim Lesen empfangener Daten");
|
147 | }
|
148 | }
|
149 |
|
150 | void sendeSerialPort(String nachricht)
|
151 | {
|
152 | System.out.println("Sende: " + nachricht);
|
153 | if (serialPortGeoeffnet != true)
|
154 | return;
|
155 | try {
|
156 | outputStream.write(nachricht.getBytes());
|
157 | } catch (IOException e) {
|
158 | System.out.println("Fehler beim Senden");
|
159 | }
|
160 | }
|
161 |
|
162 |
|
163 | class serialPortEventListener implements SerialPortEventListener {
|
164 | public void serialEvent(SerialPortEvent event) {
|
165 | System.out.println("serialPortEventlistener");
|
166 | switch (event.getEventType()) {
|
167 | case SerialPortEvent.DATA_AVAILABLE:
|
168 | serialPortDatenVerfuegbar();
|
169 | break;
|
170 | case SerialPortEvent.BI:
|
171 | case SerialPortEvent.CD:
|
172 | case SerialPortEvent.CTS:
|
173 | case SerialPortEvent.DSR:
|
174 | case SerialPortEvent.FE:
|
175 | case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
|
176 | case SerialPortEvent.PE:
|
177 | case SerialPortEvent.RI:
|
178 | default:
|
179 | }
|
180 | }
|
181 | }
|
182 | }
|