C# Deklarationsproblem

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von TanGoo, 4. August 2006 .

  1. 4. August 2006
    Hallo,

    ich habe ein kleines Deklarationsproblem.
    Ich möchte die Systemzeit, also "unsigned char" an ein LCD Display ausgeben.

    Die Funktion dafür lautet:
    void stringout (char *c)

    stringout("dieser text wird richtig ausgegeben"

    ----
    Jetzt habe ich versucht, den tag von "unsigned char" in "char*" zu konvertieren. Die variable "tagi" kann nur auf dem Normalbildschirm als "08" ausgegeben werden.
    Auf dem LCD Display wird ein falsches Zeichen ausgegeben.

    char *tagi = "00";

    tagi = (char*) tag;
    stringout(tagi);



    Ich wäre euch sehr Dankbar, wenn ihr mir helfen könntet!

    DANKE!
    TanGoo






    ------
    Hier noch der Quelltext zur Übersicht.
    ----




    // chrout()
    // zum Senden von Daten mssen RS=1 und RW=0 sein.
    // Die Daten werden in zwei Halbbytes zerlegt. -E=0 / E=1
    void chrout (char c)
    {
    int hb=c>>4,lb=c&0x0F; // DatenByte zerlegt
    // High HalbByte senden
    i2c_transmit(i2c_lcd,0x50+hb); // RS -RW E h h h h
    i2c_transmit(i2c_lcd,0x40+hb); // RS -RW -E h h h h
    // Low HalbByte senden
    i2c_transmit(i2c_lcd,0x50+lb); // RS -RW E l l l l
    i2c_transmit(i2c_lcd,0x40+lb); // RS -RW -E l l l l
    i2c_release();
    }

    // stringout()
    // Sendet einen nullterminierten String zur LCD-Anzeige.
    // Die Bytes des Strings werden on Halbbytes zerlegt und
    // gesendet.
    // Die Frequenz des I2C-Bus schein so gering zu sein,
    // dass die bertragung eines Zeichens mehr als 120s
    // bentigt. Damit wird die Abfrage des Busy-Flags
    // berflssig. -E=0 / E=1

    void stringout (char *c)
    {
    int n=0;
    do{
    chrout(c[n]);
    } while (c[++n]!=0);
    }


    // ZEIT:
    unsigned int jahr;
    unsigned char monat, tag, tagnr;
    unsigned char stunde, minute, sekunde;

    char *tagi = "00";

    char *wotag[]= {"So","Mo","Di","Mi","Do","Fr","Sa","So"};

    // Zeitdaten sind als dezimale Zahlen
    // gespeichert
    void holedatum (void)
    {
    inregs.h.ah = 0x2A; // SoftINT 21h, Funktion 2Ah
    int86(0x21,&inregs,&outregs);
    jahr =outregs.x.cx; // Jahr 4 Stellen (16Bit)
    monat =outregs.h.dh; // Monat 1-12(8Bit)
    tag =outregs.h.dl; // Tag 1-31
    tagnr =outregs.h.al; // Wochentag, 0-Sonntag
    //string tach=outregs.h.dl;

    tagi = (char*) tag;
    //chrout(tagnr);
    stringout(tagi);
    //stringout("08:33:32sdfsdfsdf" ;
    printf("\n%0.2d",tagi);
    }

    void holezeit(void)
    {
    inregs.h.ah = 0x2C; // SoftINT 21h, Funktion 2Ch
    int86(0x21,&inregs,&outregs);
    stunde =outregs.h.ch; // Stunde 0-23
    minute =outregs.h.cl; // Minute 0-59
    sekunde =outregs.h.dh; // Sekunde 0-59

    }

    // ENDE ZEIT
     
  2. 5. August 2006
    char * tagi = &tag;

    Sollte so gehen, weil du ja dem Zeiger tagi die Adresse von tag zuweist.

    Mfg

    Hamml
     
  3. 6. August 2006
    Danke für deine Antwort!


    ich hab das problem schon so gelöst:

    char st[20];
    itoa (stunde, st, 10);



    mfg
    tangoo
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.