AVR-gcc, nordiska tecken

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

AVR-gcc, nordiska tecken

Inlägg av PaNiC »

Har ett projekt på gång som ska vara svenskspråkigt. För att få ihop det med mitt egenskrivna LCD-lib behöver jag veta vilka värden de nordiska bokstäverna får vid kompilering. Är det att följa ASCII-tabellen rakt av eller händer något annat på vägen?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: AVR-gcc, nordiska tecken

Inlägg av sodjan »

Kan du ge ett exempel på den kod som du undrar över?
Jag misstänker att kompileringen inte ändrar på något, det
handlar mer om vilken kodning tecknen fick då du *skrev*
källkoden. T.ex så skulle jag undvika UTF8 (eller liknande
multibyte) kodning i editorn/IDE't...
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: AVR-gcc, nordiska tecken

Inlägg av jesse »

Det går väl att göra så här så får di en lista på tecknen och deras decimala värde:

Kod: Markera allt

char tkn[7] = "ÅÄÖåäö";
char txt[4] = "\nx="; // \n = newline. x byts ut mot aktuellt tecken vid exekvering
int i;
for (i = 0; i < 6; i++)
{
    txt[1] = tkn[i];
    printf(txt);
    printf("%u", tkn[i]); // %u decimalt, %x hexadecimalt
}
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: AVR-gcc, nordiska tecken

Inlägg av sodjan »

Enklare att bara slå över till hex-visning i den editor man
använder, om den stöder det, vill säga. Men det här är
nog inga mysterium. Antagligen är den en vanlig 8-bitars
teckentabell som ISO-8859-1 eller liknande.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Re: AVR-gcc, nordiska tecken

Inlägg av PaNiC »

Verkar som att AVR-Studio använder just ISO8859-1 som sodjan misstänkte.
Den befintliga teckentabellen och hanteringen jag använder är utförd enligt 7b ASCII.
Så ponera att jag lägger till följande kodsnutt i delen som hanterar specialfall, exempel med 'Ä';

Kod: Markera allt

void FB_writechar(unsigned char x, unsigned char y, char ch)
{
if((x < LCD_X-5) && (y < LCD_Y)){
char ch_data[5] = {0, 0, 0, 0, 0};
if(ch>=32){


   if(ch != ' ') FB_clearrect(x,y,x+5,y+7);
   if (ch == ' '){
      FB_xpos += 4;
	  FB_clearrect(x,y,x+4,y+7);
      FB_setxy(x+4,y);
      return; 
   }
   if(ch == '1'){
	  x += 1;
   }
   if(ch == 'I'){
  	  x += 1;
   }
   if(ch == 'i'){
      x += 1;
   }
   if(ch == 'Ä'){
      ch = 128;
   }

Blir det rätt då om grafiken för 'Ä' ligger på plats 128 i teckentabellen?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: AVR-gcc, nordiska tecken

Inlägg av sodjan »

Om vi talar om en vanlig HD44780 LCD så har den inte de svenska
tecknen (och alla finns inte heller) på "normala" platser. De måste
nästan alltid specialkodas.

Är cr signed? Och i så fall, varför?.
cr=128 blir i sp fall kanske inte vad du tror.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Re: AVR-gcc, nordiska tecken

Inlägg av PaNiC »

Jag har en egen teckentabell, för grafisk display, kan placera hur jag vill.
AVR-gcc har tidigare gett mig problem om jag använder unsigned char till text, därför är den deklarerad som enbart char.
Nerre
Inlägg: 27228
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: AVR-gcc, nordiska tecken

Inlägg av Nerre »

Som sagt var, signed är nog inte helt lyckat, fungerar bra så länge det är tecken upp till 127 men med högre tecken blir det nog inte riktigt rätt.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Re: AVR-gcc, nordiska tecken

Inlägg av PaNiC »

Jodå, det blir helt rätt.

Bild
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: AVR-gcc, nordiska tecken

Inlägg av superx »

Enbart "char" är inte samma sak som "signed char". Det är inte definierat i standarden om "char" är signed eller unsigned, så beroende på kompilator så kan det funka eller ej.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: AVR-gcc, nordiska tecken

Inlägg av sodjan »

Det är i och för sig rätt. Men om man har angett "unsigned"
på två parametrar men inte på den tredje, så är det ju inte
en aldeles för vild gissning att den är "signed"...
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: AVR-gcc, nordiska tecken

Inlägg av superx »

Nä, det har du rätt i. Jag vill inte ta koden i försvar direkt, men det är inte så konstigt om det funkar (i vissa fall). :wink:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: AVR-gcc, nordiska tecken

Inlägg av sodjan »

Sen så kan man ju tycka att en data typ som heter "char"
("tecken") över huvudtaget ska kunna vara "signed"... :-)

Lite som "Ä" och "-Ä"...
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: AVR-gcc, nordiska tecken

Inlägg av superx »

Nä, det hade varit lite praktiskt om man istället hade valt två datatyper, kanske "byte" och "char", för att representera 8-bitarstal (med ev. tecken) respektive tecken utan tecken. :humm: Det där blev ju inte så bra på svenska, men ni fattar väl antar jag.
Användarvisningsbild
PaNiC
Inlägg: 2610
Blev medlem: 15 augusti 2003, 22:16:15
Ort: Skånelandet

Re: AVR-gcc, nordiska tecken

Inlägg av PaNiC »

Som sagt, erfarenhet med AVR-gcc säger att med tecken använder man enbart "char", med numeriskt innehåll använder man "signed" eller "unsigned". Be mig inte förklara varför, det får ni fråga utvecklarna om.
Skriv svar