kein Datenempfang mit Windows (Java RXTX)

OP #3473242
Lesenswert?
• ▲
▼
Hi, ich hab hier einen Arduino micro, und hab eine Kommunikation laut 
Beispiel http://playground.arduino.cc/Interfacing/Java eingerichtet, 
jetzt kann ich zwar werte mit dem Hyperterminal empfangen aber nicht mit 
meinem Programm. Senden geht. Das selbe Programm unter Linux 
funktioniert auch in beiden Richtungen. Wo liegt mein fehler??
Gast #3473593
Lesenswert?
• ▲
▼
Hi

Könntest du das nochmal genauer erklären. Du meinst, wenn das 
Beispielprogramm auf dem Arduino ist, dann empfängst du was, aber wenn 
dein selber geschribenes Programm drauf ist nicht?

Vielleicht noch einmal ganz ausführlich und klar hinschreiben;)

Noch als Programmtipp: Ich benutze immer hTerm:
http://www.der-hammer.info/terminal/

Finde ich sehr gut. Aber das musst du entscheiden. Siehs dir mal an;)
Persönliche Seite #3473608
Lesenswert?
• ▲
▼
So wie ich das verstehe, wird auf dem PC entweder ein Terminalprogramm 
verwendet, das Daten empfangen kann, oder ein selbstgebautes 
Java-Programm, das nur dann Daten empfangen kann, wenn es unter Linux 
läuft, aber nicht unter Windows.

Der Fehler wird dann wohl in der Ansteuerung der seriellen Schnittstelle 
auf dem PC liegen, nicht auf dem Arduino (was weiß der davon, was am 
anderen Ende des Seriellen Kabels lauert? Eben: Nichts).
OP #3473628
Lesenswert?
• ▲
▼
Also, auf dem Arduino läuft ein einfaches Programm, das sende jede 
sekunde eine zahl, und schaltet bei befehl "ein" einen ausgang. Ich habe 
das Java Programm aus dem Arduino Playground genommen und erst mal 
geschaut ob ich was lesen kann, unter Linux geht es, unter Windows 
nicht, daraufhin hab ich den Hyperterminal gestartet und mit den selben 
einstellungen "COM2" 9600 8N1 die werte vom Arduino bekommen. Daraufhin 
hab ich das Java Programm unter Linux so geändert das ich den Ausgan mit 
dem Befehl an/und ausschalten kann. dasselbe dann in Windows gestartet, 
daraufhin konnte ich den Ausgan schalten, aber keine Werte empfangen.
OP #3474277
Lesenswert?
• ▲
▼
Es wird ja unter Windows noch nicht einmal der SerialPortEventListener 
aufgerufen.
1
try {
2
        serialPort.addEventListener(new serialPortEventListener());
3
      } catch (TooManyListenersException e) {
4
        out.e("TooManyListenersException für Serialport");
5
      }
6
      serialPort.notifyOnDataAvailable(true);

...
1
class serialPortEventListener implements SerialPortEventListener {
2
      public void serialEvent(SerialPortEvent event) {
3
        out.d("serialPortEventlistener");
4
        switch (event.getEventType()) {
5
        case SerialPortEvent.DATA_AVAILABLE:
6
          serialPortDatenVerfuegbar();
7
          break;
8
        case SerialPortEvent.BI:
9
        case SerialPortEvent.CD:
10
        case SerialPortEvent.CTS:
11
        case SerialPortEvent.DSR:
12
        case SerialPortEvent.FE:
13
        case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
14
        case SerialPortEvent.PE:
15
        case SerialPortEvent.RI:
16
        default:
17
        }
18
      }
19
    }

wie gesagt das senden funktioniert.
Persönliche Seite #3474470
Lesenswert?
• ▲
▼
Hendrik Leuchtemann schrieb:
> Es wird ja unter Windows noch nicht einmal der SerialPortEventListener
> aufgerufen.

Na und? Der wird auch nur aufgerufen wenn (nach Meinugn des Treibers) 
Daten vorliegen, falls die Schnittstelle puffert dauert es ggf. (zu) 
lange. Das Eventbasierte Lesen ist meiner Meinung nach auch nicht so 
optimal für eine Streamkommunikation, mach doch mal versuchsweise einen 
Thread der blockierend direkt vom Inputstream liest.
Gast #3475367
Lesenswert?
• ▲
▼
1
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
2
      try {
3
        String inputLine=input.readLine();
4
        System.out.println(inputLine);
...das sieht für mich problematisch aus: Was ist wenn der Puffer noch 
gar keinen Zeilenumbruch enthält? (k.A. wie sich Java da verhält)
Was wenn man bei Data-Available einfach mal ne Messagebox anzeigt oder 
dort nen Haltepunkt setzt? Geht er da jemals rein?
Persönliche Seite #3475848
Lesenswert?
• ▲
▼
Hendrik Leuchtemann schrieb:
> Anbei das Arduino programm und das Java Programm.

Bitte einmal als Zip, sodass man das auch ohne Spezialsoftware lesen 
kann...

bluppdidupp schrieb:
> ..das sieht für mich problematisch aus: Was ist wenn der Puffer noch gar
> keinen Zeilenumbruch enthält?

Dann blockiert der dort... Deshalb ist der Eventbasierte Ansatz hier 
auch komplett für den Abfalleimer.
#3479430
Lesenswert?
• ▲
▼
Naja, soooo exotisch ist RAR jetzt auch wieder nicht. Im Zweifelsfall 
sollte man aber lieber das Format mit der größeren Verbreitung nehmen, 
da hast Du schon Recht.

Und eine einzelne Datei komm_test.ino mit einer Größe von unter einem KB 
noch zu packen, wo die Datei schon auf einem üblichen Datenträger mehr 
Platz belegt als sie Bytes hat, egal ob gepackt oder ungepackt - das 
wiederum ist exotisch. ;-)
Gast #3479986
Lesenswert?
• ▲
▼
Rufus Τ. Firefly schrieb:
> Für Windows ist hier 7zip zu empfehlen, das kann das. Und gegenüber der
> windows-eigenen Zip-"Unterstützung" ist es sowieso zu bevorzugen.

Ich habe mit 7-zipp arge Probleme. Eines morgens stellte ich meinen 
Rechner an und da ging nix mehr mit 7zip, nachdem ein neues 
Windows-Patch eingespielt worden war. Danach machte ich die 
Aktualisierung rückgängig und alles war nicht mehr wie früher. Das 7zip 
war einfach nicht mehr da, es hatte sich verpflüchtigt und später im 
Toaster versteckt.

Ich stellte den Toaster zum Frühstück an und hatte gezippte Brote.

So nen Kääs.
Gast #3480277
Lesenswert?
• ▲
▼
> Ich habe
>das Java Programm aus dem Arduino Playground genommen und erst mal
>geschaut ob ich was lesen kann, unter Linux geht es, unter Windows
>nicht, daraufhin hab ich den Hyperterminal gestartet und mit den selben
>einstellungen "COM2" 9600 8N1 die werte vom Arduino bekommen. Daraufhin
>hab ich das Java Programm unter Linux so geändert das ich den Ausgan mit
>dem Befehl an/und ausschalten kann. dasselbe dann in Windows gestartet,
>daraufhin konnte ich den Ausgan schalten, aber keine Werte empfangen.

Mit diesem Problem hatte ich vor ca. 3/4 Jahren auch mal eine Zeitlang 
gekämpft. Wenn ich recht erinnere, war es ein Fehler in RxTx. Die 
Einstellung der Handshake-Leitungen wir bei Windows und Linux 
unterschiedlich interpretiert. Den genauen Ort kann ich Dir nicht mehr 
sagen. Es sollte helfen, mit den Einstellungen zu spielen oder einen 
Demo Code von RxTx für Windows zu suchen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.