Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Serielle Schnittstelle Daten Empfangen/Senden

Serielle Schnittstelle Daten Empfangen/Senden

Scheduled Pinned Locked Moved German
4 Posts 2 Posters 3.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    tsaG1337
    wrote on 20 Feb 2015, 21:57 last edited by
    #1

    Hallo,

    Ich habe gerade in einem anderen Thread gesehen das auch jemand versucht Daten über die Serielle Schnittstelle zu senden, Ich bin gerade dabei so quasi dasselbe zu basteln. Ich möchte mit einer GUI den Arduino steuern, also Daten empfangen und auch senden. A soll man befehle eintippen können, jedoch sollen auch über Tasten feste befehle gesendet werden, über LEDs (warscheinlich kleine Icons) wird dann ua. der Status angezeigt. Bin leider noch ein ziemlicher Neuling bei Qt (mein erstes Projekt).

    Als Basis dient mir das Terminal beispiel.
    Ein Problem habe ich dort bspw. schon im Design Modus. Dort wird quasi alles als schwarze Terminal fläche genutzt, jedoch hätte ich das Terminal eigentlich einfach als schwarze (oder weisse) Fläche bzw. Textbox im unteren Bereich? Wie verschiebe ich das ganze? Leider ist es keine Box, es wird wohl anscheinend einfach das ganze Fenster genutzt. Wie kann ich das ganze ändern?

    Wenn ich Buttons oder sonstiges in diese gepunktete Fläche ziehe und das Programm dann starte sind diese Buttons nicht vorhanden, meine hinzugefügten Checkboxen in dem "Settingsdialog" jedoch schon, es wird also alles übernommen.

    Grüße

    1 Reply Last reply
    0
    • ? Offline
      ? Offline
      A Former User
      wrote on 22 Feb 2015, 07:29 last edited by
      #2

      Hallo!

      Die Größe und Position von Widgets werden üblicherweise von Layout-Elementen automatisch verwaltet. Guck am besten mal die "Doku":http://qt-project.org/doc/qt-4.8/layout.html hier und dieses "Beispiel":http://qt-project.org/doc/qt-4.8/examples-layouts.html an.

      Gruß!

      1 Reply Last reply
      0
      • T Offline
        T Offline
        tsaG1337
        wrote on 22 Feb 2015, 21:36 last edited by
        #3

        Hi, Danke für die schnelle Antwort.

        Ich habe mittlerweile herausgefunden das es am QPlainTextEdit liegt, dies füllt einfach automatisch die komplette Fläche aus. QPlainTextEdit wird einfach in der Console Klasse gestartet und überdeckt alles was man sich im UI Editor zurecht gebastelt hat.

        Nun suche ich eine Möglichkeit dieses QPlainTextEdit das durch Console erzeugt wird zu entfernen und den Text in eine Textbox (auch PlaintTextEdit?) umzuleiten welche ich im UI Editor eingefügt habe.

        EDIT: Gerade herausgefunden das die UI einfach mit folgendem befehl überschrieben wurde:
        @setCentralWidget(console);@

        Nungut, jetzt geht es daran meinen Text in meine UI TextEdit zu schreiben :)

        EDIT2: So, es funktioniert nun, musste ja einfach nur @ui->textBox->append(data);@ in die readData funktion einfügen.

        Nun habe ich folgendes "Problem", das ist mir schon beim Console beispiel aufgefallen, irgendwie wird nicht der komplette String empfangen, bzw zwischendurch kommt eine Leerzeile (?). Kann auch am Arduino Code liegen, denn ich sende einmal etwas per print() und darauffolgend mit println() (sodass er am Ende einen Zeilenumbruch mitsendet).

        Momentan kommt es nämlich so an:
        @Num
        mer:
        89

        Numm
        er:
        90

        Nu
        mmer
        : 91

        @
        Es sollte jedoch so aussehen:
        @
        Nummer: 89
        Nummer: 90
        Nummer: 91
        @

        EDIT3:
        Problem gelöst indem ich einfach die Baudrate auf 115200 hochgesetzt habe :)

        So, hoffe das hilft!

        1 Reply Last reply
        0
        • T Offline
          T Offline
          tsaG1337
          wrote on 22 Feb 2015, 23:46 last edited by
          #4

          Ich erstelle doch nochmal einen neuen Reply da ich oben das Problem mit dem abgeschnittenen Text doch noch nicht gelöst hattee. Wie mir gerade aufgefallen ist, triggert readyRead() wenn mindestens ein Byte im Buffer ist, dadurch wird meine funktion mehrfach und auch nur mit Bruchstücken aufgerufen...
          Hinzu kommt das ich mein Gerät später mit 9600 Baud betreiben muss....

          Dazu habe ich mir folgende Funktion gebastelt, diese habe ich mit längeren Datenblöcken bis hinunter auf 600 Baud getestet. Als Trennvariable nutze ich das &

          @while (serial->bytesAvailable()!=0){
          QByteArray data = serial->read(1);
          if (data.contains("&"))
          {
          tempString = tempString + "\n";
          logString =tempString + logString;
          tempString = "";
          }
          else {
          tempString += data;
          }
          }@

          1 Reply Last reply
          0

          1/4

          20 Feb 2015, 21:57

          • Login

          • Login or register to search.
          1 out of 4
          • First post
            1/4
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved