String seriell empfangen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • [font="Arial"]
    Hi Leute!

    Ich empfange irgendwie nichts über meine seriellen Port.. und könnte da mal dringend eure Hilfe gebrauchen!

    Kurze Zusammenfassung:

    - Befehl von grafische Oberfläche löst Messung aus (Messung dauert ca. 60s)
    - Gerät sendet einen Statusstring mit 43 Zeichen zurück (am Ende ein Linefeed)
    - dieses möchte ich empfangen und später noch im Fenster anzeigen lassen

    hier der Code:

    Ich bekomme jetzt lieder nichts als Antwort ausgegeben. Mit dem senden funktioniert es einwandfrei. Der String kommt auch am Pin an!

    Das die Flag nur bei Usb nötig ist das der UART eigentlich wohl die ganze Zeit offen ist weiß ich.

    Wenn es viel einfacher geht ist es auch okay.. aber im Moment hänge ich hier..

    Danke im voraus![/font]

    falls manche Einrückungen nicht stimmen wie unten das print Antwort.. nicht stören lassen wenn ich es schreibe ist es richtig wird hier nur irgendwie falsch angezeigt.... ist bündig mit den if- Anweisungen.

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:

    Einmal editiert, zuletzt von Kornfeld (19. September 2014 um 15:27)

  • Dein Code ist unvollständig, man sieht nicht wirklich alle Anweisungen...
    Deine Gänsefüßchen-oben sehen aber auch seltsam aus... Deine:

    Code

    und

    Code

    Vs. die normalen:

    Code
    "

    ..da ließe sich schlussfolgern das der Code von irgendeinem Blog copy&pasted wurde, aber dieser Blog ein paar Zeichen vermurkst hat...

    Um UART verwenden zu können muss das erst freigeschaltet werden, siehe dazu: UART freischalten

    Und bezüglich Strings über Serial zu empfangen siehe: RoPi_Socket.py
    Du solltest da auf jedenfall ein paar mehr Checks einbauen, ob Open() usw überhaupt funktioniert hat. Siehe dazu auch >> hier <<


    Und zu guter letzt: Womit schreibst du den Code? Von wegen Einrückungen: Kanns sein das du TABs und Leerzeichen vermischt hast? Das mag dann zwar "bündig" aussehen, ist es aber nicht wirklich ;)

  • Hi,

    ja da ich es über vnc nicht kopieren konnte habe ich es in word eingetippt und von da kopiert...

    Ich muss zu meiner Schande gestehen das ich mich am Levelshifter um einen Pin vertan habe... dadurch kam eben doch nichts mehr an...

    ..jetzt sehe ich den vollständigen String..

    Wenn der Code anständig eingerückt wird ist er gut und nutzbar! Dort ist alles mit TAB!!

    Wie kann man z.B. Text kopieren vom Pi?? Dann kann ich hier auch die eine oder andere Anleitung schreiben...

    Und für das vertauschte kabel schande auf mein haupt!

    Schreiben tue ich einfach im Editor ^^ (nano)...

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:

  • Moin,
    Frage am Rande: Du schickst explizit "\r\n" am ende eines Strings ...
    Hast Du mal sicherheitshalber kontrolliert, ob Du auch beide Zeichen komplett ausliest?
    M.E. ist das überflüssig, denn dadurch gibst Du schon die "Windows-" Variante des Zeilen-Ende vor.
    Ich würd' das weglassen und wenn möglich und nur die Nettodaten schicken. Das LF resp. CR/LF macht dann schon das Empfangsprogramm bei einer evtl. Ausgabe ...

    cheers,
    -ds-

  • Also den LF kann ich weglassen.. an sich auch beides.. aber der Befehl wird vorerst zu einem Arduino Mega gesendet... und dort lese ich den Befehl, welcher durchaus auch anders lauten kann bis zum "\r" ein. Das habe ich dort definiert als Ende für das einlesen in den Buffer. Das ist im Arduino dann schon nicht mehr zu sehen dort kommt dann nur noch der Befehl ohne "\r" durch.

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:

  • Ist halt imho unnötiges Rumgehampel wegen irgendwelchen Zeichen, die Dir dann irgendwann möglicherweise Probleme bereiten ... deshalb.
    Aber ich denke, das passt dann schon ... man sollte sich halt das Leben nicht unnötig schwer machen.
    Ich schreib z.B. die Gesamtlänge als ASCII in die ersten z.B. drei Bytes (078 oder so) ... damit weiss ich, was noch fehlt ...
    Vielleicht kannst Du Dir ja -> hier <- noch ein paar Anregungen holen.

    cheers,
    -ds-

  • Wie kann man z.B. Text kopieren vom Pi?? Dann kann ich hier auch die eine oder andere Anleitung schreiben...

    • In PuTTY einfach mit der Maus den Text markieren, damit wird es automatisch in die Zwischenablage kopiert. Dann einfach in deinen Windows Editor einfügen.

      • In anderen Terminal Programmen ist das ähnlich, kann aber vor kommen das man dann die rechte Maustaste erst noch drücken muss und dann wie gewohnt "Kopieren" auswählen.
        Aber Achtung: In PuTTY ist die rechte Maustaste -> Einfügen!
    • Eine Windowsfreigabe auf den PI mounten und dann wahlweise jedesmal die Datei dort rein kopieren, oder eine Verknüpfung erstellen o.ä. Dann die Datei regulär mit einem Linux-Kompatiblen Editor (!wichtig!) wie zB notepad++ oder UltraEdit oder Proton öffnen...
    • Sofern der Terminal Klient zmodem unterstützt mithilfe des Pakets lrzsz Dateien einfach hin und her schicken...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!