Avatar billede gigs Nybegynder
27. maj 2003 - 02:32 Der er 11 kommentarer og
1 løsning

Konverter tal til streng

Hej

Jeg er ved at lave en afstandsmåler vha. IR og en PIC16F84. PIC'en får en værdi fra en IR modul som den skal omregne til en afstand og udskrive på et LCD display.

Problemet lige nu er imidlertid ikke så stort. JEg skriver programmet i MPLAB med en C-compiler som gør at jeg kan skrive til PIC'en direkte i c. For at skrive den udregnede afstand på displayet bruger jeg en kommando der hedder:

lcd_puts(const char * s)

{
    LCD_RS = 1;    // write characters
    while(*s)
        lcd_write(*s++);
}

en standard kommando der følger med til compileren. Nu vil jeg så bare gerne udskrive min udregnede talværdi på displayet dvs.

  afstand = 1320 / (data - 58);
  lcd_puts(afstand);

men så let er det jo ikke helt såvidt jeg kan forstå! Hvordan konverterer jeg afstand til en streng??

På forhånd tak

Mvh. Jens
Avatar billede bertelbrander Novice
27. maj 2003 - 02:42 #1
char tal_som_streng[11];
int afstand = 1320 / (data - 58);
sprintf(tal_som_streng, "%d", afstand);
lcd_puts(tal_som_streng);
Avatar billede gigs Nybegynder
27. maj 2003 - 03:09 #2
Omkring:
sprintf(tal_som_streng, "%d", afstand);

svarer compileren:
d:\pic\lcd\lcdprog.c: 36: function declared implicit int (warning)

og senere
C:\HT-PIC\LIB\pic400-c.lib(mprnt.obj):12:signatures do not match: _sprintf (C:\HT-PIC\LIB\pic400-c.lib: mprnt.obj): 0x1249/0x42 (error)

Jeg forstår ikke helt hvad den mener???
Avatar billede arne_v Ekspert
27. maj 2003 - 04:10 #3
Har du inkluderet stdio.h ?
Avatar billede gigs Nybegynder
02. juni 2003 - 18:46 #4
Perfekt nu virker det! Hvis I vil have nogle point så indlæg et svar og så deler jeg dem ud...
Avatar billede arne_v Ekspert
02. juni 2003 - 18:51 #5
Det er vist Bertel der har fortjent pointene.
Avatar billede bertelbrander Novice
02. juni 2003 - 19:20 #6
En af ulemperne ved sprintf er at man er nødt til at vide hvor lang den streng man  sprintf'er i skal være. Hvis en int er 32 bit på din platform har du brug for 12 char's i tal_som_streng, og ikke 11, hvis din int er på 16 bit kan du nøjes med 7.
Jeg laver ikke svar.
Avatar billede arne_v Ekspert
02. juni 2003 - 19:56 #7
bertel>

Du glemte at svare !
Avatar billede gigs Nybegynder
02. juni 2003 - 21:58 #8
Hmmm..

I mit tilfælde er din løsning altså rigeligt, jeg har ikke brug for et fleksibelt system, da jeg ved præcist hvor stort tallet kan blive.

Men jeg synes nu at I begge fortjener lidt, for problemet er løst, men I bliver nød til at svare :o)

Mvh Jens
Avatar billede arne_v Ekspert
02. juni 2003 - 22:01 #9
OK.

Men så bør du give Bertel flere point end mig.
Avatar billede gigs Nybegynder
02. juni 2003 - 22:51 #10
ups ....

kender ikke eksperten så godt...

Nå Bertel! Hvis du vil have point så skriv en kommentar så opretter jeg en spørgsmål til dig så får du dine fortjente point.... (har alligevel nok af dem)

Men tak for hjælpen.

Mvh Jens
Avatar billede bertelbrander Novice
02. juni 2003 - 22:58 #11
Jeg forsøger at undgå at få points, derfor laver jeg ikke svar.
Avatar billede gigs Nybegynder
03. juni 2003 - 02:13 #12
Det bliver du nok nød til at forklare lidt nærmere?? Hvad er der galt i at have points??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester