AVR-gcc, nordiska tecken
AVR-gcc, nordiska tecken
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?
Re: AVR-gcc, nordiska tecken
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...
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...
Re: AVR-gcc, nordiska tecken
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
}
Re: AVR-gcc, nordiska tecken
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ä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.
Re: AVR-gcc, nordiska tecken
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 'Ä';
Blir det rätt då om grafiken för 'Ä' ligger på plats 128 i teckentabellen?
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;
}
Re: AVR-gcc, nordiska tecken
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.
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.
Re: AVR-gcc, nordiska tecken
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.
AVR-gcc har tidigare gett mig problem om jag använder unsigned char till text, därför är den deklarerad som enbart char.
Re: AVR-gcc, nordiska tecken
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.
Re: AVR-gcc, nordiska tecken
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.
Re: AVR-gcc, nordiska tecken
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"...
på två parametrar men inte på den tredje, så är det ju inte
en aldeles för vild gissning att den är "signed"...
Re: AVR-gcc, nordiska tecken
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). 

Re: AVR-gcc, nordiska tecken
Sen så kan man ju tycka att en data typ som heter "char"
("tecken") över huvudtaget ska kunna vara "signed"...
Lite som "Ä" och "-Ä"...
("tecken") över huvudtaget ska kunna vara "signed"...

Lite som "Ä" och "-Ä"...
Re: AVR-gcc, nordiska tecken
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.
Det där blev ju inte så bra på svenska, men ni fattar väl antar jag.

Re: AVR-gcc, nordiska tecken
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.