none
Zeiteingabe RRS feed

  • Question

  • Ich möchte in GraphicWindows in eine TextBox eine Zeit in Secunden eingeben . Die eingegebene Zeit soll dann im Programm ein bestimmtes Ereignis auslösen. Wie kann man soetwas machen?
    Monday, October 7, 2013 7:07 AM

Answers

  • Hallo Eddch,

    das ist natürlich schlecht. Du könntest jedoch ein Translator Tool benutzen um deinen deutschen Text zu übersetzen. Dann würde jeder verstehen was du möchtest. Am besten schreibst du den deutschen Text nochmal darunter (für all jene die des Deutschen mächtig sind).

    In unseren Programmen ist eigentlich genau das drin was du brauchst. Nämlich das Timer Ereignis. Ich habe es dir einfach mal eingebaut und hochgeladen: QCX116-0

    Das sollte genau das sein was du möchtest. Ich habe dir wieder zwei Versionen erstellt. Einmal deine mit dem Timer Ereignis und dann nochmal eine "aufgeräumte" Version mit dem Timer Ereigniss.


    Mit freundlichen Grüßen Timo Greetings Timo


    Tuesday, October 8, 2013 9:44 AM
  • Also auf den ersten Blick sieht man da, daß ja die Subs StartN  alle beinahe identisch sind und sich nur jeweils r[1] bis r[3] ändern (falls ich auf die Schnelle nix übersehen hab) und da Du ja ohnehin die LitDev verwendest, würde ich an LDCall.Function3 (Funktion mit 3 Übergabe-Werten) denken -> nur eine Sub und kürzer.

    Weiters ließen sich ja auch r[1]-r[3] logisch BITweise (8bit) ansprechen, mit logischen Rechenoperationen (AND, OR, XOR). Ich weiß, es gibt eine Extension, die das Rechnen damit unterstützt, zumindest ist mir solches beim Übersetzen irgendeiner .xml schon mal untergekommen. Da sehe ich aber noch nach. Die LitDev.dll glaublich jedoch nicht. Sonst ist das auch selbstgeschnitzt 'zu Fuß' machbar, über eine Sub.

    Also wenn zB.

    Start1 -> r[2] = 255 - 2^0

    Start2 -> r[2] = 255 -2^1

    Start3 -> r[2] = 255 -2^2

    usw.

    Wenn Du also Start1 und Start2 ansprechen willst, müsste auf r[2] liegen 252 = 255 - 2^0 -2^1 = 255-1-2 = 252

    Außerdem ev. anstatt Buttons-> LDControls.AddCheckBox   einfach 10 Checkboxen um diejeweiligen Relais an-/abzuhaken.

    PS: Hab noch alles durchgesehen und die ESL Extension unterstützt zB. ESLMaths.BitwiseXOR, ESLMaths.BitwiseOR, ESLMaths.BitwiseAND

    Tuesday, October 8, 2013 3:21 PM
    Answerer
  • Hier wäre ein einfaches Bspl: LSQ570

    Gib keine zu hohe Zahl ein, denn nach der korrekten Zahleingabe läuft der Timer und meldet sich in dem Beispiel erst nach der Timerablauf-Wartezeit wieder zurück. (also zB 10 sec oder so eben)

    Ups, habe Timer.Pause() vergessen. Ohne das läuft der Timer im Beispiel hier endlos weiter.

    Weitere Möglichkeit wäre noch einen eventuellen Zeitablauf (weiß nicht was Du mit den Sekunden dann machen willst) mittels Clock.ElapsedMilliseconds abzufragen und steuern.

    Monday, October 7, 2013 10:13 AM
    Answerer
  • German:

    Hallo Eddch,

    für SmallBasic gibt es ausschließlich dieses offiziele Forum. Deshalb wird hier Englisch gesprochen. Also poste hier bitte in Zukunft in Englisch. Sonst kann dir nur ein Bruchteil der Nutzer helfen.

    Nun zu deiner Frage. Ich weis nicht genau was du machen möchtest. Daher habe ich dir zwei Möglichkeiten, welche ich in Betracht ziehen würde, in einem kleinen Programm zusammengefasst. Du kannst es hier finden: LWN233

    English:

    Hello Eddch,

    there is only one official forum for SmallBasic. That's why the main language is English. Please, write your next comments in English. Otherwise, only a few users can help you.

    Now your question. I don't exactly know what you want to do. Therefore I have summarized two ways you could use in a small program. You can find it here: LWN233

    Ganz vergessen, meine Version scheint im Browser nicht zu funktionieren. Daher musst du sie dir in dein SmallBasic kopieren!


    Mit freundlichen Grüßen Timo Greetings Timo


    Monday, October 7, 2013 10:40 AM
  • Hallo ihr beiden und 'Morgen',

    Würde ev. noch zur Fehlerbehandlung die Textbox-Abfrage beschränken auf Zahlen 0-9 (und ev noch den Kommapunkt, wenn auch Gleitkommawerte erlaubt sein sollen), sonst funzt der Timer nicht bei Fehleingabe.

    Ev. noch auf einen MaxWert, da zB. 10000 sec. nicht viel Sinn machen würde ?! (je nach Anwendungszweck eben)

    Ja und das Abfangen von Ereignissen global im Main-Programm, damit's nicht ungewollt zu Parallelprozessen kommt.

    Timos (mod. für Consolenausgabe) zum Testen QCX116-1, da ich (noch?) keinen IOWarrior habe.

    Tuesday, October 8, 2013 11:37 AM
    Answerer

All replies

  • Hier wäre ein einfaches Bspl: LSQ570

    Gib keine zu hohe Zahl ein, denn nach der korrekten Zahleingabe läuft der Timer und meldet sich in dem Beispiel erst nach der Timerablauf-Wartezeit wieder zurück. (also zB 10 sec oder so eben)

    Ups, habe Timer.Pause() vergessen. Ohne das läuft der Timer im Beispiel hier endlos weiter.

    Weitere Möglichkeit wäre noch einen eventuellen Zeitablauf (weiß nicht was Du mit den Sekunden dann machen willst) mittels Clock.ElapsedMilliseconds abzufragen und steuern.

    Monday, October 7, 2013 10:13 AM
    Answerer
  • German:

    Hallo Eddch,

    für SmallBasic gibt es ausschließlich dieses offiziele Forum. Deshalb wird hier Englisch gesprochen. Also poste hier bitte in Zukunft in Englisch. Sonst kann dir nur ein Bruchteil der Nutzer helfen.

    Nun zu deiner Frage. Ich weis nicht genau was du machen möchtest. Daher habe ich dir zwei Möglichkeiten, welche ich in Betracht ziehen würde, in einem kleinen Programm zusammengefasst. Du kannst es hier finden: LWN233

    English:

    Hello Eddch,

    there is only one official forum for SmallBasic. That's why the main language is English. Please, write your next comments in English. Otherwise, only a few users can help you.

    Now your question. I don't exactly know what you want to do. Therefore I have summarized two ways you could use in a small program. You can find it here: LWN233

    Ganz vergessen, meine Version scheint im Browser nicht zu funktionieren. Daher musst du sie dir in dein SmallBasic kopieren!


    Mit freundlichen Grüßen Timo Greetings Timo


    Monday, October 7, 2013 10:40 AM
  • Hallo Timo Sö und Pappa Lapub danke für eure Programme leider komme ich damit nicht weiter.

    Mit der englischen Sprache kann ich auch nicht dienen weil ich sie einfach nicht gelernt habe.

    Zum hoffentlich besseren Verständnis habe ich unter QCX116 ein kleines Programm veröffentlicht .

    Damit kann ich meine IO-Warrior Relaiskarte ansteuern.  Wenn ich den Startbutton klicke wird ein Relais eingeschaltet.  Bei Relais aus Button natürlich wieder aus.

    Ich möchte in die Textbox ein Zeit eintragen.  Dann auf Start klicken. Nun muss die Zeit herunderzählen und wenn sie 0 ist soll mein Relais wieder auf aus gehen.

    Tuesday, October 8, 2013 7:27 AM
  • Hallo Eddch,

    das ist natürlich schlecht. Du könntest jedoch ein Translator Tool benutzen um deinen deutschen Text zu übersetzen. Dann würde jeder verstehen was du möchtest. Am besten schreibst du den deutschen Text nochmal darunter (für all jene die des Deutschen mächtig sind).

    In unseren Programmen ist eigentlich genau das drin was du brauchst. Nämlich das Timer Ereignis. Ich habe es dir einfach mal eingebaut und hochgeladen: QCX116-0

    Das sollte genau das sein was du möchtest. Ich habe dir wieder zwei Versionen erstellt. Einmal deine mit dem Timer Ereignis und dann nochmal eine "aufgeräumte" Version mit dem Timer Ereigniss.


    Mit freundlichen Grüßen Timo Greetings Timo


    Tuesday, October 8, 2013 9:44 AM
  • Hallo ihr beiden und 'Morgen',

    Würde ev. noch zur Fehlerbehandlung die Textbox-Abfrage beschränken auf Zahlen 0-9 (und ev noch den Kommapunkt, wenn auch Gleitkommawerte erlaubt sein sollen), sonst funzt der Timer nicht bei Fehleingabe.

    Ev. noch auf einen MaxWert, da zB. 10000 sec. nicht viel Sinn machen würde ?! (je nach Anwendungszweck eben)

    Ja und das Abfangen von Ereignissen global im Main-Programm, damit's nicht ungewollt zu Parallelprozessen kommt.

    Timos (mod. für Consolenausgabe) zum Testen QCX116-1, da ich (noch?) keinen IOWarrior habe.

    Tuesday, October 8, 2013 11:37 AM
    Answerer
  • Hallo nochmal und Danke für eure Hilfe.

    Ich habe die letzte Version von Timo , die super funktioniert, auf 10 Relais erweitert.

    Es passt alles super aber eine Sache steht noch an. Ich habe schon viele Versuche gemacht aber es will mir nicht gelingen mehrere Relais zur gleichen Zeit ein zuschalten. Die neue Programm ID MTD 891.

    Tuesday, October 8, 2013 2:14 PM
  • Also auf den ersten Blick sieht man da, daß ja die Subs StartN  alle beinahe identisch sind und sich nur jeweils r[1] bis r[3] ändern (falls ich auf die Schnelle nix übersehen hab) und da Du ja ohnehin die LitDev verwendest, würde ich an LDCall.Function3 (Funktion mit 3 Übergabe-Werten) denken -> nur eine Sub und kürzer.

    Weiters ließen sich ja auch r[1]-r[3] logisch BITweise (8bit) ansprechen, mit logischen Rechenoperationen (AND, OR, XOR). Ich weiß, es gibt eine Extension, die das Rechnen damit unterstützt, zumindest ist mir solches beim Übersetzen irgendeiner .xml schon mal untergekommen. Da sehe ich aber noch nach. Die LitDev.dll glaublich jedoch nicht. Sonst ist das auch selbstgeschnitzt 'zu Fuß' machbar, über eine Sub.

    Also wenn zB.

    Start1 -> r[2] = 255 - 2^0

    Start2 -> r[2] = 255 -2^1

    Start3 -> r[2] = 255 -2^2

    usw.

    Wenn Du also Start1 und Start2 ansprechen willst, müsste auf r[2] liegen 252 = 255 - 2^0 -2^1 = 255-1-2 = 252

    Außerdem ev. anstatt Buttons-> LDControls.AddCheckBox   einfach 10 Checkboxen um diejeweiligen Relais an-/abzuhaken.

    PS: Hab noch alles durchgesehen und die ESL Extension unterstützt zB. ESLMaths.BitwiseXOR, ESLMaths.BitwiseOR, ESLMaths.BitwiseAND

    Tuesday, October 8, 2013 3:21 PM
    Answerer
  • Hallo, ich habe einiges getestet aber bekomme es nicht hin mehr als ein Relais anzusprechen.

    Irgendwas mache ich falsch. Ich denke man braucht die LDIOWarrior.Read aber die macht leider auch nichts.

    Neue Programm ID:QDM794

    Thursday, October 10, 2013 9:40 AM
  • To convert for 8 relais to the value to insert into r[2] in your program use the following snippet:

    (in the snippet relais 1 and 3 are switched)

    relais[1]=1 relais[3]=1 For i=1 To 8 word=word*2+relais[9-i] EndFor

    r[2]=255-word

    TextWindow.WriteLine(r[2])



    Jan [ WhTurner ] The Netherlands

    Thursday, October 10, 2013 11:28 AM
    Answerer
  • Hallo, ich möchte gern wissen wie man LDControls. LastCheckBoxState richtig verwendet.

    Bei meinen letzten Programm (ID VCG879) wird beim an und abhacken eine Reaktion ausgelöst.

    Ich habe noch immer keine Lösung mehrere Relais zur gleichen Zeit zuaktivieren.

    Der Vorschlag von Wh Turner33 geht leider nicht oder ich weiss ihn nicht richtig zu nutzen.

    Saturday, October 12, 2013 9:51 AM
  • Hallo, ich möchte gern wissen wie man LDControls. LastCheckBoxState richtig verwendet.

    Bei meinen letzten Programm (ID VCG879) wird beim an und abhacken eine Reaktion ausgelöst.

    Ich habe noch immer keine Lösung mehrere Relais zur gleichen Zeit zuaktivieren.

    Der Vorschlag von Wh Turner33 geht leider nicht oder ich weiss ihn nicht richtig zu nutzen.

    I don't have IOWarrior. and I can't understand what r[1],r[2],r[3] mean.

     I can't test this work well or not.  PLZ try this.   ZXP163

      
    Saturday, October 12, 2013 2:28 PM
    Answerer
  • As I understand it, the r[1], r[2] and r[3] form a three word command for the IOWarrior. The 8 bits of r[2] can be used to switch 8 output lines. Also some bits of r[3] are used for some additional output lines ( I think 4, but do not know which bits are used)

    Jan [ WhTurner ] The Netherlands


    Sunday, October 13, 2013 2:14 PM
    Answerer
  • Das ist alles richtig was Sie sagen.  Ich habe auf meiner Relaiskarte 10 Relais und weiss auch die dazugehörigen Werte von r[2] .  Das Problem ist das immer nur ein Relais nach dem andern angeschrieben werden kann. Das nützt mir aber wenig ich muss bei einem Start auch mehrere Relais ansprechen können.

    Ein weiteres Problem sind auch die CheckBoxen. Ich löse beim an und beim abhacken eine Aktion aus was natürlich nicht richtig ist.  Der Code müsste aber so stimmen.  Ich würde Sie bitte es einmal zu prüfen.

    ID ZNH 073

    Sunday, October 13, 2013 3:24 PM
  • Did you see my answers in your other threads? Did you try the solutions?

    You have the command "LDControls.CheckBoxChanged = Box in your program.

    On every change in the checkbox state (on/off) the subroutine Box is executed.


    Jan [ WhTurner ] The Netherlands


    Sunday, October 13, 2013 5:29 PM
    Answerer