PMV hat geschrieben:Du erstellst einen Thread, welcher in einer Repeat : Forever Schleife das
senden ausführst.
Also erstmal hi PMV,
ja das könnte ich mir wohl vorstellen... aber unter Thread erstellen ist nicht gemeint, dass ich CreatThread() anwenden soll, sondern die Daten aufrufe oder wie?
weil ich mich mit dem Thema CreateThread() nicht so richtig verstanden habe.
Habe es vorhin ausprobiert, aber irgendwie ging es nicht so, wie ich sollte.... Das Programm hat meinen Rechner eher ausgebremst als sonstwas.
Zu dem Codeaufruf mit der Zeit habe ich das so gemacht:
Code: Alles auswählen
Procedure DELAYUS(t.l)
Structure DLong
lowlong.l
hilong.l
EndStructure
DLong=0
hitimefreq.DLong
QueryPerformanceFrequency_(@hitimefreq)
hitimecount1.DLong
hitimecount2.DLong
QueryPerformanceCounter_(@hitimecount1)
Repeat
QueryPerformanceCounter_(@hitimecount2)
Until Int((hitimecount2\lowlong - hitimecount1\lowlong)/(hitimefreq\lowlong/1000000.0))>=t
EndProcedure
a=1500
b=1500
c=2000
MyCom.s = "Com1: baud=300 parity=N data=8 stop=1"
HCom.l
HCom = ComOpen(MyCom,0,255,255) ; Die Buffer 255 könnte man evt. auf 0 setzen, da ja keine Bytes gesendet werden,
; sondern nur TXD auf High oder Low.
Procedure PPM(a,b,c)
Pause=300
PauseG=1200
Delta=20000-PauseG-a-b-c
ComSetTXD(HCOM,1)
ComSetTXD(HCOM,0)
DELAYUS(Pause)
ComSetTXD(HCOM,1)
DELAYUS(a-Pause)
;Debug a
ComSetTXD(HCOM,0)
DELAYUS(Pause)
ComSetTXD(HCOM,1)
DELAYUS(b-Pause)
;Debug b
ComSetTXD(HCOM,0)
DELAYUS(Pause)
ComSetTXD(HCOM,1)
DELAYUS(c-Pause)
;Debug c
ComSetTXD(HCOM,0)
DELAYUS(Pause)
ComSetTXD(HCOM,1)
DELAYUS(Delta)
;Debug "test"
EndProcedure
Wobei a,b,c im Programm als Global vorgegeben werden und für die einzelnen Kanäle(Channel 1-3) stehen.
Die Werte, die dort stehen wären
1000 = Servo links
1500 = Servo Mittelstellung
2000 = Servo rechts
und halt viele viele zwischenpositionen.
Die Werte sind also in diesem Fall die Millisekunden.
Solange muss der Positionswert gesendet werden, damit der Empfänger das Sendersignal auswerten kann.
Wäre super, wenn du mir ein Beispiel geben könntest, wie deine Idee dabei aussehen könnte.
Bzw. wenn du auf Danilos PBOSL(StartTimer()) ansprechen möchtest, wie ich das vernünftig aufrufen muss.
Hatte mir einfach gedacht, dass ich dann
StartTimer(#Timer1, 20, @PPM())
ausführe und der das dann aufruft, bin mir halt mit dem extra Thread nicht richtig sicher
