ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Suche | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
|
||||||
whose
Nutzer
11.07.2006, 03:57 Uhr [ - Direktlink - ] |
Thema: CubicIDE: Single document interface
Brett: Amiga, AmigaOS 4 @Murmel: Wenn Du Dich an die Installationsanweisungen hältst, ist es sogar noch ein klein wenig simpler. Das "Hallo Welt!" zaubert Dir Cubic dann sogar als Programmskelett gleich beim Anlegen des Projekts hin. Keine weitere Anstrengung nötig Und ja, bei Cubic ist dann alles dabei, was Du zum Starten brauchst. GCC, VBCC, Includes libs etc. pp. Wird alles nach Wunsch installiert, konfiguriert und ist dann startklar. Quelltext speichern, "Make all" im Menü wählen, klein bißchen warten, fertig. Grüße P.S.: Den "Single Document" Modus habe ich aber auch noch nicht entdeckt. Mal schauen, wo der zu finden ist. -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
11.07.2006, 03:49 Uhr [ - Direktlink - ] |
Thema: Fragen zu Intuition-Messages
Brett: Programmierung Zitat: Hm, irgendwie siehst Du das Ganze wohl etwas zu simpel... Holgers Beispiel mit YAM machte doch eigentlich recht deutlich, worum es geht. Natürlich ist es nicht in jeder Situation in einem Programm sinnvoll, den User weiterhin irgendwelche sinnfreien Eingaben machen zu lassen. Beispiel wäre hier, bei einem Editor (wie auch schon von Holger erwähnt) den Text auf einem schweinelahmen Netzlaufwerk zu speichern und dem User die (völlig sinnfreie) Möglichkeit zu geben, den gleichen Text nochmal aufs gleiche Laufwerk zu speichern. Sinnvoll ists hingegen, im Text weiter arbeiten zu können. Oder eben bei YAM tatsächlich die laufende Übertragung abbrechen zu können (was ja, dank des blockierten GUIs bei YAM nicht möglich ist, so lange die Nachricht noch übertragen wird. Wenn die Übertragung aus Gründen, die nicht bei der lokalen Maschine zu suchen sind, klemmt, hat der Benutzer eine absolut nutzlose Abbruch-Funktion. Mit einem separaten Task fürs GUI und den Transfer hätte das benutzerfreundlicher gelöst werden können). Zitat:Zitat: Das hängt davon ab, welche "Rückmeldung vom User" Du dem Hintergrund-Task schicken willst. In den meisten Fällen reicht es völlig, den Task abbrechen oder neu starten zu können, der Task ist sozusagen "williger Sklave des GUI" und hat recht eingeschränkte Möglichkeiten (es macht halt keinen Sinn, diesen Task z.B. auf eine Eingabe im GUI direkt reagieren zu lassen oder gar IDCMP auszuwerten o.Ä. Er wartet nur auf Signale vom GUI-Task, z.B. "Leg los mit Rechnen, die Daten findest Du an gewohnter Stelle" oder "brich ab, womit Du gerade beschäftigt bist und warte auf neue Anweisungen". Ein schönes Beispiel für solche Konstrukte sind Raytracer. Sobald im Editor ein Objekt einer gerade in der Berechnung befindlichen Szene verändert wurde, bekommt der Trace-Task ein Signal, die Berechnung mit den neuen Daten neu zu starten und die bisher berechneten Daten zu verwerfen. Er braucht keine detaillierten Daten über User-Eingaben, muß sich nicht um die Einzelheiten der Dateneingabe durch den User kümmern, er berechnet einfach, was ihm vorgeworfen wird, wenns verlangt wird). Für solche Zwecke genügen per Semaphore geschützte Flags und Speicherbereiche, da braucht es nicht einmal (relativ) kompliziertes Message-Handling. Schwieriger wird es erst, wenn Du Daten zur Berechnung übergeben willst, die Du nicht in einem gemeinsam genutzten Speicherbereich unterbringen kannst oder willst. Da werden dann recht umfangreiche Basteleien mit Inter-Task-Messages notwendig. Mir fällt da aber jetzt auf Anhieb kein überzeugendes Beispiel ein, das auf diese Methode zwingend angewiesen wäre. Zusammenfassend kann man wohl sagen, daß es manchesmal durchaus sinnvoll sein kann, das GUI und den großen Rest auf Task-Ebene zu trennen. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
07.07.2006, 18:12 Uhr [ - Direktlink - ] |
Thema: Fragen zu Intuition-Messages
Brett: Programmierung Zitat: Da hast Du natürlich Recht. Ich wollte Reth nur an wenigen Beispielen aufzeigen, was für zusätzliche Arbeit auf ihn warten kann. Ich weiß ja nicht genau, was er vorhat. Wenn ein gemeinsam genutzter (und per Semaphore zugriffskontrollierter) Speicherbereich ausreichend ist, benötigt man natürlich keinen Messageport bzw. Inter-Task-Kommunikation per Message. Das vereinfacht die Geschichte dann doch um einiges Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
07.07.2006, 14:45 Uhr [ - Direktlink - ] |
Thema: Fragen zu Intuition-Messages
Brett: Programmierung Zitat: Ähnliche Späße kannst Du auch mit einem separaten GUI-Task (bzw. separatem Berechnungs/Ausgabe/Was-weiß-ich-Task) machen. Ich habe mich weder mit Java noch mit Threading ausführlich beschäftigt (das Task-Konzept war für meine Zwecke bisher immer mehr als ausreichend), aber ich denke mal, daß ein eigener Task für länger dauernde Verarbeitung irgendwelcher Daten und das Warten auf das Signal dieses Tasks im GUI- bzw. Main-Task für Deine Zwecke passen müßte. Geht vermutlich nur nicht ganz so komfortabel wie das Java-Thread-Konzept (beim AmigaOS mußt Du u.A. dafür sorgen, daß das Beenden der einzelnen Tasks "sauber" erledigt wird, also z.B. Warten, daß der Berechnungstask sein Ende kundtut, bevor von diesem Task mitgenutzte Resourcen freigegeben werden, Du benötigst einen zusätzlichen Messageport für die Signale des Berechnungstasks usw.). Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
06.07.2006, 16:23 Uhr [ - Direktlink - ] |
Thema: Edelstahl Monolit-Kat -> ABE?
Brett: Get a Life @Cj-Stroker: Mal ne ganz blöde Frage: Hast Du überhaupt schon überprüfen lassen, ob wirklich der Kat die Ursache ist? Oft ist es nämlich schlicht die Lambda-Sonde, die Regelfehler bringt (die beim TÜV/AU übrigens seltenst bemerkt werden). "Einfach so" bringt ein geregelter Kat jedenfalls in den seltensten Fällen schlechte Abgaswerte (die sich sowieso hauptsächlich auf Kohlenmonoxid/Stickstoff(di)oxid beziehen, wovon erstere vor allem von der Lambda-Sonde beeinflußt werden). Ich würde das jedenfalls vorher testen lassen, ob die Sonde einwandfrei ihren Dienst tut. Nachher tauscht Du den Kat und kommst wegen einer defekten Sonde wieder nicht durch, dann ist der Ärger riesig. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
06.07.2006, 12:30 Uhr [ - Direktlink - ] |
Thema: 2.+3.Joystikknopf Signale
Brett: Programmierung @Holger: Gutes Timing Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
06.07.2006, 12:29 Uhr [ - Direktlink - ] |
Thema: 2.+3.Joystikknopf Signale
Brett: Programmierung Zitat: Nein, Du bist nur dem "Spaßvogel OpenDevice()" aufgesessen. OpenDevice() liefert 0 (den Wert, keinen Zeiger) zurück, wenn alles glett gelaufen ist und einen Fehlerwert, wenn es Probleme gab. Also genau umgekehrt wie bei anderen Open()-Funktionen. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
04.07.2006, 23:39 Uhr [ - Direktlink - ] |
Thema: Wie erstellt man eine Library in C?
Brett: Programmierung Zitat: Im Prinzip ne gute Idee, aber durch die reichlich verteilten #ifdefs doch etwas schwer zu durchblicken. Da wäre ein klares, einfaches Beispiel doch besser, finde ich. Jeweils eins für alle Systeme, dann blickt man vermutlich alle leichter. Aber nichts desto trotz, wer sich ansehen will, wie ne Library für verschiedene Systeme und verschiedene Compiler erstellt wird, dem sei mpega_libmad ans Herz gelegt. Geht sogar mit StormC4 Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
04.07.2006, 16:32 Uhr [ - Direktlink - ] |
Thema: Wie erstellt man eine Library in C?
Brett: Programmierung Zitat: Hm, wäre vielleicht an der Zeit für ein aktuelleres Beispiel, evtl. unter Benutzung der SDI-Includes? Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
30.06.2006, 15:39 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Hm, da unterscheiden sich vermutlich unsere Sichtweisen, deswegen vielleicht... ich sehe das Ganze als "Benutzen eines AmigaOS-Devices auf dem empfohlenen Weg" und nicht als "wir übermitteln ohne jeglichen Bezug zum API die Adresse einer Struktur" (woher weiß man auf Anhieb, daß tr_node eine struct IORequest ist, wenn man länger nichts mit dem timer.device zu tun hatte?). Bei allem Verständnis für "formal korrekte" Wege, es wird oft vergessen, daß viele Leute kein fotographisches Gedächtnis besitzen und manche Dinge schlicht vergessen werden (weil selten benötigt). Die IO-Funktionen für Devices erwarten nun einmal den Zeiger auf eine Struktur vom Typ "IORequest", da kann ich nichts für. Ich hätte vermutlich weniger Probleme mit Deiner Sichtweise, wenn Deine Vorgehensweise für alle Device-bezogenen Strukturen zutreffend wäre. Das ist sie aber nun mal nicht. Deswegen mein Vergleich von IORequest und IOStdRequest (spätestens da muß man ja so oder so wieder casten,um die Warnings loszuwerden. Da kann man das auch gleich konsequent tun, finde ich). Möglicherweise ist das aber ein Punkt, den man nun (mit OS4 z.B.) ändern könnte. Einheitliche Typen und Bezeichner für die IORequests, Erweiterungen der Strukturen dahin, wo sie hingehören. Ans Ende der Device-spezifischen Struktur. Wenn bei allen Devices mit Erweiterungen der IORequest-Struktur diese zu Beginn mit (device-Kürzel)_Node stehen würde, dann wäre das kein Thema. Man weiß, daß bei jedem Device zu Beginn der IO-Struktur ein IORequest mit dem Bezeichner bla_Node steht und gut. So verwirrt es aber nur beim Lesen (wie gesagt, wer weiß schon, das tr_node eine struct IORequest ist? Man kanns "vermuten", weil es sich um eine Device-IO-Funktion handelt, aber "Vermuten" beim Lesen eines Programms? Ich weiß ja nicht...). Meiner Meinung nach sinds einfach nur zwei verschiedene Sichtweisen des (mehr oder weniger) gleichen Vorgangs, die uns hier beschäftigen. Du siehst es mehr aus der formalen (und keineswegs falschen) Sicht, ich mehr aus der Sicht des "Otto Normal"-Entwicklers, der eben nicht die Zeit und die Möglichkeiten hat, sich bis in alle Einzelheiten in ein API einzuarbeiten (nicht falscher als die formale Sicht, meiner Meinung nach). Fallstricke in Sachen Cast gibt es genug, zweifellos, aber genauso gibt es Fallstricke in Sachen "nichtssagende Bezeichner". Ich glaube, das gleicht sich irgendwo aus. Um es auf den Punkt zu bringen: Ich sehe ein, daß Du (im Hinblick aufs reichliche Casten) Recht hast. Nur bringt uns das nicht weiter und den Anfängern hilft es relativ wenig bei dem Versuch, AmigaOS zu verstehen und zu verwenden, wenn sie mit Formalien zugeworfen werden. Was nicht heißen soll, daß erfahrene Leute wie Du nicht darauf aufmerksam machen dürfen, daß da einiges im Argen liegt. Ich bin mir sicher, daß das von den Mitlesenden aufgenommen und verwertet wird. Nur meine 2 Cent... Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ Dieser Beitrag wurde von whose am 30.06.2006 um 15:49 Uhr geändert. ] [ Dieser Beitrag wurde von whose am 30.06.2006 um 16:11 Uhr geändert. ] |
|||||
whose
Nutzer
30.06.2006, 15:09 Uhr [ - Direktlink - ] |
Thema: 2.+3.Joystikknopf Signale
Brett: Programmierung Zitat: Das erstere geht (im Groben, aus dem Gedächtnis, ich hoffe, es ist einigermaßen korrekt) wohl so: code:BYTE port = 1; InputIO->io_Data = &port; InputIO->io_Flags = IOF_QUICK; InputIO->io_Length = 1; InputIO->io_Command = IND_SETMPORT; BeginIO((struct IORequest *)InputIO); /* sry für den Cast */ if(InputIO->io_Error) printf("SETMPORT Fehler: %dn", InputIO->io_Error); Das zweitere dürfte wohl schon mit dem gameport.device machbar sein, indem man für den Mausport (Port 0) GPCT_NOCONTROLLER setzt (mittels GPD_SETCTYPE). Soweit ich gerade aus dem Gedächtnis sagen kann (habe nie groß was mit dem gameport.device gemacht), sollte man GPD_ASKCTYPE (richtig?) vorher senden, um den Typ des bisher "angemeldeten" Controllers zu bekommen (und später wieder darauf zurücksetzen zu können). Das Ganze muß wohl auch in einem Forbid()/Permit()-Paar ablaufen. Genaueres kann ich aber auch erst später sagen, habe das RKM nicht zur Hand. Ich weiß also nicht, ob der Port dann tatsächlich "frei" gemacht wird oder nicht (aber die Wahrscheinlichkeit ist hoch). Nachtrag: Mir fällt gerade ein, daß das input.device da ja noch mitmischt... muß man das dann "austricksen"? (sprich: Mausport auf Port 1 setzen, Port 0 auf NOCONTROLLER, Port 0 allokieren, input.device "veralbern" und Mausport wieder auf Port 0 zurücksetzen (der dann ja "belegt" ist), und dann das gleiche Spiel mit Port 1. Was aber, wenn das input.device das "Zurücksetzen" auf Port 0 nicht zuläßt (weil bereits "belegt")?). Das weiß ich nun gerade nicht Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ Dieser Beitrag wurde von whose am 30.06.2006 um 15:14 Uhr geändert. ] |
|||||
whose
Nutzer
30.06.2006, 00:23 Uhr [ - Direktlink - ] |
Thema: 2.+3.Joystikknopf Signale
Brett: Programmierung Zitat: Naja, ich meinte ja auch nur, daß es (wie immer in Deutschland) nur eine Frage des richtigen Scheins ist, ob man etwas Bestimmtes machen darf oder nicht. Den Schein zu bekommen ist (wie immer in Deutschland) eine ganz andere Sache... Zitat: Muß es ja auch nicht. Da ist man als "Anwender" in einer Holschuld... man muß sich sachkundig machen, ob und unter welchen Auflagen eine solche Anlage betrieben werden darf. Wie so häufig gibt es da eine gewisse "Verkehrung der Welten". In Sachen Laser (und anderen Dingen, u.A. Sprengstoffe) ist verboten, was nicht ausdrücklich erlaubt ist. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
29.06.2006, 21:22 Uhr [ - Direktlink - ] |
Thema: 2.+3.Joystikknopf Signale
Brett: Programmierung Zitat: Ich schätze, da langt eine Professur an einer Fakultät für Nuklearphysik Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
29.06.2006, 21:17 Uhr [ - Direktlink - ] |
Thema: Was ist aus dem Amiga Spielen (68k, PPC) geworden?
Brett: Amiga, AmigaOS 4 Zitat: Vielleicht ist genau das der falsche Weg? Im Grunde spielst Du den "Berufsnörglern" da doch genau auf den Fuß und die brauchen nur noch zu "versenken" ("Hab ich doch immer gesagt..."). Ich denke, im Amiga-Bereich muß man sich, was die eigenen Produkte harter Arbeit angeht, einfach ein dickes Fell zulegen. Heimlich still und leise ist sicher mancher der Nörgler doch erfreut, wenn die öffentlich kritisierte Software weiterentwickelt und verbessert wird. Abgesehen davon, die Nörgler sind doch gar nicht Deine Zielgruppe, es sind die, die entweder Feedback geben oder schweigen (weil sie entweder zufrieden und faul sind, oder das Programm aus verschiedenen Gründen, die Du evtl. abzustellen gedenkst, nicht nutzen). Meiner Meinung nach könnte man als Entwickler für den Amiga entschieden zufriedener zu Werke gehen, wenn man sich nicht auf Mail-Feedback versteift sondern evtl. auf andere Methoden, den Erfolg einer Software zu messen. Download-Zahlen beispielsweise. Oder für die, die ihre Software verkaufen möchten halt die Verkäufe gemessen am wahrscheinlichen Marktvolumen (welches ja nicht allzu gigantisch ist derzeit). Das dafür notwendige Feedback kommt ja doch, wenn auch in sehr geringer Zahl. Aber wie heißt es bei der Agentur für Arbeit in Sachen Ausbildungsplätze? "Jedes Bisschen hilft". Die Gemeinde ist derzeit nicht mehr das, was sie früher einmal war, darauf muß man sich als Entwickler einstellen. Früher hieß das Motto wohl "Releasen auf Teufel komm raus", heute lautet es wohl mehr "mit Geduld und Spucke"... Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
29.06.2006, 19:13 Uhr [ - Direktlink - ] |
Thema: 2.+3.Joystikknopf Signale
Brett: Programmierung Zitat: Alles eine Frage des richtigen "Scheins". Für Sprengstoff lautet die Zauberformel "T2-Schein" (Mengenbegrenzung), für Laser mit Personengefährdung "Gewerbeamt, Umweltamt, TÜV und Berufsgenossenschaft" (ohne Leistungsbegrenzung) Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
28.06.2006, 17:09 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Hm, ich sehe schon, die Vertreter der "reinen Lehre" gewinnen die Oberhand Nun ja, die Leser dieses Threads werdens lesen und hoffentlich auffassen. Ich sehe das ganze zwar leicht anders (IORequest vs. IOStdRequest (da gibts keine Warnings? ), völlig unterschiedliche Bezeichner etc.), aber um solche Sachen will ich keinen Streit auslösen. Ich kann ja das Beispiel entsprechend ergänzen, kein Problem. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
27.06.2006, 23:27 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Der Fehler passiert aber schnell, wenn man mehrere Klamotten in einer Zeile unterbringt. Kleiner Tipp fürs nächste Mal: Gruppier die Zeilen so um, daß alles in einer eigenen Zeile für sich steht. Dann sieht man recht leicht, wo ein Semikolon fehlt. Auch ungleiche Klammern fallen dadurch etwas schneller auf. Und wenn Du mal ne Warnung bekommst, deren Bedeutung sich Dir nicht erschließt (weil Englisch ), frag einfach mal, reißt Dir keiner den Kopf für ab, denke ich Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
27.06.2006, 23:23 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: So kann man es natürlich auch machen. Mit dem Cast geht es auch, noch dazu für beinahe jedes Device gleich, ohne jedesmal in den Strukturen schauen zu müssen, wie der eingebettete IORequest nun gerade heißt... Zitat:Zitat:Du kannst auch CopyMem aus Exec verwenden ;-) Ja, kann ich auch. Oder von Hand jedes einzelne Byte kopieren... ich sag ja: man rostet ein, wenns zu viel Komfort gibt Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
27.06.2006, 12:29 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Naja, bis auf die Zeichenprobleme (Shift-Space) und Vertipper gibts die Probleme mit Cubic nicht. Das läuft "direkt aus der Kiste" und die Optionen der Compiler sind einigermaßen verständlich aufbereitet (z.B. C99-Option für vbcc). Das Gleiche gilt für die GCC-Installation. Das Verstehen der Optionen ist allerdings ne andere Sache (verdammtes Englisch )... aber da hilft Nachfragen Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
27.06.2006, 12:11 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: So kompliziert ist es eigentlich gar nicht. Es gibt halt nur recht viele Möglichkeiten, das zu realisisieren und je nach Anspruch einiges zu beachten (z.B. Genauigkeit, Gleichlauf mit der Systemzeit etc.). Für Dein spezifisches Problem hat sich ja ne Lösung gefunden, das andere ist mehr theoretischer Natur Zitat: Wie gesagt, das ist mehr eine Frage der Ansprüche. Je höher die Ansprüche, desto höher die Hürden Zitat: Eventuell wäre Cubic ne Idee... das installiert die Compiler ordentlich, man kann zwischen verschiedenen Varianten wählen und die Konfiguration ist auch verhältnismäßig simpel zu erledigen. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
27.06.2006, 12:06 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Ich verwende keine Museumsstücke mehr Aber es soll noch Leute geben, die mit dem Lattice/SAS5.2 arbeiten, der kanns z.B. nicht. Danke für den Tip mit dem blanken Speicher-Kopieren... irgendwie rostet man ein, wenn man nicht hin und wieder Museumsstücke benutzt, glaube ich Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
27.06.2006, 12:04 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Sofern man dem Compiler mitteilt, daß man die entsprechenden Warnungen nicht sehen möchte, kann man das. Wie an so vielen anderen Stellen auch. Aber ich caste lieber, statt "Kleinigkeiten" zu verwechseln und mich dann zu fragen, weshalb etwas kracht Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
26.06.2006, 21:32 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Genau dafür wars auch gedacht. Ich habe noch einige Frager in Erinnerung, die mit dem Teilen eines MessagePorts so ihre Problemchen hatten. Für diese Klientel wäre sowas ja ein schönes Beispiel. Ich kann ja die aktuelle Fassung des ursprünglichen Beispiels von MadDog nochmal hier reinstellen (falls Bedarf da ist). Zitat: Ja, auf die Art ist es ziemlich simpel Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
26.06.2006, 21:14 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Schon, aber bei verschiedenen, asynchronen IORequests mußt Du die Request-Replies selbst noch einmal unterscheiden. Sonst weißt Du ja nicht, auf welchen Timer-Event Du nun reagieren sollst. Das ist doch schon ein kleiner Unterschied zu den bekannten Signalen, finde ich. Kann jedenfalls nicht schaden, das mal zu demonstrieren Zitat:Zitat: Ach je... gar nicht registriert, daß das ein Borderless-Window ist Danke für den Augenöffner Edit: Hehe, das war Gedankenübertragung, oder? Auf das "Nachlaufproblem", wenn die Systemzeit zurückgestellt wird, wollte ich Dich gerade aufmerksam machen Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ Dieser Beitrag wurde von whose am 26.06.2006 um 21:17 Uhr geändert. ] |
|||||
whose
Nutzer
26.06.2006, 20:54 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Ok. Zitat: Naja, das hatten wir vorher ja auch schon, immerhin wurde auch aufs Close-Gadget gewartet... das ist aber nicht das Gleiche wie asynchrone IORequests Zitat: Gewohnte Qualität... eine Frage hab ich aber: wozu dient das Dragbar-Gadget? Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
26.06.2006, 18:19 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Wenn ich mehrere Units verwende, liegt der Fall ziemlich klar. Das Problem sind Compiler, die nicht in der Lage sind, komplette Strukturen zu kopieren. Die Beispiele in den letzten RKMs benutzen implizit die Möglichkeit moderner Compiler, ganze Strukturen kopieren zu können. Wenn ein Compiler das nicht kann, muß der IORequest auf andere Art initialisiert werden, am "simpelsten", indem man das timer.device nochmal öffnet. Das kommt mir halt nur nicht so besonders elegant vor. Bei dem Uhrbeispiel stellt sich derzeit die Frage, welche anderen Wege der Initialisierung der IORequests (bei Verwendung der selben timer.device-Unit) es noch gäbe, ohne ältere Compiler von dem Beispiel auszuschließen. Zitat: Das ist klar. Zitat: Ja, das sehe ich ein. Für das Uhr-Beispiel ist es aber ganz praktisch, wenn man die Verwendung mehrerer, asynchroner Requests demonstrieren will. Ich habe das Beispiel schon darum erweitert, aber mir gefällt die Sache mit dem mehrfachen Öffnen ein und derselben Unit des timer.device halt nicht so besonders. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
26.06.2006, 17:53 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung @thomas: Mal ne ganz andere Frage an den Fachmann für anfängerfreundliche Tutorials (das ist nicht ironisch gemeint): Wie würdest Du es lösen, mehrere Requests zu verwenden, ohne die IORequest-Strukturen an sich zu kopieren? Mir kam und kommt der Ansatz, das betreffende Device für jeden IORequest einfach nochmal zu öffnen, nicht so besonders "elegant" vor. Andererseits beherrschen manche der älteren Compiler das Kopieren von Strukturen ja nicht. Würdest Du es für gut heißen, sich in diesem Fall auf die AmigaOS-internen Strukturen (und Definitionen) zu stützen, um alle notwendigen Felder der weiteren IORequest-Strukturen "von Hand" zu initialisieren? Das wäre jetzt ad hoc die einzige Lösung, die mir dazu einfällt... Ich habe das Beispiel inzwischen so modifiziert, daß TR_ADDREQUEST und TR_GETSYSTIME jeweils ihren eigenen IORequest benutzen und diese ordentlich bearbeitet (und aus der Message Queue "entsorgt") werden, wenn sie ausgeführt wurden. Nur die Chose mit dem mehrfachen Öffnen des timer.device schmeckt mir nicht so ganz. Da muß es doch nen eleganteren Weg geben, um auch ältere Compiler da nicht auszuschließen. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
26.06.2006, 14:24 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Ach, Du meinst das Räumen des MessagePorts von unterschiedlichen Replys, jetzt verstehe ich. Na, das ist hier doch aber nicht gegeben. Es kommt immer der gleiche IORequest zur Anwendung. Da wäre das Aufräumen etwas Overkill, vor allem für die, die gerade hineinschnuppern. Da sollte man besser ein Beispiel mit mehreren asynchronen Requests aufsetzen, da läßt sich das (meiner Meinung nach) viel besser zeigen, wozu die GetMsg()-Mimik überhaupt gut ist. Das könnte man evtl. auch so machen, indem man für TR_GETSYSTIME einen eigenen Request nimmt und dann in der Wait()-Schleife TR_ADDREQUEST an erster Stelle in der Bearbeitung setzt. Da wäre dann ein WaitIO() vor dem DoIO() fällig oder auch ein GetMsg(TimerMP), um die unterscheidlichen Requests aus dem Port zu bekommen. Besonders verständlich wäre es aber wieder nicht, denke ich. Dafür ist das Programm an sich einfach zu simpel (soll heißen: Zu geradlinig im Ablauf. Das kann kaum einer nachvollziehen, warum man dann so ein "Tamtam" um die Replies macht). Grüße Edit: Ich habe das Beispiel nun an die Anregung angepaßt und den dussligen Fehler beim Test auf die Signale beseitigt. -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ Dieser Beitrag wurde von whose am 26.06.2006 um 16:28 Uhr geändert. ] |
|||||
whose
Nutzer
26.06.2006, 13:53 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Würde aber reichlich Warnungen bringen Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
whose
Nutzer
26.06.2006, 13:45 Uhr [ - Direktlink - ] |
Thema: Gesucht: Sekundentakt
Brett: Programmierung Zitat: Ja, mit "==" war Bockmist, Weiß auch nicht, wie ich da drauf gekommen bin, hier bei mir stehts richtig im Programm Zum WaitIO(): Aus welchem Grund muß denn, wenn das timer.device das Signal gesetzt hat, nochmal extra auf Beendigung des Requests gewartet werden? Darf man nicht davon ausgehen, daß der Request bearbeitet wurde, wenn das gewünschte Signal eintrifft? Ich frage so dusslig, weil ich zum WaitIO() an dieser Stelle weder in den RKMs noch in den AutoDocs was finde... Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 |
|||||
|
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |