åäö (äö iaf) på en HD44780

Lysdioder, Optiska sensorer, Fiberoptik, Displayer, Lasrar, Optiska kopplare
Senil
Inlägg: 13
Blev medlem: 19 september 2009, 01:26:55

åäö (äö iaf) på en HD44780

Inlägg av Senil »

Tjo.

Försöker få till så jag jag kan skriva in ä och ö (å finns inte med i charmappen :( ) på min HD44789 kompatibla display. Enligt teckentabellen
så är ä = 225 och ö = 239.

enligt ascii-tabellern så är lilla ä = 132 och lilla ö = 148
Så jag försöker kolla om namnet jag har skickat till arrayen buf[] innehåller ä eller ö (första bokstaven i buf[] är ett litet L för att den ska veta att resten av datat ska till displayen)

Kod: Markera allt

lcd.setCursor(0, 1);
for (j = 1; j < buflen; j++) {
  if ( buf[j] == 132) {
    lcd.print(225, BYTE);
  }
  if ( buf[j] == 148) {
    lcd.print(239, BYTE);
  }
  lcd.print( buf[j] );
}
Dock får jag inte if-satserna att trigga... :.(
Vad gör jag för fel ??
sodjan
EF Sponsor
Inlägg: 43231
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: åäö (äö iaf) på en HD44780

Inlägg av sodjan »

> enligt ascii-tabellern så är lilla ä = 132 och lilla ö = 148

Inte enligt min ASCII tabell (ISO 8859-1 eller Latin-1).
http://www.asciitabell.se/

Det är ju ingen mening med att fråga varför if-satsen inte triggar
innan du faktiskt *VET* vad du har för tecken som du jämför med.
Så är du *säker* på att du har 132 och 148 ??
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4736
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: åäö (äö iaf) på en HD44780

Inlägg av Swech »

Måste det inte vara någon form av ELSE ?
annars körs väl alltid
lcd.print( buf[j] );
oavsett om det är ä eller ö ?? Men reserverar mig för riktigt dålig koll på C :D

Swech
sodjan
EF Sponsor
Inlägg: 43231
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: åäö (äö iaf) på en HD44780

Inlägg av sodjan »

Jo, så är det nog också...
Om buf[] är en temp area så skull man kanske kunna göra något i denna stil :

Kod: Markera allt

lcd.setCursor(0, 1);
for (j = 1; j < buflen; j++) {
  if (buf[j] == 228) {buf[j] = 225}
  if (buf[j] == 246) {buf[j] = 239}
  lcd.print(buf[j]);
}
Jag har även bytt ut 132 och 148 mot det jag *tror* det ska vara.
Men det måste naturligstvis verifieras mot den miljö där det körs.
225 och 239 har jag inte kollat upp, det antar jag stämer mot den
LCD modul som ska användas.

Slutligen, jag brukar försöka undvika svenska tecken på HD44780 LCD'er... :-)
Användarvisningsbild
kimmen
Inlägg: 2042
Blev medlem: 25 augusti 2007, 16:53:51
Ort: Stockholm (Kista)

Re: åäö (äö iaf) på en HD44780

Inlägg av kimmen »

Är buf[] en array av char eller är den något annat? Om den är signed (vilket char är på de flesta plattformar) så blir det problem när du försöker jämföra med tal större än 127.

Exempelvis så ger följande kodsnutt utskriften "nej" om char är av signed-typ vilket är det vanliga!

Kod: Markera allt

	
	char test = 210;

	if(test == 210)
		printf("ja");
	else
		printf("nej");
Om du vill arbeta med positiva tal så kan det vara lämpligt att låta buf vara av "unsigned char" i stället. Ett annat alternativ är att skriva (char) före talen du ska jämföra med.
Senast redigerad av kimmen 10 januari 2010, 17:42:18, redigerad totalt 1 gång.
bearing
Inlägg: 11653
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: åäö (äö iaf) på en HD44780

Inlägg av bearing »

För att få ett "å" skulle du kunna göra ett eget tecken och spara i något av de 16 platser som är reserverade för sånt.
Senil
Inlägg: 13
Blev medlem: 19 september 2009, 01:26:55

Re: åäö (äö iaf) på en HD44780

Inlägg av Senil »

Tack för hjälpen.

Sodjan - Kollade på asciitable.com Tänkte inte på att den inte stämmer med latin1. Att jag vill ha svenska tecken var bara för att se om jag kunde få till det.. Hade tänkt kört engelska från början..
Swech - Jo såklart behöver man en else, glömde skriva med den här..
Kimmen - Det funkade lite bättre (det funkade överhuvudtaget :D ) när charen blev unsigned om man säger så.. Tackar!
Bearing- Japp, har gjort det, men då jag ändå inte kunde jämföra tecken så hjälpte det inte så mycket. Men nu så
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Re: åäö (äö iaf) på en HD44780

Inlägg av oJsan »

Tips: Om den sträng som ska skrivas ut (den som innehåller åäö) hanteras av kompilatorn så kan det vara lämpligt att även ange tecknen i if-satsen som 'ä' istället för 228. Ett "magic number" mindre i koden =)
Skriv svar