Delay kleiner als millisekunde

Anfängerfragen zum Programmieren mit PureBasic.
Wolfram
Beiträge: 28
Registriert: 23.08.2013 14:38
Computerausstattung: OSX 10.13 | PB 5.46

Re: Delay kleiner als millisekunde

Beitrag 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
OSX 10.13 | PB 5.46
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Delay kleiner als millisekunde

Beitrag 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()
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten