ASCII till binärt mm

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
slatte
Inlägg: 420
Blev medlem: 1 april 2008, 16:05:17
Ort: Jönköping

ASCII till binärt mm

Inlägg 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

Kod: Markera allt

lcd_Out(1, 1, "Test Meny");
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 :o
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: ASCII till binärt mm

Inlägg 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...
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Re: ASCII till binärt mm

Inlägg 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.
rand_althor
Inlägg: 49
Blev medlem: 10 november 2008, 13:43:25
Ort: Göteborg
Kontakt:

Re: ASCII till binärt mm

Inlägg 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...

Kod: Markera allt

char *text
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
rand_althor
Inlägg: 49
Blev medlem: 10 november 2008, 13:43:25
Ort: Göteborg
Kontakt:

Re: ASCII till binärt mm

Inlägg 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å...
Användarvisningsbild
slatte
Inlägg: 420
Blev medlem: 1 april 2008, 16:05:17
Ort: Jönköping

Re: ASCII till binärt mm

Inlägg av slatte »

Så gött! tack för alla svar!!

Nu kan jag fortsätta danke danke!!!
Skriv svar