tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
336
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    wallace99 wallace99 ist offline Grünschnabel
    Registriert seit
    Aug 2007
    Beiträge
    1
    hallo zusammen,

    ich möchte mit einem über USB angeschlossenen µController kommunizieren. dabei nutze ich von FTDI einen D2XX treiber, um auf den USB als SerialPort zugreifen zu können. mit hyperterminal z.b. klappt die kommunikation und ich erhalte nach dem befehl "#0M" die korrekte antwort. nur nicht mit folgendem code...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    
    import java.io.*;
    import gnu.io.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class comframe extends Frame{
      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("COM3");
            serss = (SerialPort) portID.open("This Programm",0);
            comframe f = new comframe();
            f.setSize(330,250);
            f.show();
        }
        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 COM3 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(19200,
                                       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[15];
            try {
              while (ins.available() > 0)
              {
                  int numBytes = ins.read(readBuffer);
              }
              String nachricht = new String (readBuffer); 
              ausgabe.append(nachricht);
              System.out.println (nachricht);
              }
            catch (IOException e) {System.out.println("Fehler: "+e);}
          }
        }
      }
     
    }

    der port öffnet korrekt und gesendet wird auch, jedoch erhalte ich erst nach einer zufälligen anzahl von sendungen des befehls die entsprechende antwort. ich hoffe jemand kann mir helfen und schonmal danke im voraus.

    gruß
    wallace
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Problem mit µController über COM-Port zu kommunizieren-app.jpg  
     

  2. #2
    Andre_Java Andre_Java ist offline Mitglied Bronze
    Registriert seit
    Oct 2007
    Beiträge
    42
    Das sieht mir nach einem Baudratenproblem aus. Wenn die falsche Baudrate gewählt wurde, kommen nur kryptische Zeichen an.
     

Ähnliche Themen

  1. Wie Controller und View über weak references, z.B. via EventBus, verbinden?
    Von DarthShader im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 24.08.10, 15:53
  2. Über UDP mit Gerät kommunizieren.
    Von soeni1987 im Forum Java Grundlagen
    Antworten: 0
    Letzter Beitrag: 05.07.09, 15:57
  3. VB Programm zum Kommunizieren einer SPS über RS 232
    Von manahi1 im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 02.02.08, 21:24
  4. Platte über RAID-Controller mounten
    Von Janosz im Forum Linux & Unix
    Antworten: 0
    Letzter Beitrag: 05.10.05, 20:05
  5. Controller via Com-Port
    Von monomo im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 27.04.05, 12:53