gibt es in Profan die Möglichkeit den Programmablauf über ein Interrupt zu unterbrechen (z.B. Timergesteuert). Der Timer löst standartmäßig ein "WaitInput" aus. Das kann ich aber so nicht gebrauchen. Mein Programm muß ständig den seriellen Port im "Blick haben" und auf verschiedenste Tasten reagieren. Zwischen all diesen Aufgaben soll das Programm aber nach einer exakten Zeitvorgabe über die serielle Schnittstelle ein Telegramm senden. Zur Zeit habe ich den "&GetTickCount" Befehl in die Programmschleife eingebaut und berechne die vergangenen ms seit des letzten Aufrufes und wenn die gewünschte Zeit vergangen ist wird das Telegramm gesendet.
Reicht da nicht SetTimer aus ? Ist da die Zeit abgelaufen, so wird sogar WaitInput verlassen. Bei der seriellen Schnittstelle mache ich das immer so. Man muß halt nur das Timing des sendenden Gerätes im Blick haben und dementsprechend den Timer setzen. So mancher MC (z.B. AVR)braucht da ein paar Millisekunden. Wenn man dann auch die Puffer bei OpenCom groß genug hält (z.B. 1024), geht auch nichts verloren.
Man kann aber auch die Schnittstelle ständig pollen, wenn man XProfans MultiProzessing (pExec) benutzt. Dann kannst du den Timer fürs Senden des Telegramms benutzen.
Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
SetTimer1000'wenn alle Sekunde das Telegramm geschickt werden soll.
f& =Opencom(...)' evtl mit Setcom() konfigurieren' dann mit pExec() Prozess zum Abhorchen der Schnittstelle aufrufen.
pid& =pExec(|Polling, %HWndoderFensterhandle, f&)' Handle der Schnittstelle und evtl. andere Handles, die in der Procedur' angesprochen werden (z.B. ein Editcontrol,Listbox usw.) mitgeben.
ende% =0WhileNot ende%
WaitInputIf %wmTimerprocess("Suspend", pid&)' Prozess anhalten' Hier das Telegramm sendenprocess("Resume", pid&)' Prozess läuft weiterEndWhileProcPollingParameters handle&, Port&
var ende% =0Whilenot ende%
casegetText$(handle&)="" : ende% =1' Hier Schnittstelle pollenEndWhileEndProc
Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.