ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Kurze Zeit warten | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
19.01.2005, 16:21 Uhr Ralf27 Posts: 2779 Nutzer |
Wie kann ich Systemfreundlich eine sehr kurze Zeit warten? Mit der Delay-Routine aus der Dos-Lib kann ich ja nur bis 1/50 Sekunde genau warten. Wenn ich aber noch kürzere und noch genauer warten möchte und das auch noch systemfreundlich machen möchte, wie kann ich da am besten warten? (also, nicht ich sondern das Programm. :-D ) -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
19.01.2005, 16:33 Uhr thomas Posts: 7718 Nutzer |
timer.device Zitat: Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
19.01.2005, 16:45 Uhr bubblebobble Posts: 707 Nutzer |
Mit dem timer.device. Das geht so (AB2 Code, sollte aber kein Problem sein das in C genauso zu machen). code:*msgport.MsgPort = CreateMsgPort_() If *msgport *msg.timerequest = CreateIORequest_(*msgport,SizeOf.timerequest) If *msg If OpenDevice_ ("timer.device",#UNIT_MICROHZ,*msg,0) = False *msgtr_nodeio_Command = #TR_ADDREQUEST // Zeit setzen: *msgtr_timetv_secs = ... // so viele Sekunden plus *msgtr_timetv_micro = ... // so viele Mikrosekunden // und jetzt zum eigentlichen Warten: DoIO_ *msg // du kannst auch SendIO und CheckIO und WaitIO machen, // wenn du in der Zwischenzeit noch was berechnen willst. CloseDevice_ (*msg) Else error {"Unable to open timer.device !"} End If DeleteIORequest_ (*msg) Else error {"Failed to create timerequest !"} End If DeleteMsgPort_ (*msgport) Else error {"Failed to create msgport !"} End If Das ganz solltest du natürlich in drei Funktionen verteilen, damit du nicht jedesmal das Device öffnen und schliessen musst: timer_open() timer_wait(mytime) timer_close() ACHTUNG: tv_micro sind Mikrosekunden, nicht Millisekunden, also eine 1/1000000 Sekunde. Ich denke diese Auflösung reicht für deine Zwecke. Es geht noch feiner, aber dann muss man sich mit der EClock Frequenz direkt rumschlagen und das ist sehr fehleranfällig und kompliziert. Wenn du ein Spiel oder eine Animation timen willst, solltest du aber keine feste Zeit warten mit DoIO(), sondern besser SendIO() benutzen, und dann deine Berechnungen machen. Wenn die Berechnungen fertig sind, machst du ein WaitIO(). Das WaitIO() kehrt sofort zurück, falls die gewünschte Zeit bereits überschritten ist, oder wartet ansonsten die verbleibende Zeit. Nach WaitIO() solltest du dann sofort den nächsten SendIO() rausschicken. (tv_micro und tv_secs wird runtergezählt, muss also immer neu gesetzt werden). Das ist für Spiele oder Animationen genau genug. [ Dieser Beitrag wurde von bubblebobble am 19.01.2005 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
19.01.2005, 16:47 Uhr Ralf27 Posts: 2779 Nutzer |
Also Microsekunden ist schon wirklich sehr genau und mehr als Ausreichend für mein Projekt. Es geht dabei um Schrittmotoren. Ich betreibe sie gerade mit der Dos-Funktion Delay mit 1/50sek pro Schritt. Da kann ich dann wirklich Gas geben. PS: Ich progge als noch nicht in C sondern noch in Basic. Ich progge kaum noch und in Basic hab ich halt über 17 Jahre Erfahrung. Mir ist schon klar das C die Zukunft gehört, obwohl Microsoft schon wieder dafür einen neuen Namenn gefunden hat. .NET. Aber das ist mir jetzt wirklich zu hoch. Ich bleib lieber bei meinen Hobbyprojekten bei Basic, das auch auf dem Pegasos läuft. Leider geht es damit überhaupt nicht auf dem AmigaOne... [ Dieser Beitrag wurde von Ralf27 am 19.01.2005 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
19.01.2005, 17:31 Uhr bubblebobble Posts: 707 Nutzer |
Dann benutze doch BlitzBasic (AmiBlitz2). Wenn du systemfreundlich programmierst läuft es überall. (ausser AROS). -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, UDM, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
19.01.2005, 20:07 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat: Hab mir damals BB2 bei Oberland gekauft, konnte aber damit recht wenig anfangen. -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Kurze Zeit warten | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |