000
08.07.2004, 12:49 Uhr
Heraklea
|
hallo leute
folgendes habe das in diesem forum erhaltene codebeispiel mal getestet um signale mit einer pulsbreite zu erhalten undzwar 80 hz. der code bei mir ist folgender
C++: |
#include<stdio.h> #include <Windows.h> #include<mmsystem.h> #include<iostream> #include "WinIo.h"
#pragma comment(lib,"WinIo.lib")
int main() { bool bResult; //DWORD dwPortVal;
//SYSTEMTIME lptime; LONGLONG Frequency, CurrentTime, LastTime; double TimeElapsed, TimeScale; bResult=InitializeWinIo(); QueryPerformanceFrequency( (LARGE_INTEGER*) &Frequency); TimeScale = 1.0/Frequency; byte flag=0; QueryPerformanceCounter( (LARGE_INTEGER*) &CurrentTime); while(true){ flag=!flag; LastTime=CurrentTime; //hier ausgang auf flag setzen //Sleep(1); if(bResult) { (flag==0) ? SetPortVal(0x378, 0, 1):SetPortVal(0x378, 1, 1); } else printf("Winio konnte nicht geöffnet werden\n"); while(((CurrentTime - LastTime) * TimeScale*1000)<6.25) { QueryPerformanceCounter( (LARGE_INTEGER*) &CurrentTime);
} } return 0; }
|
dieser code erzeugt ein signal von 80 hz und gibt es auf dem parallel port aus. folgende problematik:
die while schleife erzeugt bei mir ne prozessorauslastung von fast 98 prozent das ist fast aktives warten. ich brauche aber ne möglichkeit ein signal zu generieren ohne das ich das system belaste. könnte ich zum beispiel software interrupts benutzen wenn ja wie mache ich das nennt mann so etwas etwa interrupt hooking könnt ihr mir helfen
nochmals danke an windalf und co
BR heraklea |