Software > Coding
TOS/MagiC // Uhr abschalten (Timerevent verhindern)
mfro:
Wenn Du die Uhr selbst geschrieben hast, hast Du das doch ganz bestimmt richtig und systemkonform gemacht. Nämlich den System Timer Vektor per XBRA-Verfahren verbogen.
Wenn das so ist, mußt Du in deinem Screensaver doch nur den XBRA-Eintrag suchen und temporär aus der Vektorkette aushängen. Zum Programmende trägst Du den "richtigen" Vektor wieder ein und alles ist gut.
Gruß,
Markus
1ST1:
Stimmt, XBRA sollte auch gehen, da habe ich garnicht mehr dran gedacht.
m0n0:
Hallo,
Die Uhr wir oben rechts im Menu angezeigt? Das heißt also es ist ein Programm das unter GEM läuft? Dann würde ich form_dial probieren, denn eigentlich sollte der Bildschirmschoner den Bildschirm sperren, und somit würde das neuzeichnen der Uhr so lange warten bis der Bildschirmschoner den Bildschirm wieder freigibt. Das hat auch den Vorteil das die Uhr kein CPU verbraucht während der Bildschirmschoner läuft.
Oder denke ich da Falsch und ein ACC kann form_dial nicht aufrufen?
Schwieriger wirds wenn die UHR auch im Kommandozeilen modus angezeigt werden soll - so wie bei clocky....
rainers:
Öööhm.
Ich bin doch kein "Hardcode coder". Ich wälze mich durch Bücher und wenn was Passendes gefunden wurde, dann nehme ich es und passe es meinen Bedürfnissen an. Sorry, wenn ich den Eindruck erweckt habe, ich könne programmieren. :D :D
Also meine Uhr ist praktisch ein Abfallprodukt. Sie ist in dem ACC enthalten, welches die CapsLock-LED steuert. Da dieses timer_event-gesteuert ist, dachte ich mir: Warum nicht dann darin auch gleich die Zeitanzeige verwirklichen.
Höchstwahrscheinlich ist der Begriff "Uhr" falsch. Es ist nur eine Zeitanzeige.
Weder XBRA habe ich verwendet, noch einen "System Timer Vektor" verbogen.
Hier ist der Auszug aus dem Code.
-----------------------------
BEGIN
IF Init_Gem >= 0 THEN
BEGIN
i := 8;
iDateTime_ := 0;
TEXT_COLOR(BLACK);
TEXT_HEIGTH(6);
SYS_FONT_SIZE(d, ch, d, d);
WHILE TRUE DO
BEGIN
IF (i mod i2Seconds) = 0 THEN
BEGIN
i := 8;
iDateTime := GET_DATE;
if iDateTime <> iDateTime_ THEN
BEGIN
iDateTime_ := iDateTime;
sDate := '00.00.00';
dt := iDateTime & $1F;
sDate[1] := Chr(dt div 10 + 48);
sDate[2] := Chr(dt mod 10 + 48);
dt := Shr(iDateTime, 5) & $F;
sDate[4] := Chr(dt div 10 + 48);
sDate[5] := Chr(dt mod 10 + 48);
dt := Shr(iDateTime, 9) & $7F - 20;
sDate[7] := Chr(dt div 10 + 48);
sDate[8] := Chr(dt mod 10 + 48);
END;
sTime := '00:00:00';
iDateTime := GET_TIME;
dt := Shr(iDateTime, 11) & $1F;
sTime[1] := Chr(dt div 10 + 48);
sTime[2] := Chr(dt mod 10 + 48);
dt := Shr(iDateTime, 5) & $3F;
sTime[4] := Chr(dt div 10 + 48);
sTime[5] := Chr(dt mod 10 + 48);
dt := 2 * (iDateTime & $1F);
sTime[7] := Chr(dt div 10 + 48);
sTime[8] := Chr(dt mod 10 + 48);
DRAW_STRING(570, ch - 9, sDate);
DRAW_STRING(570, ch, sTime);
END;
i := i + 1;
iEvent := Get_Event(E_Timer, 0, 0, 0, 250,
false, 0, 0, 0, 0, false, 0, 0, 0, 0,
mbMsg, d, d, d, d, d, d);
END;
END;
END.
-----------------------------
Danke Euch.
-R.
mfro:
--- Zitat von: Rainer (s) am Di 09.04.2013, 06:52:19 ---Öööhm.
Ich bin doch kein "Hardcode coder". Ich wälze mich durch Bücher und wenn was Passendes gefunden wurde, dann nehme ich es und passe es meinen Bedürfnissen an. Sorry, wenn ich den Eindruck erweckt habe, ich könne programmieren. :D :D
--- Ende Zitat ---
Wieso? Das ist doch gut!
Allerdings waren wir ein wenig auf dem falschen Dampfer. Du hast dich nicht in den Timer-Event gehängt, sondern die "saubere" Methode gewählt (Accessory mit GEM-konformen AES Timer Events). Vergiß, was ich oben geschrieben habe (XBRA).
Das beste wird sein, Du baust in deine Uhr noch zwei Eventhandler (MU_MESAG) ein, die als "Uhr aus" und "Uhr an" interpretiert werden. Dazu evnt_timer() durch evnt_multi() ersetzen und zusätzlich zum Timer auf zwei selbst gewählte Nachrichtennummern (UHR_AUS, UHR_AN) warten.
In dem Programm, das die Uhr loshaben will, schickst Du die entsprechende Nachricht (UHR_AUS) per appl_write() an dein Uhrenprogramm, dessen ap_id Du vorher mit appl_find() gesucht und gefunden hast. Die Uhr muß drauf reagieren und sich schlafen legen. Am Ende schickst Du ein UHR_AN and das Accessory und sie malt wieder auf dem Bildschirm rum.
Ein schönes Beispiel für GEM-Multitasking ohne MiNT und Magic!
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln