R
RS232
Gast
Hallo,
habe ein riesen Problem. Ich bekam heute den Auftrag, eine Serielle Schnittstelle (RS232) mit Java anzusprechen und wurde damit so ziemlich ins kalte Wasser geworfen.
Habe jetzt folgendes Programm, welches auch eigentlich ganz gut funktioniert. Allerdings hätte ich gerne, dass die empfangenen Daten in HEX-Werte und nicht in Zeichen dargestellt werden. D.h. wenn ich einen Hex-Wert (40) sende bekomme ich nur ein @ angezeigt. Möchte aber gerne, dass ich auch das 40 angezeigt bekommen.
Hoffe mir kann jemand helfen....wäre sehr dankbar!!!
habe ein riesen Problem. Ich bekam heute den Auftrag, eine Serielle Schnittstelle (RS232) mit Java anzusprechen und wurde damit so ziemlich ins kalte Wasser geworfen.
Habe jetzt folgendes Programm, welches auch eigentlich ganz gut funktioniert. Allerdings hätte ich gerne, dass die empfangenen Daten in HEX-Werte und nicht in Zeichen dargestellt werden. D.h. wenn ich einen Hex-Wert (40) sende bekomme ich nur ein @ angezeigt. Möchte aber gerne, dass ich auch das 40 angezeigt bekommen.
Hoffe mir kann jemand helfen....wäre sehr dankbar!!!
Code:
package RS232;
import java.io.*;
import javax.comm.*;
import java.awt.*;
import java.awt.event.*;
public class comframe extends Frame
{
private static final long serialVersionUID = 1L;
static CommPortIdentifier portID;
InputStream ins;
OutputStream out;
static SerialPort serss;
TextArea ausgabe;
TextField tfe;
Button bt;
public static void main(String[] args){
try{portID = CommPortIdentifier.getPortIdentifier("COM1");
serss = (SerialPort) portID.open("mein_programm",2000);
comframe f = new comframe();
f.setSize(330,250);
//f.show();
f.setVisible(true);
}
catch(Exception exc){System.out.println("Fehler :"+exc);}
}
public comframe() {
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
System.exit(0);
}
});
setLayout(new FlowLayout());
add(tfe=new TextField(40));
tfe.addActionListener(new sendeListener());
add(bt=new Button("Senden"));
bt.addActionListener(new sendeListener());
add(ausgabe=new TextArea("Port COM1 geöffnet\n",7,40));
try {ins = serss.getInputStream();
out = serss.getOutputStream();
serss.addEventListener(new commListener());
}
catch (Exception e) { System.out.println("Fehler: "+e);}
serss.notifyOnDataAvailable(true);
try {serss.setSerialPortParams(28800,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_2 ,
SerialPort.PARITY_NONE);}
catch (UnsupportedCommOperationException e) {}
}
public class sendeListener implements ActionListener{
public void actionPerformed(ActionEvent e){
PrintWriter aus = new PrintWriter(out);
aus.println(tfe.getText());
aus.flush();
aus.close();
}
}
public class commListener implements SerialPortEventListener{
public void serialEvent(SerialPortEvent event) {
if(event.getEventType()==SerialPortEvent.DATA_AVAILABLE){
byte[] readBuffer = new byte[20];
try {
while (ins.available() > 0)
{
int numBytes = ins.read(readBuffer);
System.out.println(numBytes);
}
String nachricht = new String(readBuffer);
ausgabe.append(nachricht);
}
catch (IOException e) {System.out.println("Fehler: "+e);}
}
}
}
}