Forum: Ders Arası RSS
Karaşimşek kodunda hata
Sayfa:  önceki  1  2 
erdem (Moderatör) #16
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 6833
Salih Dinçer:
Başka işletim sisteminde denemekte fayda görüyorum. Eğer Linux ise bir de Windows'a bakmalı.
Şu an Windows7 üzerinde deniyorum.
Salih Dinçer:
Ayrıca kaydırma işlemi yapmak şart mı?
Hayır.
Salih Dinçer:
Sanırım bu bir ödev ve farklı yöntemler kullanmamak gerekiyor...

Ödev de değil :-)

İstediğimiz her türlü yöntemi kullanabiliriz. Örneğin senin verdiğin şekilde de denedim ama sadece bir kere bir led yanıyor.

import std.stdio;
import giriscikis;
import core.thread;
 
void karaŞimşek(ushort adres, ushort veri, bool solaGit = true,
                ushort beklemesüresi = 500)
{
    if (solaGit) veri <<= 1;
    else veri >>= 1;
    yaz (adres, veri);
    Thread.sleep(dur!"msecs"(beklemesüresi));
}
 
void main()
{
    version (linux)
    {
 
        /*
            paralel portun adresi
        */
        const uint adres = 0x0c000;
 
        /*
            göndereceğimiz veri
        */
        ubyte veri = 0b_11111111;
        erişimhakları(adres, 1, 1);
    }
 
    version (Windows)
    {
 
        /*
          paralel portun adresi
        */
        ushort adres = 0x0378;
 
        /*
            göndereceğimiz veri
        */
        ushort veri = 0b_00000001;
    }
 
    bool yönDeğiştir = true;
    uint kaçKere = 3;
    do {
        karaŞimşek(adres, veri, yönDeğiştir);
        if(veri == 1 || veri == 8) {
            yönDeğiştir = yönDeğiştir ? false : true;
            kaçKere--;
        }
    } while (kaçKere);
 
}
erdem (Moderatör) #17
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
erdem:
Salih Dinçer:
Başka işletim sisteminde denemekte fayda görüyorum. Eğer Linux ise bir de Windows'a bakmalı.

İstediğimiz her türlü yöntemi kullanabiliriz. Örneğin senin verdiğin şekilde de denedim ama sadece bir kere bir led yanıyor.

void karaŞimşek(ushort adres, ref ushort veri, bool solaGit = true,
                ushort beklemesüresi = 500)
{
    /* ... * /
}
 
void main()
{
} 

Bu kısmı referans alacak şekilde değiştirince çalışıyor. Teşekkürler!

Kodun son hali de şimdilik bu şekilde:

https://github.com/erdemoncel/elektronikhobi/blob/master/k…
Bu mesaj erdem tarafından değiştirildi; zaman: 2012-07-16, 11:31.
Değişiklik nedeni: kaynak kod bağlantısını ekledim
Avatar
huseyin #18
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Devreyi kurup deneyeceğim :)
Huseyin
Avatar
Salih Dinçer #19
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #17
Sonunda çalıştı demek, çok şükür...:)

Ben de en sağlam yöntem olarak bir dizi ve bu dizi üzerinde kayan foreach döngüsü önerecektim. Öyle ya, orada ne tür veri kayıtlıysa paylaşacaktı eş programıyla ve güzel güzel anlaşacaktılar (D)ünya'da! Gökten üç elma düşmüş...hahay
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
erdem (Moderatör) #20
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
Ben de en sağlam yöntem olarak bir dizi ve bu dizi üzerinde kayan foreach döngüsü önerecektim. Öyle ya,

Aslında gene de önerebilirsin  ;-)
erdem (Moderatör) #21
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Aslında bu program da bana biraz karışık  :-D  geldiği için daha hafif bir sürümünü yazdım.

import std.stdio;
import giriscikis;
import core.thread;
 
immutable ushort beklemeSüresi = 500;
 
void hüsnü (ushort adres, ref ushort veri)
{
    yaz (adres, veri);
    Thread.sleep(dur!"msecs"(beklemeSüresi));
}
 
void main()
{
    version (linux)
    {
        /*
          paralel portun adresi
        */
        const uint adres = 0x0c000;
 
        /*
          göndereceğimiz veri
        */
        ubyte veri = 0b_11111111;
        erişimhakları(adres, 1, 1);
    }
 
    version (Windows)
    {
        /*
          paralel portun adresi
        */
        ushort adres = 0x0378;
 
        /*
          göndereceğimiz veriler
        */
        ushort veriler[6] = [1, 2, 4, 8, 4, 2];
    }
 
    for (int i = 0; i != veriler.length; ++i) {
        writeln(veriler[i]);
        hüsnü (adres, veriler[i]);
    }
}
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2 
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 04:21:41 (UTC -08:00)