Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
1
Cevap
495
Tıklama
0
Öne Çıkarma
BCB de DC motor ve Timer Sorunu
İ
19 yıl
Onbaşı
Konu Sahibi

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();
}
//---------------------------------------------------------------------------

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



R
19 yıl
Yarbay

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



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.