Sida 1 av 1
ASCII till binärt mm
Postat: 17 februari 2009, 16:08:21
av slatte
Jag sitter och funderar på om det går att skicka iväg en hel sträng in i en funktion
använder HItech C kompilator för övrigt.
hittade en kodsnutt här på forumet
Här
men hur fungerar denna koden hur gör jag för att skapa en sådan funktion typ såhär
vad ska jag ha för
typ av variabel på "text"
Kod: Markera allt
void lcd_Out (unsigned char a, unsigned char b, XXXX text)
{
}
Men inte nog med detta om nu detta fungerar vilket det borde göra eftersom jeppson använder det i sin kodsnutt.
hur göra jag för att bryta sönder strängen i själva funktionen sedan jag vill alltså ha ut ascii tecknets binära eller decimala värde?
alltså "T" = 00011100 "e" = 00010010 "s" = 00111101 osv (påhittade binära värden

)
Hoppas ni förstår vad jag har för problem
har googlat ett bra tag nu men inte fått ut så mycket på det
Så då får man vända sig till proffsen

Re: ASCII till binärt mm
Postat: 17 februari 2009, 16:19:52
av sodjan
> vad ska jag ha för typ av variabel på "text"
En "text-typ", antagligen...
Sen är det bara att loopa igenom strängen och ta hand om varje tecken.
> (påhittade binära värden)
Varför påhittade ? Du hade ju lika gärna kunnat stoppa in de rätta ASCII värderna.
Sen är det dessa värden som ska till LCD'n, efter som de också jobbar med ASCII.
Så med andra ord så behöver du igentligen inte veta vilket värde varje tecken har,
det är bara att köra ut som till LCD'n som de är...
Re: ASCII till binärt mm
Postat: 17 februari 2009, 16:42:12
av cyr
Om du inte menar att du vill skriva ut ettor och nollor på displayen så behöver du inte konvertera något, strängar i C är arrayer av char som avslutas med en nolla.
Kod: Markera allt
void lcd_Out (unsigned char a, unsigned char b, char *text)
{
int i=0;
while(text[i] != 0) lcd_write_char(text[i++]);
}
Typ... går att göra mer kompakt, men rörigare om man inte är van vid pekare kanske.
Re: ASCII till binärt mm
Postat: 17 februari 2009, 16:47:48
av rand_althor
Vill du skicka in en teckensträng i en funktion på det sättet så är det en pekare till teckensträngen som skickas in... dvs en pekare till tecken...
sedan loopar du igenom varje tecken i strängen tills du når slutet (null-terminering)
t.ex:
Kod: Markera allt
void lcd_print (unsigned char horizontal_pos, unsigned char vertical_pos, char *text) {
char ch;
lcd_move_cursor(horizontal_pos, vertical_pos);
while ((ch = *text++) != '\0') {
lcd_put_char(ch);
}
}
bara som ett litet exempel... hoppas att det hjälper
Re: ASCII till binärt mm
Postat: 17 februari 2009, 16:50:07
av rand_althor
cyr skrev:Om du inte menar att du vill skriva ut ettor och nollor på displayen så behöver du inte konvertera något, strängar i C är arrayer av char som avslutas med en nolla.
Kod: Markera allt
void lcd_Out (unsigned char a, unsigned char b, char *text)
{
int i=0;
while(text[i] != 0) lcd_write_char(text[i++]);
}
Typ... går att göra mer kompakt, men rörigare om man inte är van vid pekare kanske.
Nu kanske det knappast blir ett problem med en vanlig liten LCD, men den konstruktionen begränsar till en maximal längd på strängarna som största talet i en int... bara så man inte gör bort sig på felindexering å så...
Re: ASCII till binärt mm
Postat: 17 februari 2009, 17:39:06
av slatte
Så gött! tack för alla svar!!
Nu kan jag fortsätta danke danke!!!