- LiFePO4 Speicher Test         
Seite 2 von 6 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 55

Thema: Tasterwerte an Hyperterminal übergeben

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ich habe da noch einen:
    Code:
    SerWrite("\n\r",2);   //zeilenumbruch wird an terminal geschrieben ("\n" und "\r" sind je ein byte!)
    Gibt auch eine Warnung (Warum werden sie denn immer ignoriert?)
    Es muß wieder gecastet werden
    Code:
    SerWrite((unsigned char *)"\n\r",2);   //zeilenumbruch wird an terminal geschrieben ("\n" und "\r" sind je ein byte!)
    Da stellt sich ja die Frage, warum SerWrite nicht einen Zeiger auch char erwartet...
    Ja O.K. wenn man Rohdaten verschicken will ist das ja gut, aber die meisten wollen ja chars verschicken, oder ?

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  2. #12
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Als 8-Bit Partner von PrintInt() und um das off-Topic zu beenden:
    Code:
    	void PrintChar(unsigned char x)
    	{
    		unsigned char einer, zehner, huni;
    		char s[3]="hze";
    		einer=x%10;
    		zehner=(x-einer)/10;
    		huni=(x-(zehner*10+einer))/100;
    		s[0]=huni+'0';
     		s[1]=zehner+'0';
    		s[2]=einer+'0';
    		SerWrite(s,3);
    	}
    fehlt noch der Schalter für führende Nullen..

    Das hätte ich mir auch schon früher zusammenbasteln können *schmoll*

    Schöne Nacht noch

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    O.K. Offtopic ende, aber der hier ?
    Code:
    void PrintChar(unsigned char x)
       {
          char ergebnis[]  = {'0','0','0'};
    	  while (x >=100){
    		ergebnis[0]++;
    		x -=100;
    		}
          while (x >= 10) {
    		ergebnis[1]++;
    		x -=10;
    		}
    		ergebnis[2] +=x;
          SerWrite(ergebnis,3);
       }
    dürfte noch ein paar Bytes einsparen.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  4. #14
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Zitat Zitat von radbruch
    geht vielleicht noch einfacher, komm ich aber grad nicht drauf.
    Es geht tatsächlich einfacher (und genialer). *grins*
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #15
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.067
    PrintInt();

    geht das nich...?
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    PrintInt();

    geht das nich...?
    ja eben, warum nicht das, oder warum kämpfen wir hier mit SerWrite herum ?

    Ja,ja viele Wege führen nach Rom...

    Gute Nacht

    Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  7. #17
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    PrintInt();

    geht das nich...?
    Das geht eben nicht mit der CD-Library. Und asuro-Neulinge stolpern meist schon über PollSwitch() bevor sie die erweiterten Libraries erreichen. Dann ist PrintChar() ideal.

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo zusammen.
    Ich habe mal das von damaltor angepasste Programm mit der von von izaseba angegeben Korrektur zu "SerWrite((unsigned char *)string,strlen(string));" übersetzt.

    Code:
    #include "asuro.h"
    
    int main (void)
    {
    unsigned char x;            //definition der pollswitch-variable
    unsigned char string [5];   //definition eines string mit max. 5 zeichen
    
       Init ();
       while (1)
       {
          x = PollSwitch ();                   //taster werden abgefragt
          itoa (x, string, 10);                //wert wird umgewandelt und in string gespeichert
          SerWrite (string, strlen (string));  //string wird an terminal geschrieben
          SerWrite ("\n\r", 2);                //umbruch an terminal schreiben
                                               //("\n" und "\r" sind je ein byte!)
       }
    }
    Ja, es gibt jede Menge Warnings.
    Aber:
    - Alle warnings wegen 'signedness' können hier ignoriert werden. Es erfolgt an keiner Stelle eine Nutzung des höchsten Bits. Ist nur Compiler-Overload
    - Die warnings wegen 'implicit declaration' können hier ignoriert werden. Bei keiner der Funktionen wird der (angenommene) int-Return-Wert überhaupt benutzt.

    Der Output ist dann:
    Code:
    0
    0
    0
    1
    1
    0
    0
    0
    2
    2
    2
    0
    0
    0
    4
    4
    4
    0
    0
    8
    8
    8
    0
    0
    0
    0
    16
    16
    16
    16
    0
    0
    0
    31
    31
    31
    31
    Wie man sehen kann, funktioniert bei mir die 6-te Taste nicht.
    (Ich sollte mal bei mir die Lib neu machen )

    Dem Käse-Einwand von izaseba zum SerWrite mit 'unsigned char' kann ich zustimmen. Änderung in der Lib ist drin, muss von m.a.r.v.i.n mal neu zusammengefasst, und gepostet, werden.

    Das aber die Lib bei Thraxas schon benutzt wird, da bin ich mir ziemlich sicher, da er ja schon in seinem ersten Beitrag die Funktion SerPrint() aus der LIB benutzt.

    @izaseba
    Sollte deine Funktion PrintChar() nicht eher PrintuChar() heißen, dann könnte man noch eine 'echte' PrintChar() mit Vorzeichenausgabe für 'signed char' machen?

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    23.07.2007
    Beiträge
    13
    Danke an alle, nun funktioniert es !!!

  10. #20
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.067
    sehr gut, vielerfolg weiterhin! =)
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Seite 2 von 6 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress