Auslesen aus einer Struktur!



  • Hallo, jetzt frag ich nochmal.

    Habe folgende Struktur:

    typedef struct _T_PBDAAK_BUSPARAMETER
    {
    T_PBDAAK_TIMESTAMP TimeStamp;

    unsigned long BusCycleNumber;
    unsigned long PollCycleNumber;

    T_PBDAAK_TIMESTAMP CycleTime;
    T_PBDAAK_TIMESTAMP CycleDuration;
    T_PBDAAK_TIMESTAMP PollCycleTime;
    T_PBDAAK_TIMESTAMP PollCycleDuration;

    unsigned short MinIdle1Time;
    unsigned short MaxIdle1Time;

    unsigned short MinIdle2Time;
    unsigned short MaxIdle2Time;

    unsigned short MinSlotTime;
    unsigned short MaxSlotTime;

    unsigned char Baudrate;
    unsigned char MasterAddress;

    T_PBDAAK_OPERATION_MODE OperationMode;

    unsigned long Ttr;
    unsigned long MinSlaveInterval;

    unsigned short MaxAcyclicServicesPerPollCycle;

    T_BITFIELD128 SlaveAddresses;

    } T_PBDAAK_BUSPARAMETER;

    diese wird mit der Funktion
    extern T_PBDAAK_RESULT pbdaak_get_bus_parameter(unsigned short,BUSPARAMETER*);

    aufgerufen.
    Eine weitere Definition ist T_PBDAAK_BUSPARAMETER BusParameter;
    Sowohl die Struktur als auch die Funktion sind inkludiert. Der Inhalt der Struktur wird aus einem File ausgelesen. Diesen Inhalt will ich mir nun anzeigen lassen. (liegt im Binärmodus vor, so viel ich weiss, lauter komische Zeichen, wenn im Editor geöffnet).
    Komme da aber nicht weiter. Wenn ich im Visual C++ die Ausgabe über ListBox (mit AddString usw.) machen will zeigt er mir zwar beim Schreiben von BusParameter. (jetzt klappt ein Menü auf) die Inhalte der Struktur an, aber es wird immer nur 0 ausgegeben (%d, %i, %f, %c).
    Bsp.:
    buspara.Format("Baudrate: %d, Masteradresse: %s,SlaveAdresse:%",
    BusParameter.Baudrate, BusParameter.MasterAddress, BusParameter.SlaveAddresses);

    buspara ist als CString deklariert.

    Vielen Dank im Voraus 🙂



  • 1. Bentuze bitte die CODE-TAGS

    siecht viel übersichtlicher aus

    2. funktioniert die einlese funktion auch sicher richtig?

    Teste mal

    a) mit debugger ( mein vorschlag )
    b) der anti-debugger "trick"

    unsigned long longi;
    longi = BusParameter.BusCycleNumber; // schön die Codetags, nichtwahr?
    

    Wenn alles richtig eingelesen ist, erst dann würd ich mit und den CString format kümmern und wenn es da stimmt, dann die ausgabe



  • Und noch mal:

    The Real Psychodad schrieb:

    Hallo, jetzt frag ich nochmal.

    Habe folgende Struktur:

    typedef struct _T_PBDAAK_BUSPARAMETER
    {
      T_PBDAAK_TIMESTAMP        TimeStamp;
    
      unsigned long             BusCycleNumber;
      unsigned long             PollCycleNumber;
    
      T_PBDAAK_TIMESTAMP        CycleTime;
      T_PBDAAK_TIMESTAMP        CycleDuration;
      T_PBDAAK_TIMESTAMP        PollCycleTime;
      T_PBDAAK_TIMESTAMP        PollCycleDuration;
    
      unsigned short            MinIdle1Time;
      unsigned short            MaxIdle1Time;
    
      unsigned short            MinIdle2Time;
      unsigned short            MaxIdle2Time;
    
      unsigned short            MinSlotTime;
      unsigned short            MaxSlotTime;
    
      unsigned char             Baudrate;
      unsigned char             MasterAddress;
    
      T_PBDAAK_OPERATION_MODE   OperationMode;
    
      unsigned long             Ttr;
      unsigned long             MinSlaveInterval;
    
      unsigned short            MaxAcyclicServicesPerPollCycle;
    
      T_BITFIELD128             SlaveAddresses;
    
    } T_PBDAAK_BUSPARAMETER;
    

    diese wird mit der Funktion

    extern T_PBDAAK_RESULT  pbdaak_get_bus_parameter(unsigned short,BUSPARAMETER*);
    

    aufgerufen.
    Eine weitere Definition ist

    T_PBDAAK_BUSPARAMETER BusParameter;
    

    Sowohl die Struktur als auch die Funktion sind inkludiert. Der Inhalt der Struktur wird aus einem File ausgelesen. Diesen Inhalt will ich mir nun anzeigen lassen. (liegt im Binärmodus vor, so viel ich weiss, lauter komische Zeichen, wenn im Editor geöffnet).
    Komme da aber nicht weiter. Wenn ich im Visual C++ die Ausgabe über ListBox (mit AddString usw.) machen will zeigt er mir zwar beim Schreiben von BusParameter. (jetzt klappt ein Menü auf) die Inhalte der Struktur an, aber es wird immer nur 0 ausgegeben (%d, %i, %f, %c).
    Bsp.:

    buspara.Format("Baudrate: %d, Masteradresse: %s,SlaveAdresse:%",
    BusParameter.Baudrate, BusParameter.MasterAddress, BusParameter.SlaveAddresses);
    

    buspara ist als CString deklariert.

    Vielen Dank im Voraus 🙂

    Haltepunkte setzen und Debuger benutzen.
    Es hilft uns nichts wenn du hier die Struktur Postest.
    Interessant wäre wie du in die Datei schreibst, bzw. aus der Datei liest.
    Meld dich wieder wenn du mit Debugen keine Lösung findest (mit CODE 😉 ).

    Mfg, BigSigi



  • nochmals zur allg. vorgehensweise

    nicht fragen

    "warum wird in der listbox nur 0 angezeigt"

    sondern step by step gehen

    1. funktioniert das einlesen aus der funktion

    2. wenn ja, dann probiert die werte richtig in den CString zu bringen

    3. wenn das auch klappte, dann die listbox(o.ä.)

    obwohl du die werte auch so nehmen kannst für listbox (o.ä.)

    kannst ja eine Funktion schreiben, falls du häufiger brauchst.



  • 1. Das Einlesen an sich klappt auf jeden Fall. Bekomme den Header der Datei ausgegeben, sieht aus wie ein Kommentar in einem Header File (mit * usw)
    2. Arbeite mit einer API des Hardwareherstellers, da sind die Funktionen drin, aber halt nicht zum Auslesen der Datei sondern nur zum Öffnen.
    3. Es geht um Buszyklusdaten (momentan nur offline verfügbar, deshalb auslesen aus Datei)

    Danke

    //Test
    

Anmelden zum Antworten