Seite 3 von 3

Re: Delay kleiner als millisekunde

Verfasst: 23.08.2013 19:20
von Wolfram
Da ich absoluter Anfänger bin, die Frage wie würden denn der Code aussehen wenn ich
eine Schleife haben möchte die alle 300µs eine SerialPortRead ausführt.

Danke

Gruß
Wolfram

Re: Delay kleiner als millisekunde

Verfasst: 23.08.2013 19:35
von STARGÅTE
Ich hoffe du möchtest damit keine Daten senden oder empfangen, denn dafür gibt es ja OpenSerialPort() wo du eine Lese/Schreib-Geschwindigkeit angeben kannst.

Ansonsten zB mit der DelayMicroSeconds() Funktion:

Code: Alles auswählen

Global QueryPerformanceFrequency.q, QueryPerformanceFactor.f
QueryPerformanceFrequency_(@QueryPerformanceFrequency)
QueryPerformanceFactor = 1e6/QueryPerformanceFrequency

Procedure DelayMicroSeconds(Time.q)
	Protected StartTime.q, EndTime.q
	QueryPerformanceCounter_(@StartTime)
	Repeat
		Delay(0)
		QueryPerformanceCounter_(@EndTime)
	Until (EndTime-StartTime)*QueryPerformanceFactor > Time
EndProcedure



a = ElapsedMilliseconds()
For n = 1 To 1000
	DelayMicroSeconds(300)
Next
Debug ElapsedMilliseconds()-a
Hier wird 1000 mal 300µs gewartet, was also 300ms entspricht.

Hier dann eine Anwendungsmöglichkeit.

Code: Alles auswählen

Repeat
	DelayMicroSeconds(300)
	GetSerialPortStatus(#SerialPort, #PB_SerialPort_CTS)
ForEver()