Void() Geschrieben 17. Mai 2002 Geschrieben 17. Mai 2002 Also mein Problem ist: Ich habe 3 Buttons im Form, und diese 3 Buttons steuern einen Motor. Der 1. in die Rechte Richtung, der 2. in die Linke richtung, der 3. ist für Stopp. Problem ist nur, es gibt keinen Motor, der von 500 Umdrehungen/min nach rechts, ruckartig 500 Umdrehungen/Minute nach links machen kann, so brauche ich in den Buttons für die Rechte und Linke richtung eine "Timeout" von, sagen wir mal, 3 Sekunden. d.h. jedesmal wenn er die Richtung ändert soll er 3 Sekunden warten, dann die Richtung ändern, wie baue ich das ein??? Der Code: Option Explicit Dim Befehl, Te, T, Kette As String Dim Multi As Integer Private Sub Form_Load() Multi = iopen("hpib,7,23") Call itimeout(Multi, 10000) Call itermchr(Multi, 10) Te = Chr$(13) + Chr$(10) End Sub Private Sub Right_Click() <- Button für rechte Richtung Rel1.Text = "Geschlossen" Rel2.Text = "Offen" Rel3.Text = "Offen" Rel4.Text = "Geschlossen" Richt.Text = "Right" 'Befehl für die Rechte Richtung Kette = "1,1,2,0,3,0,4,1" <---------"Relais1,zu,Relais2,offen,Relais3,offen,Relais4,zu" Befehl = "OB,7," + Kette + "T" + Te Call iwrite(Mulit, ByVal Befehl, Len(Befehl), 0, 0&) End Sub Private Sub Left_Click()<- Button für Linke Richtung Rel1.Text = "Offen" Rel2.Text = "Geschlossen" Rel3.Text = "Geschlossen" Rel4.Text = "Offen" Richt.Text = "Left" 'Befehl für die Linke Richtung Kette = "1,0,2,1,3,1,4,0" Befehl = "OB,7," + Kette + "T" + Te Call iwrite(Mulit, ByVal Befehl, Len(Befehl), 0, 0&) End Sub Private Sub Stopp_Click()<- Button für Stopp Rel1.Text = "Offen" Rel2.Text = "Offen" Rel3.Text = "Offen" Rel4.Text = "Offen" Richt.Text = "Stopp" 'Stopp-Befehl Kette = "1,0,2,0,3,0,4,0" Befehl = "OB,7," + Kette + "T" + Te Call iwrite(Mulit, ByVal Befehl, Len(Befehl), 0, 0&) End Sub Private Sub End_Click() Call iclear(Multi) Call iclose(Multi) Unload Me End End Sub Vielleicht besser zu verstehen: Ich klicke "rechts" - button, motor fängt an sich rechts zu drehen, dann klicke ich "links" - button,>>>>motor soll erstmal 2 - 3 Sek pausieren, dann erst nach links drehen<<<<< [gleiches gilt, wenn ich erst "links"-button drücke, und dann "rechts"-button], ich drücke auf "Stopp"-Button, motor soll erst nach 3 Sek. (oder sofort)zum Stillstand kommen. Ich hoffe, dass ich es genau genung beschrieben habe. Ich wäre dankbar, wenn mir einer erklärt, und zusätlich vielleicht bissel Beispielcode befügt, MIT Kommentar, wenn's geht. Vielen lieben Dank im Vorraus, Void() Zitieren
progmaker Geschrieben 17. Mai 2002 Geschrieben 17. Mai 2002 Du könntest einen Timer auf deine Form setzen. Den Intervall setzt du auf die Zeit, die der Motor warten soll. Zur Entwurfszeit ist der Timer ausgeschaltet. Im OnTimer Ereignis könntest du eine Routine aufrufen, die den Motor steuert. Der Routine könntest du dann paar Übergabeparameter mitgeben, die sagen, was sie jetzt machen soll. Z. B. Rechts, Links, Stopp, .... Wenn du auf einen der Buttons drückst, schaltest du den Timer ein. Der Timer wartet die Zeit, die du im Intervall eingestellt hast und führt die OnTimer Routine aus. Da wird deine Steuerungsroutine ausgeführt. Am Ende der OnTimer Routine sczhaltest du den Timer wieder aus. Ich hoffe, ich hab's verständlich beschrieben, ansonsten melde dich nochmal. Zitieren
Void() Geschrieben 17. Mai 2002 Autor Geschrieben 17. Mai 2002 Huh?? nee, ich bin noch ganz in den Anfängen! Was wie und wo?? Sorry, aber ich bin echt dumm! Packe es nicht! Wie wär's mit einem Code beispiel? Zitieren
progmaker Geschrieben 23. Mai 2002 Geschrieben 23. Mai 2002 Pass auf, du setzt auf deine Form einen Timer. Den Intervall setzt du auf 3000 (3 Sekunden). Enabled setzt du auf false. Dann klickst du doppelt auf den Timer und in die Prozedur, in der du dann bist, schreibst du folgendes rein: Steuerung richtung timer1.enabled = false Als Nächstes deklarierst du eine globale Variable, z.B. dim Richtung as char die die Richtung darstellen soll und immer wenn du auf einen Button klickst, setzt du diese Variable enstsprechend. Du hast dann eine Steuerungsprozedur, die etwa so aussehen könnte: sub Steuerung(richtung as char) select case richtung case "r" 'nach rechts drehen Befehle für Drehung nach rechts case "l" 'nach links drehen Befehle für Drehung nach links case "s" 'stopp Befehle um zu stoppen 'hier kann man auch weitere Befehle einbauen end select end sub Wenn du auf einen Button klickst, könnte die Routine so aussehen: 'Beispiel für linksbutton Hier kommen deine eigene Befehle hin, z.B. Beschriftungen setzen usw Richtung = "l" 'richtung für links timer.enabled = true 'timer einschalten Genauso machst du das für die anderen Buttons, nur dass du für den RechtsButton die Richtung auf "r" setzt und für den StopButton auf "s". Ich hoffe, dass es so geht und dass ich nichts vergessen habe. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.