Alıntı (acehreli):
> Alıntı:
> ioperm işlevinin orjinal başlık dosyasındaki işlev bildirim şu şekilde:
> > extern int ioperm (unsigned long int __from, unsigned long int __num,
> > int __turn_on) __THROW;
> > ```
> >
> >
>
> Benim /usr/include/sys/cdefs.h dosyamda şöyle diyor (önemsiz yerlerini çıkartıyorum):
>
>
> /* GCC can always grok prototypes. For C++ programs we add throw()
to help it optimize the function calls. But this works only with
gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions
as non-throwing using a function attribute since programs can use
the -fexceptions options for C code as well. */
if !defined __cplusplus && __GNUC_PREREQ (3, 3)
define __THROW attribute ((nothrow))
// ...
else
if defined __cplusplus && __GNUC_PREREQ (2,8)
define __THROW throw ()
// ...
else
define __THROW
// ...
endif
endif
> D ilintisindeki karşılığı 'nothrow' olabilir:
Evet bu nothrow'u deneyeceğim. Ama Ali bey benim burada kafamı en çok karıştıran aldığı parametrelerin iki tane olmasıydı.
int ioperm (ulong int __from ..) ..
Burada hem ulong hem int var nasıl bir işlevdir diye düşündüm :) Ama anladığım kadarıyla D'ye çevirirken bahsettiğiniz 'nothrow' özelliğini kullanmak yeterli.
Alıntı (acehreli):
> Alıntı:
> Türkçe karakter destekleyen LCD panel var mı acaba :o)
Levent Saltuklaroğlu hocanın şöyle bir yazısını buldum (kendisine sorulabilir):
http://www.codeproject.com/KB/cs/cspplcds.aspx
Yazıda "font" sözcüğünün geçtiği ikinci yerde bir tablo var. O tablonun üzerine yazılabiliyor galiba çünkü yorumlar arasında Unicode'un geçtiği yerde "RAM" deniyor.
Aslında bu kısmı yaptım.
http://www.geocities.com/dinceraydin/lcd/custom.htm
Ama Türkçe'deki özel karakter sayısı 12. 2 tanesi zaten var. Geriye 10 tane kalıyor. CGRAM'e 8 karakter yazabiliyormuşuz sanırım. O yüzden 2 karakter eksik kalıyor.
Eğer DDRAM'e yazmanın bir yolu yoksa donanım kısıtlaması yaşıyoruz sanırım. Bu yüzden ben de programın diğer bölümlerini geliştirmekten vazgeçtim.
Ya da kırmanın bir yolu yokmudur acaba :)
import std.stdio;
import io;
import core.thread;
import std.string;
const uint adres = 0x0c000;
const uint kontrol = 0x0c002;
void main()
{
erişimhakları(adres,1,1);
erişimhakları(kontrol,1,1);
türkçeKarakterleriGir();
komutGönder(1);
komutGönder(15);
/* ilk satırın ilk karakterine git */
komutGönder(128);
/* türkçe karakterleri yaz */
for(ubyte i = 0; i < 8; ++i)
veriGönder(i);
/* ikinci satırın ilk karakterine git */
komutGönder(192);
string mesaj = "Türkçe yazıyorum";
foreach (wchar harf; mesaj) {
switch(harf) {
case('ç'):
veriGönder(0);
break;
case('ı'):
veriGönder(3);
break;
case('ü'):
veriGönder(245);
break;
default:
veriGönder(cast(ubyte)(harf));
break;
}
}
}
void türkçeKarakterleriGir()
{
komutGönder(12);
komutGönder(1);
komutGönder(56);
komutGönder(64);
const ubyte[8] çharfi = [0x00, 0x00, 0x0e, 0x10, 0x10, 0x11, 0x0e, 0x04]; // ç harfi = 0
const ubyte[8] ğharfi = [0x0e, 0x00, 0x0f, 0x11, 0x11, 0x0f, 0x01, 0x0e]; // ğ harfi = 1
const ubyte[8] şharfi = [0x00, 0x00, 0x0e, 0x10, 0x0e, 0x01, 0x1e, 0x04]; // ş harfi = 2
const ubyte[8] ıharfi = [0x00, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x0e, 0x00]; // ı harfi = 3
/*
ö harfi = 239
ü harfi = 245
*/
ubyte[8] Çharfi = [14, 17, 16, 16, 16, 17, 14, 4];
ubyte[8] Ğharfi = [0x0e, 0x00, 0x1f, 0x10, 0x13, 0x11, 0x1f, 0x00];
ubyte[8] Şharfi = [0x0e, 0x11, 0x10, 0x0e, 0x01, 0x15, 0x0e, 0x04];
ubyte[8] Öharfi = [10, 0, 14, 17, 17, 17, 14, 0];
karakterGönder(çharfi);
karakterGönder(ğharfi);
karakterGönder(şharfi);
karakterGönder(ıharfi);
karakterGönder(Çharfi);
karakterGönder(Ğharfi);
karakterGönder(Şharfi);
karakterGönder(Öharfi);
}
void karakterGönder(ubyte[8] karakter)
{
foreach (satır;karakter) {
yaz(kontrol,0);
Thread.sleep(dur!"msecs"(20));
yaz(adres,satır);
yaz(kontrol,1);
Thread.sleep(dur!"msecs"(20));
}
}
void veriGönder(ubyte veri)
{
yaz(kontrol,0);
Thread.sleep(dur!"msecs"(80));
yaz(adres,veri);
yaz(kontrol,1);
Thread.sleep(dur!"msecs"(80));
}
void komutGönder(ubyte veri)
{
yaz(kontrol,8);
Thread.sleep(dur!"msecs"(80));
yaz(adres,veri);
yaz(kontrol,9);
Thread.sleep(dur!"msecs"(80));
}
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]