Dafür brauchst du eine spezielle Libary. Ich kann dir leider nicht verraten, wo man die bekommt, aber ich kann dir sagen wie sie heißt: javax.comm
Zu dem Thema gibt es in Software, Algorithmen und KI auch einen Thread mit einer ähnlichen Frage. Da geht es um die Steuerung des COM-Ports über eine Website mithilfe eines Applets.
Hier ist ein Codefetzen (copyright Jochen Steinmann):
Code:
class RS232Driver
{
/**Vector für Dateneinlesen*/
public static Vector rs232vector = new Vector();
/** Port-Identifier*/
public static CommPortIdentifier portId;
/**Serielle Schnittstelle*/
public static SerialPort RS232port;
/** RS232-Input-Stream*/
public static InputStream RS232in;
/** RS232-Output-Stream*/
public static OutputStream RS232out;
PrintWriter Out;
/**Methode zum Testen des Vektors*/
public void testvector()
{
for(int i=0;i<50;i++)
{
rs232vector.add("test");
}
checkvector();
}
/**Port öffnen*/
public void openport(String comname,PrintWriter Out)
{
try
{
CommPortIdentifier cpi = CommPortIdentifier.getPortIdentifier(comname);
if(cpi.getPortType() == cpi.PORT_SERIAL)
{
RS232port = (SerialPort)cpi.open("server",1000);
RS232port.setSerialPortParams(9600,RS232port.DATABITS_8,
RS232port.STOPBITS_1,
RS232port.PARITY_NONE);
RS232port.enableReceiveTimeout(2000);
System.out.println(" "+RS232port.getName()+" wurde geöffnet");
Out.println("Schnittstelle geoeffnet
");
}
}
catch(Exception e)
{
Out.println(e);
System.out.println(e);
}
try
{
RS232in = RS232port.getInputStream();
RS232port.notifyOnDataAvailable(true);
RS232out = RS232port.getOutputStream();
RS232port.addEventListener(new commListener());
}
catch (Exception e) { System.out.println("Fehler: "+e);}
}
/** Serielle Schnittstelle schliessen */
public static void closeRS232()
{
if(RS232port != null)
{
RS232port.close();
//Out.println(" Schnittstelle wurde geschlossen");
}
}
/** STRING auf die RS232 ausgeben*/
public void writeRS232(String ausgabe,PrintWriter Out)
{
if (RS232port != null)
{
PrintWriter aus = new PrintWriter(RS232out);
aus.println(ausgabe);
aus.flush();
aus.close();
}
}
/** CHAR auf die RS232 ausgeben*/
public void writecharRS232(char ausgabe,PrintWriter Out)
{
if (RS232port != null)
{
PrintWriter aus = new PrintWriter(RS232out);
aus.print(ausgabe);
aus.flush();
aus.close();
}
}
/**Vektor auslesen*/
public void getrs232vector(PrintWriter Out)
{
for(int i=0;i<rs232vector.size();i++)
{
Out.println("RS232> "+(String)rs232vector.get(i)+"
");
}
Out.println();
}
/**Vektor auf Länge überprüfen und trimmen*/
public void checkvector()
{
if(rs232vector.size()>50)
{
rs232vector.remove(0);
}
}
/** Klasse für die permanente Datenaufzeichnung der seriellen Schnittstelle
* @author Jochen Steinmann
* @version 1.0
* @since 1.0
*/
public class commListener implements SerialPortEventListener{
int z = 0;
public void serialEvent(SerialPortEvent event) {
if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE){
byte[] readBuffer = new byte[20];
try {
while (RS232in.available() > 0) {int numBytes = RS232in.read(readBuffer);}
String nachricht = new String(readBuffer);
rs232vector.add(nachricht);
checkvector();
}
catch (IOException e) {System.out.println("Fehler: "+e);}
}
}
}
Hoffe, ich konnte dir weiterhelfen.
Gruß
Lesezeichen