Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » High Resolution performance counter???

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.07.2004, 14:01 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


hab zwar keine lösung für das problem aber ne vereinfachung

C++:
SetPortVal(0x378, flag, 1)



statt

C++:
(flag==0) ? SetPortVal(0x378, 0, 1):SetPortVal(0x378, 1, 1);




C++:
if(bResult)...//wiso erst in der schleife prüfen würd ich schon vorher machen und mir die schleife ggf. sparen


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: