Halli Hallo,
also ich habe ein kleines Problem.
Ich soll in meinem Betrieb eine kleine Schnittstelle Programmieren. Leider habe ich nicht den geringsten Dunst wie ich das anstellen soll...
Beim googlen fand ich den unten angefügten Code. Ich verstehe ihn Teilweise. Leider erkenne ich aber nicht genau an welcher Stelle der Com Port geöffnet wird und anschließend Daten gesendet werden. Das würde mir schon ein wenig Helfen.
lg Topal
also ich habe ein kleines Problem.
Ich soll in meinem Betrieb eine kleine Schnittstelle Programmieren. Leider habe ich nicht den geringsten Dunst wie ich das anstellen soll...
Beim googlen fand ich den unten angefügten Code. Ich verstehe ihn Teilweise. Leider erkenne ich aber nicht genau an welcher Stelle der Com Port geöffnet wird und anschließend Daten gesendet werden. Das würde mir schon ein wenig Helfen.
lg Topal
Java:
import gnu.io.*;
import java.io.IOException;
//import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
//import java.util.TooManyListenersException;
//import OeffnenUndSenden.serialPortEventListener;
public class EinfachSenden implements Runnable {
/**
* @param args
*/
public static void main(String[] args)
{
Runnable runnable = new EinfachSenden();
new Thread(runnable).start();
System.out.println("main finished");
}
/**
*
*/
CommPortIdentifier serialPortId;
Enumeration enumComm;
SerialPort serialPort;
OutputStream outputStream;
// InputStream inputStream;
Boolean serialPortGeoeffnet = false;
int baudrate = 9600;
int dataBits = SerialPort.DATABITS_8;
int stopBits = SerialPort.STOPBITS_1;
int parity = SerialPort.PARITY_NONE;
String portName = "/dev/ttyS0";
int secondsRuntime = 20;
public EinfachSenden()
{
System.out.println("Konstruktor: EinfachSenden");
}
public void run()
{
Integer secondsRemaining = secondsRuntime;
if (oeffneSerialPort(portName) != true)
return;
while (secondsRemaining > 0) {
System.out.println("Sekunden verbleiben: " + secondsRemaining.toString() );
secondsRemaining--;
try {
Thread.sleep(1000);
} catch(InterruptedException e) { }
sendeSerialPort("Testnachricht\n");
}
schliesseSerialPort();
}
boolean oeffneSerialPort(String portName)
{
Boolean foundPort = false;
if (serialPortGeoeffnet != false) {
System.out.println("Serialport bereits geöffnet");
return false;
}
System.out.println("Öffne Serialport");
enumComm = CommPortIdentifier.getPortIdentifiers();
while(enumComm.hasMoreElements()) {
serialPortId = (CommPortIdentifier) enumComm.nextElement();
if (portName.contentEquals(serialPortId.getName())) {
foundPort = true;
break;
}
}
if (foundPort != true) {
System.out.println("Serialport nicht gefunden: " + portName);
return false;
}
try {
serialPort = (SerialPort) serialPortId.open("Öffnen und Senden", 500);
} catch (PortInUseException e) {
System.out.println("Port belegt");
}
try {
outputStream = serialPort.getOutputStream();
} catch (IOException e) {
System.out.println("Keinen Zugriff auf OutputStream");
}
/*
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {
System.out.println("Keinen Zugriff auf InputStream");
}
try {
serialPort.addEventListener(new serialPortEventListener());
} catch (TooManyListenersException e) {
System.out.println("TooManyListenersException für Serialport");
}
serialPort.notifyOnDataAvailable(true);
*/
try {
serialPort.setSerialPortParams(baudrate, dataBits, stopBits, parity);
} catch(UnsupportedCommOperationException e) {
System.out.println("Konnte Schnittstellen-Paramter nicht setzen");
}
serialPortGeoeffnet = true;
return true;
}
void schliesseSerialPort()
{
if ( serialPortGeoeffnet == true) {
System.out.println("Schließe Serialport");
serialPort.close();
serialPortGeoeffnet = false;
} else {
System.out.println("Serialport bereits geschlossen");
}
}
void sendeSerialPort(String nachricht)
{
System.out.println("Sende: " + nachricht);
if (serialPortGeoeffnet != true)
return;
try {
outputStream.write(nachricht.getBytes());
} catch (IOException e) {
System.out.println("Fehler beim Senden");
}
}
}
Zuletzt bearbeitet von einem Moderator: