USB-Infrarot Dongle

Status
Nicht offen für weitere Antworten.

japetos

Mitglied
Guten morgen.

Ich habe einen USB-Infrarot Dongle und möchte etwas von einem Pocket-PC/Handy an ein Programm mit einem Textfeld schicken (ganz simpel).

Wie muß ich vorgehen? Wie ist das mit dem USB (COM,seriell) überhaupt so mit Java?
USB ist doch keine Schnittstelle.
 

moormaster

Top Contributor
japetos hat gesagt.:
Guten morgen.

Ich habe einen USB-Infrarot Dongle und möchte etwas von einem Pocket-PC/Handy an ein Programm mit einem Textfeld schicken (ganz simpel).

Wie muß ich vorgehen? Wie ist das mit dem USB (COM,seriell) überhaupt so mit Java?
USB ist doch keine Schnittstelle.

Müsste der Infrarotadapter nicht als serielle Schnittstelle am System angemeldet sein? Dann müsste es doch für Java gar keinen Unterschied machen, woher diese serielle Schnittstelle kommt, sondern man müsste sie genauso, wie onboard COM Schnittstellen ansprechen können. Demnach müsste es auch eine Bibliothek, welche den nativen Zugriff auf serielle Schnittstellen implementiert, tun oder nicht?
 

japetos

Mitglied
im Gerätemanager wird der USB-IrDA-Dongle nicht unter Anschlüsse(Seriell/COM) angezeigt, sondern unter Infrarotgeräte.

Aber wie kann ich den Port ermitteln?

Hier mal mein Programm:
Code:
import java.io.*;
import javax.comm.*;
import java.awt.*;
import java.awt.event.*;

public class GetDataFromComm 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);
        GetDataFromComm f = new GetDataFromComm();
        f.setSize(330,250);
        f.show();
    }
    catch(Exception exc){System.out.println("Fehler :" + exc);}
  }

  public GetDataFromComm() {
    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);}
   // ein Eventlistener für zu empfangende Daten erzeugt und aktiviert.
   // Schließlich wird die Schnittstelle mit den gewünschten Parametern
   // für die Übertragungsrate e.t.c durch den Methodenaufruf
    serss.notifyOnDataAvailable(true);
    try {serss.setSerialPortParams(2400,
                                   SerialPort.DATABITS_8,
                                   SerialPort.STOPBITS_1 ,
                                   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);}
          String nachricht = new String(readBuffer);
          ausgabe.append(nachricht);
        } 
        catch (IOException e) {System.out.println("Fehler: " + e);}
      }
    }
  } 

}  //  @jve:decl-index=0:visual-constraint="10,10"
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben