Keil Arm Multi karakter sorunu

Başlatan 8051-ARM, 24 Ağustos 2015, 23:00:23

8051-ARM

İ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);

ercan_t

merhaba

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

8051-ARM

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ı.

ErsinErce

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

8051-ARM

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

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);