Şimdi Ara

BCB de DC motor ve Timer Sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
451
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • slm. BCB de Timer komutu ile DC motoru sürekli çalışmasını ve hızını ayarlamayı yardımlarınızla başardım. fakat sorunum Timer ile çalışmaya başlayan motoru durduramamak. Button2 ile durdurmaya ayarladım. butona basınca duruyor ama tekrar çalışmaya başlıyor. birde Button1 i çalıştırmaya ayarladım ama ben Button1 e basmadan çalışmaya başlıyor. Birçok kitap karıştırdım ama sorunumu çözemedim. yardımlarınız için teşekkürler. kodlar aşağıda. bu kodlardaki hatalarımı düzeltirseniz sevinirim.

    #include <vcl.h>
    #include<winio.h>
    #pragma hdrstop

    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma link "CSPIN"
    #pragma link "PERFGRAP"
    #pragma resource "*.dfm"


    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
    {

    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Timer1->OnTimer;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {

    InitializeWinIo();
    SetPortVal(0x378,0,1);
    ShutdownWinIo();

    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    int T=100;
    int ton=CSpinEdit1->Text*T/100;
    int tof=T-ton;

    InitializeWinIo();
    SetPortVal(0x378,1,1);
    Sleep(ton);
    SetPortVal(0x378,0,1);
    Sleep(tof);
    ShutdownWinIo();
    }
    //---------------------------------------------------------------------------







  • -InitializeWinIo, ShutdownWinIo fonsiyonlarını sadece form oluşturulurken ve uygulama kapatılırken kullanın. burada her yerde kullanılmış özellikle de timer içerisinde bir anlamı yok.

    BCB de;

    form1 üzerine tıklayın, "object inspector" tan events sekmesine gelin.
    açılan listede "OnActivate" nin sağ tarafındaki boşluğa çift tıklayın

    void __fastcall TForm1::FormActivate(TObject *Sender)
    {
    //portu açmak için gereken ifadeler
    }

    ifadesini oluşturacak. bu fonksiyon form oluşturulurken çalıştırılır buraya paralel portu açmak için gerekli ifadeleri yazın.

    aynı şekilde OnActivate nin altında "OnClose" göreceksiniz, sağ tarafındaki boşluğa çift tıklarsanız

    void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
    //portu kapatmak için gereken ifadeler
    }

    ifadesini oluşturacak. bu fonksiyonda uygulama kapatılırken çalıştırılır paralel portu kapatmak için gereken ifadeleri buraya yazın.

    -başlangıçta port değerleri sıfırlayıp ve timer ı disable ederseniz sizin isteğiniz dışında motor çalışmayacaktır. aynı şekilde OnActivate kısmına

    Timer1->Enabled=false; //timer çalışmaz
    SetPortVal(0x378,0,1); //motor çalışmaz

    ifadelerini ekleyin. bu durumda program başladığında timer çalışmayacak ve port değeri 0 olduğundan motor dönmeyecektir.

    motoru çalıştırmaya ayarladığınız buton fonksiyonu içerisine ise

    Timer1->Enabled=true; //timer çalışır

    yazın. bu durumda timer çalışacak ve motor dönmeye başlayacaktır.

    aynı şekilde motoru durdurmak için ise ilgili buton fonksiyonuna

    Timer1->Enabled=false; //timer çalışmaz
    SetPortVal(0x378,0,1); //motor çalışmaz

    ifadelerini yazın.

    kolay gelsin...




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.