-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: LineData im Hyperterminal ausgeben

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    27.04.2006
    Ort
    Aachen
    Beiträge
    31

    LineData im Hyperterminal ausgeben

    Anzeige

    Hallo!
    Ich möchte die Daten der beiden Fototransistoren auf der Unterseite von ASURo im Hypertermianl programm auslesen. Allerdings kommen dort nur kryptographische Zeichen an. Habe gelesen, dass von den Fototransistoren 16Bit Werte zurückkommen und man diese erst mit der Funtion itoa() in ASCII umwandeln muss. Das habe ich versucht, jedoch ohne Erfolg. Es kommen immer noch kryptographische Zeichen an.
    Hier mal mein Code:
    Code:
    #include "asuro.h"
    #include "stdlib.h"
    
    int main(void)
    {
    	//Speicherbereich für die Integer-Werte der Fototransistoren anlegen
    	unsigned int data[2];
    	unsigned char Wert;
    	
    	//Microcontroller in Ausgangszustand
    	Init();
    	//FrontLED anschalten
    	FrontLED(ON);
    	//Werte der Fototransistoren einlesen
    	LineData(data);
    
    	//in ASCII umwandeln
    	itoa(data[1],Wert,10);
    	//Werte an Computer senden
    	SerWrite(Wert,4);//links(T9)
    	
    	while(1);
    	return 0;
    }
    Vielen Dank für eure Hilfe!

    mfg
    .patrick

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    in der neuen Asuro- Lib ist es so gelöst:

    Code:
    void PrintInt(int wert)
    {  	
    	char text[16]="      ";
    	itoa(wert,text,10);
    	SerWrite(text,strlen(text));
    }
    also ein char-Array, nicht nur ein char.

    zur Lib:
    http://sourceforge.net/projects/asuro

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    27.04.2006
    Ort
    Aachen
    Beiträge
    31
    Danke linux_80 jetztz kommen vernünftige Zahlen an!

    Hab noch eine Frage zur itoa()-Funktion.Und zwar verstehe ich den 3. Übergabeparameter der Funktino nicht. Wofür ist der? (im Beispiel ist er 10)

    Danke!

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    der 3. gibt das Zahlensystem an,
    als für Leute mit 10 Finger eine 10

    man kann auch eine 2 um Binär zu haben, oder 16 für Hex, muss aber sagen das ich das noch garnicht so verwendet hab ausser als für Dezimal

  5. #5
    Robotik84
    Gast
    servus

    hab mal ne frage: wenn i die neue lib einfüge und dann mit AVRStudio kompilieren will dann hängt sich mei pc auf.

    warum ist das so? muss noch irgendwelche einstellungen vornehmen?

  6. #6
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    Robotik84

    bitte benutze die suchfunktion. wenn du wirklich nichts findest, was dir hilft, dann amch einen neuen thread auf. die frage gehört hier nicht her =) ich vermute mal dass du dann schneller ne antwort bekommst als wenn du deine frage in nem anderen thread versteckst.

    ich würde an deiner stelle versuchen, die datei neu runterzuladen, evtl ist sie beschädigt.

    MODS: verschieben?
    kleinschreibung ist cool!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    02.12.2006
    Beiträge
    7
    Hallo Patrik,

    ich bin auch gerade dabei den asuro auszutesten und versuche verzweifelt den Wert der Fotosensoren mit serwrite auszugeben.
    Ich habe die neue WINAVR und die neue LIB für itoa.
    Der Comopiler spuckt aber immer noch Galle:

    #include "asuro.h"
    #include "stdlib.h"

    int main(void)
    {
    //Speicherbereich für die Integer-Werte der Fototransistoren anlegen
    unsigned int data[2];
    uint16_t data1 ;
    Init();
    FrontLED(ON);
    char text[16]=" ";
    while(1);{
    data1= LineData(data); //Werte der Fototransistoren einlesen

    itoa(data1,text,10); //in ASCII umwandeln

    SerWrite(text,1); //links(T9) //Werte an Computer senden



    }
    return 0;
    }

    Compiler:
    test.c: In function `main':
    test.c:14: error: void value not ignored as it ought to be
    make: *** [test.o] Error 1

    Kannst du mir dein Programm zuschicken oder über das Board bereitstellen. Oder was muss ich ändern?

    Gruß
    Bernd

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    data1= LineData(data); //Werte der Fototransistoren einlesen

    das ist das problem. LineData giebt nix zurück.

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    02.12.2006
    Beiträge
    7

    Atmega8 ADC to serwrite

    Sorry, ich schon wieder

    laut Beschreibung errechnet LineData(data) die Werte der Fototransistoren.
    Die Werte (int 0 – 1023) stecken in data[0] und data[1] für linke und rechte Seite.

    Wie kann ich denn diese Werte einer Variabelen übergeben, mit der ich dann weiter rechen und auch eine Ausgabe ansteuern kann???


    #include "asuro.h"
    #include "stdlib.h"

    int main(void)
    {
    unsigned int data[2];
    uint16_t data1 ;
    Init();
    char text[16]=" ";
    while(1);{
    ??? data1= LineData(data); //Werte der Fototransistoren einlesen

    itoa(data1,text,10); //in ASCII umwandeln
    SerWrite(text,1); //links(T9) //Werte an Computer senden

    }
    return 0; }

    Gruß, Bernd
    mit libv2.6.1, asuro.c mit itoa und ersten Geh-Versuchen

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2006
    Beiträge
    25
    mit "unsigned int data[2];" initialisierst du einen sogenannten array, das sind zwei von diesen unsigned-int-datentypen gleich hintereinander folgend.
    Die kann man jetzt allle einzeln mit der zahl in den eckigen Klammern ansprechen.

    In deinem Fall initialisierst du mit "unsigned int data[2]" also zwei stück unsigned int.
    Da der Computer bei 0 zu zählen anfängt kannst du auf das erste int mit
    "data[0]" zugreifen, auf das zweite mit
    "data[1]"

    Beispiel:
    Code:
    while(1)
     {
      unsigned int data[2];  //Initialisiert zwei Int-werte hintereinander
      LineData(data);         //Übergibt der Funktion den "data"-array, die schreibt             
                              //dann in die zwei int-felder jeweils den linken und rechten Wert.
                              //Die eckigen Klammern brauchst du hier nicht
    
      PrintInt(data[0]);      //den wert von data[0] ausgeben, also von links
      PrintInt(data[1]);      //den Wert von data[1] ausgeben, also rechts
     }

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •