Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: 8051-ARM - 24 Ağustos 2015, 23:00:23

Başlık: Keil Arm Multi karakter sorunu
Gönderen: 8051-ARM - 24 Ağustos 2015, 23:00:23
İyi akşamlar arkadaşlar keil uvision 5 kullanıyorum aşağıdaki fonksiyonu kullandığımda Türkçe karakterleri multi olarak derlliyor örnek  "Ş" =C59E  değerini alıyor.

Konuyu açmadan araştırdım fakat herhangi bir çözüm bulamadım.

Font3("ŞşĞğÜü",yatay_basla,120,24,0xffffff,0x000000,Arial_24);
Başlık: Ynt: Keil Arm Multi karakter sorunu
Gönderen: ercan_t - 25 Ağustos 2015, 09:10:27
merhaba

Editörün encoding özelliğine bak UTF8 olmalı yada ANSI
Başlık: Ynt: Keil Arm Multi karakter sorunu
Gönderen: 8051-ARM - 18 Eylül 2015, 23:37:34
Alıntı yapılan: ercan_t - 25 Ağustos 2015, 09:10:27
merhaba

Editörün encoding özelliğine bak UTF8 olmalı yada ANSI

Kıymetli cevabınız için teşekkür ederim benimde  ilk aklıma gelen bu ayarları değiştirmekti daha önce asm ile 8051 programlarken başıma benzer durumlar gelmişti ama ARM için C de çözüm olmadı.
Başlık: Ynt: Keil Arm Multi karakter sorunu
Gönderen: ErsinErce - 19 Eylül 2015, 09:51:40
karakterlerin ascii değerlerini yazmalısınız, keil UTF8 olarak kaydettiğinizden o kodlama ile değerlendirmiş
http://www.ascii-codes.com/cp857.html (http://www.ascii-codes.com/cp857.html)
Başlık: Ynt: Keil Arm Multi karakter sorunu
Gönderen: 8051-ARM - 19 Eylül 2015, 16:14:08
Alıntı yapılan: ErsinErce - 19 Eylül 2015, 09:51:40
karakterlerin ascii değerlerini yazmalısınız, keil UTF8 olarak kaydettiğinizden o kodlama ile değerlendirmiş
http://www.ascii-codes.com/cp857.html (http://www.ascii-codes.com/cp857.html)

Ascii değerlerini yazamıyorum şimdilik bu şekilde kullanıyorum C de çok yeniyim daha basit çözüm önerisi olursa onu kullanırım.


void Font(char*s,const uint8_t * font_)
{
unsigned char c;

while(*s!='\0')
{
if(*s == 0xc3)
{
if (*s++ == 0xc3 & *s-- == 0x87) //Ç
{
s = s + 2; c=0xc7;
}
else if (*s++ == 0xc3 & *s-- == 0x96) //Ö
{
s = s + 2; c=0xd6;
}
else if (*s++ == 0xc3 & *s-- == 0x9c) //Ü
{
s = s + 2; c=0xdc;
}
else if (*s++ == 0xc3 & *s-- == 0xa7) //ç
{
s = s + 2; c=0xe7;
}
else if (*s++ == 0xc3 & *s-- == 0xb6) //ö
{
s = s + 2; c=0xf6;
}
else if (*s++ == 0xc3 & *s-- == 0xbc) //ü
{
s = s + 2; c=0xfc;
}
}
else
if (*s == 0xc4)
{
if (*s++ == 0xc4 & *s-- == 0x9e) //Ğ
{
s = s + 2; c=0xd0;
}
else if (*s++ == 0xc4 & *s-- == 0x9f) //ğ
{
s = s + 2; c=0xf0;
}
else if (*s++ == 0xc4 & *s-- == 0xb0) //İ
{
s = s + 2; c=0xdd;
}
else if (*s++ == 0xc4 & *s-- == 0xb1) //ı
{
s = s + 2; c=0xfd;
}
}
else
if (*s == 0xc5)
{
if (*s++ == 0xc5 & *s--  == 0x9e) //Ş
{
s = s + 2; c=0xde;
}
else if (*s++ == 0xc5 & *s-- == 0x9f) //ş
{
s = s + 2; c=0xfe;
}
}
else
{
c = *s++;
}
//c = *s++;
lcd_data=c-0x20;

}
}

Font("ŞşĞğÜü",Arial_24);