Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Taktsignal erzeugen

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
07.08.2005, 19:33 Uhr
Dustmaster80



Hi Leute!

Ich wollte mal kurz nachfragen ob es in C++ ne möglichkeit gibt so ne art Takt zu programmieren??
Ich möchte die Druckerschnittstelle (LPT) ansprechen und dort die Ausgabe der Bits
in einer beliebigen Zeitfolge ändern. Wie ich die LPT-Schnittstelle anspreche weiss ich aber das
Taktsignal bekomm ich nicht hin.
Ein kurzes Beispiel:
Ich möchte z.B. auf einem Pin die Bitfolge 1 0 1 0 in 10ms Schritten ausgeben.
Ich habs erst mit "sleep" versucht ist aber zu ungenau und wenn ich ne Schleife progge dann hängts ja von der Geschwindigkeit der CPU ab wie schnell der Takt ist.
Hoffe ihr habt mein Prob verstanden und jemand kann mir helfen?!

Gruß, Steff
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.08.2005, 19:48 Uhr
Pler
Einer von Vielen
(Operator)


Mein Vorschlag:
Windows: setTimer( ..)
Linux: extra prozess, der immer sleep() macht und dann mit kill() ein signal an dein prog sendent
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.08.2005, 19:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


SetTimer ist genauso ungenau, was evtl hilft (unter Windows z.b) ist eine Art "GetTickCount"-Funktion, dann kannste ziemlich genau bestimmen wieviel zeit seit dem letzten durchgang vergangen ist.

also so:


C++:

void own_sleep(int ms)
{
DWORD last = GetTickCount();
while(GetTickCount() - last >= ms)
  last = GetTickCount();
}



dann z.b

own_sleep(10);

das sollte ziemlich genau sein.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.08.2005, 09:51 Uhr
Airdamn




Zitat von FloSoft:


C++:
void own_sleep(int ms)
{
DWORD last = GetTickCount();
while(GetTickCount() - last >= ms)
  last = GetTickCount();
}




Sollte das nicht sowas sein:

C++:
void own_sleep(int ms)
{
DWORD last = GetTickCount();
while(GetTickCount() - last >= ms);
}


Sonst wird doch die Differenz von GetTickCount und last nie wirklich groß?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.08.2005, 10:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Naja kommt davon wenn man nicht nachdenkt, muss natürlich so rum sein:


C++:
void own_sleep(int ms)
{
  DWORD last = GetTickCount();
  while(GetTickCount() - last < ms);
}



Also < dann springt er aus der schleife sobald der unterschied eben "ms" beträgt.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.08.2005, 13:24 Uhr
Dustmaster80



Hi Leute,

danke für eure Antworten!
GetTickCount hat einwandfrei funktioniert.

Bye, Steff
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: