DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > 2.+3.Joystikknopf Signale | [ - Search - New posts - Register - Login - ] |
1 2 3 -4- 5 6 | [ - Post reply - ] |
2006-06-28, 20:55 h Holger Posts: 8116 User |
Zitat: Aber eine tödliche Laserwaffe?! mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-06-29, 18:04 h MaikG Posts: 5172 User |
@Noimg Das Programm geht nur mit dem Joyport, beim Mausport bekomme ich nur die Meldung das die Pots schon benutzt werden. @Holger jepp, | war dann order und nicht AND, der absturz kam allerdings weil MB die potgo.resource Automatisch schliessen wollte. Laser gibts schon in hohen Wattagen, mit 30mW kannst du schon jemanden erblinden lassen. [ - Answer - Quote - Direct link - ] |
2006-06-29, 19:13 h whose Posts: 2156 User |
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 [ - Answer - Quote - Direct link - ] |
2006-06-29, 20:16 h Holger Posts: 8116 User |
Zitat: Und Plasmakanonen? mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-06-29, 20:43 h Ralf27 Posts: 2779 User |
Zitat: Hm, ich weis ja nicht für Personen bei MaikG einsteigen wollen, aber bei diesem Waffenarsenal kann das schnell zu einem Kleinkrieg ausarten. Aber das dürfte dann auch abschreckend sein. Wie damals im kalten Krieg. Und alles durch einen Amiga gesteuert... Äh, hm... -- http://www.alternativercomputerclub.de.vu [ - Answer - Quote - Direct link - ] |
2006-06-29, 21:22 h whose Posts: 2156 User |
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 [ - Answer - Quote - Direct link - ] |
2006-06-29, 23:43 h MaikG Posts: 5172 User |
>Für Sprengstoff lautet die Zauberformel "T2-Schein" (Mengenbegrenzung), Eine Vorstrafe und den bekommt man nicht oder? Und ich denke auch mit den schein dürfte man es nicht unbedingt zur Einbrecherabwehr einbuddeln. >für Laser mit Personengefährdung "Gewerbeamt, Umweltamt, TÜV und >Berufsgenossenschaft" (ohne Leistungsbegrenzung) Der Hinweiss mit Gewerbeamt steht bei ELV, in den Ebay Auktionen steht davon nichts... [ - Answer - Quote - Direct link - ] |
2006-06-30, 00:23 h whose Posts: 2156 User |
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 [ - Answer - Quote - Direct link - ] |
2006-06-30, 09:58 h MaikG Posts: 5172 User |
>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. Ich kann mir ja so eine Kinderpistole holen, die mit den Plastikbällen, die sollen gut zwirbeln und wenn man davon eine Menge abschiesst... Aber zurück zum Thema, keiner eine Ahnung wie man die Maustasten nun als Ausgang nutzt? Ich meine es gibt auch spiele mit 2 Joystiks, die müssen das input.device ja auch irgendwie zum schweigen bringen. [ - Answer - Quote - Direct link - ] |
2006-06-30, 12:46 h NoImag Posts: 1050 User |
Zitat: Warum verwendest du nicht einfach Port 1 für die Ausgänge und Port 0 für die Eingänge? Weil das OS annimmt, dass an Port 0 eine Maus hängt, ist es doch kein Problem Port 0 für die Eingänge zu verwenden. Zur Verwendung von 2 Joysticks: Wenn ich mich richtig erinnere (habe die Dokumentation hier nicht zur Hand), dann kannst du problemlos Port 0 auf "Joystick" stellen (gameport.device). Das hat aber mit deinem Problem nichts zu tun. Tschüß [ - Answer - Quote - Direct link - ] |
2006-06-30, 12:54 h Holger Posts: 8116 User |
Zitat: Ich weiß auch, daß man dem input.device sagen konnte, daß die primäre Maus am anderen Port hängt. Da gab es auch schon zu a500-Zeiten tools für, damit man auch weiterarbeiten konnte, wenn der port kaputt war. Und ich denke mal, wenn man den port redefinieren kann, kann man die Maus auch komplett abmelden, um die resource frei zu bekommen. Nur nach dem wie darfst Du mich jetzt nicht fragen, habe keine Dokumentation hier und glaube auch nicht, daß ich heute die Zeit dafür finden werde... mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-06-30, 15:09 h whose Posts: 2156 User |
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. ] [ - Answer - Quote - Direct link - ] |
2006-06-30, 18:16 h MaikG Posts: 5172 User |
>Warum verwendest du nicht einfach Port 1 für die Ausgänge und >Port 0 für die Eingänge? Weil das OS annimmt, dass an Port 0 >eine Maus hängt, ist es doch kein Problem Port 0 für die Eingänge >zu verwenden. Ja, weil die Hardware schon gebaut ist und mit Plastikkleber vergossen. Rein theoretisch wäre das möglich, müsste nur aufpassen das die Maus nirgend drüber ist sonst gild der Sensor als "klick". BTW. wie schnell können die Ports eigentlich Daten verarbeiten? Hab mir mal nochmal das Thema Multiplexer vorgenommen, um mehr Signale verarbeiten zu können könnte ich die Sensorik nacheinander übermitteln, weiss aber nicht was die MUX für ein MHZ/KHZ/HZ minimum haben. [ - Answer - Quote - Direct link - ] |
2006-07-01, 00:38 h NoImag Posts: 1050 User |
Zitat: Richtig, dafür hat das input.device extra eine Funktion. Zitat: Und gerade dazu habe ich in den RKRMs, Autodocs und Amiga Intern 1+2 nichts gefunden. Wie ich weiter oben geschrieben habe, steht im Amiga Intern 2, dass es nicht geht. PS: Da kommt mir die Idee, dass man versuchen könnte, den Mausporttyp auf GPCT_NOCONTROLLER zu setzen. Vielleicht hat dies den Effekt, dass das input.device den Mausport frei gibt. Tschüß [ - Answer - Quote - Direct link - ] |
2006-07-01, 00:48 h NoImag Posts: 1050 User |
Zitat: Leider nicht. Man darf nur dann selbst den Typ ändern, wenn er auf GPCT_NOCONTROLLER steht. Den Rest hast du aber richtig in Erinnerung. Zitat: Ob dieser Trick funktionieren würde, weiß ich auch nicht. In den RKRMs und Autodocs wird er nicht beschrieben. Da hilft nur ausprobieren. Tschüß [ Dieser Beitrag wurde von NoImag am 01.07.2006 um 00:49 Uhr geändert. ] [ - Answer - Quote - Direct link - ] |
2006-07-01, 00:57 h NoImag Posts: 1050 User |
Zitat: Das habe ich jetzt nicht genau verstanden. Bleibt die Maus angeschlossen? Ansonsten könntest du den Mausport mit dem input.device auf Port 1 legen. Dann ist Port 0 frei und du kannst ihn als Ausgang nutzen. Zitat: Bei den 4 Analog/Digital-Pins kann das Erreichen des Pegels bis zu 300 µs dauern, da Kondensatoren (47 nF) umgeladen werden müssen. Tschüß [ - Answer - Quote - Direct link - ] |
2006-07-01, 09:45 h MaikG Posts: 5172 User |
>Das habe ich jetzt nicht genau verstanden. Bleibt die Maus >angeschlossen? Nein, erstmal nicht, da kein Monitor geplant ist reicht die Tastatur als Eingabegerät. >Ansonsten könntest du den Mausport mit dem input.device auf Port 1 >legen. Dann ist Port 0 frei und du kannst ihn als Ausgang nutzen. Das beispiel oben dafür scheint nicht vollständig, keine Librarys werden geöffnet/benutzt? >Bei den 4 Analog/Digital-Pins kann das Erreichen des Pegels bis zu >300 µs dauern, da Kondensatoren (47 nF) umgeladen werden müssen. Was ist das in KHZ? Und die anderen Pins? [ - Answer - Quote - Direct link - ] |
2006-07-02, 00:29 h NoImag Posts: 1050 User |
Zitat: Du musst das input.device öffnen mit allem was so dazugehört. Ein Beispiel habe ich gerade nicht zur Hand. Da müsstest du bis Mittwoch warten (da habe ich etwas mehr Zeit). Zitat: Der Kehrwert von 300 µs ist 3,3 kHz. Tschüß [ - Answer - Quote - Direct link - ] |
2006-07-05, 14:54 h MaikG Posts: 5172 User |
>Du musst das input.device öffnen mit allem was so dazugehört. >Ein Beispiel habe ich gerade nicht zur Hand. Da müsstest du bis >Mittwoch warten (da habe ich etwas mehr Zeit). Okay, ist Mittwoch :-) >Der Kehrwert von 300 µs ist 3,3 kHz. Sollte gehen, braucht man für die abfrage in dieser geschwindigkeit viel CPU Power? [ - Answer - Quote - Direct link - ] |
2006-07-05, 21:43 h NoImag Posts: 1050 User |
Zitat: Sei nicht so ungeduldig. Das Beispiel: C code:#include <exec/types.h> #include <devices/input.h> #include <clib/exec_protos.h> #include <clib/alib_protos.h> #include <stdio.h> VOID main(VOID) { struct IOStdReq *inputIO; struct MsgPort *inputMP; BYTE port = 1; /* Maus auf den rechten Port setzen */ if (inputMP = CreatePort(NULL,NULL)) { if (inputIO = (struct IOStdReq *)CreateExtIO(inputMP, sizeof(struct IOStdReq))) { if (!OpenDevice("input.device",NULL, (struct IORequest *)inputIO,NULL)) { inputIO->io_Data = &port; inputIO->io_Flags = IOF_QUICK; inputIO->io_Length = 1; inputIO->io_Command = IND_SETMPORT; DoIO((struct IORequest *)inputIO); if (inputIO->io_Error) printf("nSETMPORT failed %dn",inputIO->io_Error); /* hier machst du deine Sachen */ port = 0; /* Wieder auf den linken Port zurücksetzen */ inputIO->io_Data = &port; inputIO->io_Flags = IOF_QUICK; inputIO->io_Length = 1; inputIO->io_Command = IND_SETMPORT; DoIO((struct IORequest *)inputIO); if (inputIO->io_Error) printf("nSETMPORT failed %dn",inputIO->io_Error); CloseDevice((struct IORequest *)inputIO); } else printf("Error: Could not open input.devicen"); DeleteExtIO((struct IORequest *)inputIO); } else printf("Error: Could not create I/O requestn"); DeletePort(inputMP); } else printf("Error: Could not create message portn"); } Zitat: Keine Ahnung. Tschüß [ - Answer - Quote - Direct link - ] |
2006-07-06, 11:55 h MaikG Posts: 5172 User |
Habs dann mal versucht in Basic umzusetzten: REM $include exec.bh REM $include input.bc LIBRARY OPEN "exec.library" REM $INCLUDE Blib/ExecSupport.bas PortN&=1 port& = CreatePort&(NULL&, NULL&) IF port& THEN InputIO&=CreateExtIO&(port&,IOStdReq_sizeof%) IF InputIO& THEN device& = OpenDevice&(SADD("input.device" + CHR$(0)), NULL&, InputIO&, NULL&) IF device& THEN POKEW(InputIO&+IORequestio_Command%), IND_SETMPORT& POKEL(InputIO&+IOStdReqio_Length%),1& POKEL(InputIO&+IOStdReqio_Data%), VARPTR(PortN&) POKEL(InputIO&+IOStdReqio_Flags%), IOF_QUICK& IF DoIO&(InputIO&) THEN PRINT "Fehler4 DOIO":GOTO 1235 CloseDevice InputIO& ELSE PRINT "can't open input.device" END IF DeleteExtIO InputIO& ELSE PRINT "cant create IO" END IF DeletePort port& ELSE PRINT "can't open port" END IF 1235 Dann kommt "can't open input.device", wahrscheinlich ist es hier mit 26°C zu heiss für sowas... [ - Answer - Quote - Direct link - ] |
2006-07-06, 12:29 h whose Posts: 2156 User |
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 [ - Answer - Quote - Direct link - ] |
2006-07-06, 12:29 h Holger Posts: 8116 User |
Zitat: OpenDevice liefert kein "device" zurück, sondern eine Fehlernummer, d.h. 0 wenn kein Fehler. Guck noch mal genau auf das C-Beispiel. Da steht "if(!OpenDevice(...))" mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-06, 12:30 h Holger Posts: 8116 User |
Zwei Sekunden zu langsam... [ - Answer - Quote - Direct link - ] |
2006-07-06, 12:30 h whose Posts: 2156 User |
@Holger: Gutes Timing Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ - Answer - Quote - Direct link - ] |
2006-07-06, 18:03 h MaikG Posts: 5172 User |
>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. Läuft jetzt zwar durch, hat aber keinerlei Funktion, Maus geht weiterhin am Mausport. [ - Answer - Quote - Direct link - ] |
2006-07-06, 19:07 h Holger Posts: 8116 User |
Zitat: port ist im C-Programm vom Typ byte, PortN& in Deinem Programm ist vom Typ int (4 bytes). Wenn Du in Basic keine Variablen vom Typ byte definieren kannst (vermute ich mal), dann nimm den vier bytes int, aber entweder initialisiere ihn mit 1<<24 oder benutze VARPTR(PortN&+3), damit der Pointer auf die gewünschte 1 vom Typ byte zeigt. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-06, 19:40 h Ralf27 Posts: 2779 User |
Zitat: Also wenn MaikG code:genommen hat, dann sind die Integerwerte in 2Bytes codiert. Denn bei 32768 gibt es dann ein überlauf.DEFINT a-z EDIT: Aber ich kenne leider auch keinen Weg einen Typ von 1Byte in MBasic zu benutzen. Denn genau sowas könnte ich bei einigen Anwendungen sehr gut gebrauchen... -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 06.07.2006 um 19:41 Uhr geändert. ] [ - Answer - Quote - Direct link - ] |
2006-07-06, 19:45 h Ralf27 Posts: 2779 User |
Also die folgende Zeile kann ja vermutlich so nicht stimmen...code:IF DoIO&(InputIO&) THEN PRINT "Fehler4 DOIO":GOTO 1235 Also wenn ein Fehler passiert, dann wird nix mehr zurück gegeben? Und dieses Goto schmerz mir auch in denn Augen. Eigentlich könnte doch dieses Goto komplett verschwinden. Dann werden auch die Resourcen zurückgegeben. -- http://www.alternativercomputerclub.de.vu [ - Answer - Quote - Direct link - ] |
2006-07-06, 22:25 h NoImag Posts: 1050 User |
Da wäre noch etwas.code:POKEL(InputIO&+IOStdReqio_Flags%), IOF_QUICK& Ich kenne mich in Basic nicht mehr so aus, aber die Flags sind nur 1 Byte groß. Ist es da richtig POKEL zu verwenden? Ist aber auch egal. Wie ich inzwischen gesehen habe, kann die Zeile sowieso raus, weil DoIO() das Flag automatisch setzt. Tschüß [ - Answer - Quote - Direct link - ] |
1 2 3 -4- 5 6 | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > 2.+3.Joystikknopf Signale | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |