Announcement

Collapse
No announcement yet.

struct über serial port einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • struct über serial port einlesen

    hallo allerseits

    wir bekommen von unserem helikopter über einen bluetooth adapter daten über den COM4 port rein. diese daten sollen von einem c++ programm gelesen werden. das reicht vorerst schon.

    im internet gibt es viele anleitungen dazu, und an sich daten zu lesen ist kein problem. unsere daten haben allerdings die folgende struktur:

    startbyte1: 'P'
    startbyte2: 'I'

    struct DATA
    {
    unsigned char ident;
    short angvel_pitch;
    short angvel_roll;
    short angvel_yaw;
    short acc_x;
    short acc_y;
    short acc_z;
    long angle_pitch;
    long angle_roll;
    unsigned char pitch;
    unsigned char roll;
    unsigned char thrust;
    unsigned char yaw;
    unsigned char command_status;
    unsigned short timeStamp;
    unsigned char chkSum;

    }

    stopbyte1: 'E'
    stopbyte2: 'Z'

    weiss jemand, wie man es hinbekommen kann, diesen struct einzulesen?
    wir verwenden vorgeschriebene header files von hier: http://www.tetraedre.com/advanced/serial2.php

    das paket "serial2".

    wir haben es so umgebaut, dass nicht einen char, sondern eben unser struct als datenstruktur eingelesen werden soll. es wird compiliert (im moment mit microsoft visual c++ 2008), es liest etwas, aber eben nicht unseren struct, sondern "müll".

    danke im voraus für jede hilfe!

  • #2
    Wer sollte bei den Infos etwas sagen??

    Ok, ich kann prima Strukturen einlesen.
    Christian

    Comment


    • #3
      naja, wenn du so etzwas kannst, dann kannst du mir ja sagenw as du genau brauchst...

      ich wollte nicht von anfang an 4 files an code rein posten, ich dachte das wäre etwas unübersichtlich...

      oder es wäre auch einfach interessant, wie du es anstellst die strukturen einzulesen...

      Comment


      • #4
        "Geht nicht" war noch nie eine Fehlemeldung.

        Debugge dein Programm, erstelle ggf. eine Teststellung.

        Einlesen von Daten über die serielle Schnittstelle mach ich mit CreateFile (wie du es machst ist ja offenbart ein Geheimnis??). Mit ReadFile die Daten an eine vorher angelegte Struktur lesen.

        Wobei du natürlich keine Struktur hast, denn du hast irgendwas, dann DATA, dann wieder irgendwas.

        Mit Irgendwas kann man natürlich nicht beginnen um Daten an die Adresse von DATA zu lesen.

        Sauber wäre hier eine verschachtelte Struktur, die die Start- und Endbytes einschliest
        Christian

        Comment


        • #5
          ich habe keine fehlermeldung.

          wie oben schon beschrieben kompiliert das porgramm, und wir lesen daten ein. wir finden auch die start und stopbytes, sowie den ident, der immer 'd' ist. diese daten werden korrekt angezeigt.

          aber die zahlen dazwischen werden nicht richtig eingelesen bzw interpretiert. ich denke die werden auch als chars gelesen, udn zwar immer ein byte=ein char, statt 2 byte=short etc.

          Comment


          • #6
            aber die zahlen dazwischen werden nicht richtig eingelesen bzw interpretiert. ich denke die werden auch als chars gelesen, udn zwar immer ein byte=ein char, statt 2 byte=short etc.
            Wann könnte das Problem auftreten?

            Da du ja weiterhin keine Angaben machst, WIE du die Daten liest (einzeln Byteweise??) sollte aber

            ReadFile (...,&vonDATA,sizeof(DATA)...);

            Daten ohne dein geschildertes Problem lesen
            Christian

            Comment


            • #7
              Doppelpost: http://www.c-plusplus.de/forum/viewt...is-207127.html

              Comment

              Working...
              X