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-07-07, 13:55 h Holger Posts: 8116 User |
Zitat: Das entspricht aber überhaupt nicht dem, was ich in Erinnerung habe. Meiner Erinnerung nach, definiert DEFINT ausschließlich den Datentyp für Variablen, die keinerlei Endung haben. Eine Variable, die mit & endet ist immer 4 byte integer, so wie die Endung % immer zwei byte integer und $ immer ein String ist. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-07, 14:01 h Holger Posts: 8116 User |
Zitat: Richtig, an dieser Stelle macht GOTO keinen Sinn. Und vor allem Fehler4?! Schlimm genug, daß Systemfunktionen Fehlernummern zurückgeben, die man erst mal dekodieren muß, aber seine eigene Nummer zu erfinden, an einer Stelle, an der man eh einen String-Literal im Code zu stehen hat, also ohne jede Notwendigkeit... mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-07, 16:13 h MaikG Posts: 5172 User |
>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. Ja, ja ist ja nur ein kleiner test... > 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. IOF_Quick& steht als LONG in der exec.bc, wird also richtig sein. War das mit dem Port Byte, mit Varptr()+3 gehts. Naja, wiederum nicht, weil mein ursprüngliches Programm jetzt feuer 2 und 3 nicht mehr richtig erkennt. Bei Knopf C noch wenn man den start reinpresst, Knopf A gar nicht mehr. Bei der Maus sind ja 0 Ohm schalter drin, beim Joypad nicht... [ - Answer - Quote - Direct link - ] |
2006-07-07, 17:05 h Holger Posts: 8116 User |
Zitat: NEIN. IOF_Quick& ist eine Zahlenkonstante, ihr Wert ist 1. Deren Typ ist vollkommen irrelevant. Relevant ist der Typ des io_Flags Struktureintrags, in den Du mittels POKE reinschreibst. Und der ist byte mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-07, 17:58 h Holger Posts: 8116 User |
So, hier ein Programm, das dem input.device sagt, daß ein Joystick am Port hängt. Man kann dann mit dem Joystick auch den Mauszeiger steuern. Es scheint auch ein Setzen auf GPCT_NOCONTROLLER zu funktionieren, allerdings habe ich jetzt noch nicht probiert, ob man ihn dann selbst reservieren kann... Aber das könnte der richtige Weg sein. C code:#include <exec/types.h> #include <devices/input.h> #include <devices/gameport.h> #include <clib/exec_protos.h> #include <stdio.h> int main(void) { struct IOStdReq *inputIO; struct MsgPort *inputMP; /*BYTE type = GPCT_NOCONTROLLER; /* keine Maus mehr vorhanden */ BYTE type = GPCT_RELJOYSTICK; /* Joystick */ if(inputMP = CreateMsgPort()) { if(inputIO=(struct IOStdReq *)CreateExtIO(inputMP, sizeof(struct IOStdReq))) { if(!OpenDevice("input.device", 0, (struct IORequest*)inputIO, 0)) { inputIO->io_Command = IND_SETMTYPE; inputIO->io_Data = &type; inputIO->io_Length = 1; DoIO((struct IORequest*)inputIO); if(inputIO->io_Error) printf("nIND_SETMTYPE failed %dn",inputIO->io_Error); else { /* hier machst du deine Sachen */ type = GPCT_MOUSE; /* Besser wäre natürlich vorher alten Typ abfragen */ inputIO->io_Command = IND_SETMTYPE; inputIO->io_Data = &type; inputIO->io_Length = 1; DoIO((struct IORequest *)inputIO); if(inputIO->io_Error) printf("n(setting back) IND_SETMTYPE 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"); } [ - Answer - Quote - Direct link - ] |
2006-07-07, 22:26 h MaikG Posts: 5172 User |
>Aber das könnte der richtige Weg sein. Also mit GPCT_RELJOYSTICK oder GPCT_NOCONTROLLER oder GPCT_ALLOCATED(als LONG) gehts nicht. Ich kann den Cursor beim ersten mit dem Joystik steuern, ich kann aber nicht die Pins von Mouseport auf 0 setzten, die sind damit immer auf High (3,75V) egal was ich mache. [ - Answer - Quote - Direct link - ] |
2006-07-07, 23:03 h NoImag Posts: 1050 User |
Zitat: Kannst du das noch etwas ausführlicher erklären? Tschüß [ - Answer - Quote - Direct link - ] |
2006-07-08, 09:29 h MaikG Posts: 5172 User |
>Kannst du das noch etwas ausführlicher erklären? Ich starte das Programm, die Maus ist tot. Nun starte ich mein Programm was Eingangsseitig ja schon fertig ist, alle Signale ausser Knopf A und C am Joypad sind Normal. A geht gar nicht, C wenn man stark drauffrückt. Der Joypad hat solche Pads wie in einer Fernbedienung, die haben nicht 0 Ohm, Maustasten schon. Ich weiss jetzt nicht warum das so ist aber die Eingänge reagieren so jetzt scheinbar nur auf fast 0 Ohm. [ - Answer - Quote - Direct link - ] |
2006-07-09, 00:41 h NoImag Posts: 1050 User |
@MaikG: Aber wenn du den Mausport nicht umschaltest auf Port 1, dann funktioniert es? Das macht keinen Sinn. Es ist egal, ob dein Programm oder das input.device die Pins auf digital schaltet. Der Pin für die linke Maustaste sollte überhaupt nicht betroffen sein. Tschüß [ - Answer - Quote - Direct link - ] |
2006-07-09, 10:08 h MaikG Posts: 5172 User |
>Aber wenn du den Mausport nicht umschaltest auf Port 1, dann >funktioniert es? Ja, ich meine das input.device schaltet den Pegel immer wieder zurück, deshalb muss ich das in einem Loop reinschreiben. Das Menü wird dann auch immer aktiviert. >Das macht keinen Sinn. Es ist egal, ob dein Programm oder das >input.device die Pins auf digital schaltet. Der Pin für die linke >Maustaste sollte überhaupt nicht betroffen sein. Ich hab jetzt nur den Ausgang für die Rechte und Mittlere Maustaste, wie das mit der Linken geht weiss ich noch nicht. [ - Answer - Quote - Direct link - ] |
2006-07-09, 21:22 h NoImag Posts: 1050 User |
@MaikG: Nochmal langsam. Was funktioniert nicht, den Port 1 als Eingabe-Port zu benutzen oder den Port 0 als Ausgabe-Port zu benutzen? Zitat: hört sich danach an, dass du den Port 0 nicht als Ausgang benutzen kannst. Habe ich dies richtig verstanden? Deine vorherige Aussage hat sich so angehört, dass du den Port 1 nicht als Eingang benutzen kannst. Tschüß [ - Answer - Quote - Direct link - ] |
2006-07-10, 09:38 h MaikG Posts: 5172 User |
>Nochmal langsam. Was funktioniert nicht, den Port 1 als Eingabe-Port >zu benutzen oder den Port 0 als Ausgabe-Port zu benutzen? Bei deinem Beispiel(Mouse<->Joy) gehen Eingangsmäßig die 2. und 3. Feuertaste nicht. Bei Holger's Beispiel(Joy ist an Mouseport) gehen die Ausgänge nicht(immer high), >hört sich danach an, dass du den Port 0 nicht als Ausgang benutzen >kannst. Habe ich dies richtig verstanden? Deine vorherige Aussage >hat sich so angehört, dass du den Port 1 nicht als Eingang benutzen >kannst. Ich kann den Mausport entwender nicht als Ausgang benutzten oder den Joyport nicht vollständig als Eingang. [ - Answer - Quote - Direct link - ] |
2006-07-10, 23:05 h NoImag Posts: 1050 User |
@MaikG: Dass heißt, wenn du die Maus auf Port 0 lässt (also Port 0 nicht als Ausgang benutzen kannst), dann kannst du aber Port 1 als Eingang benutzen? Tschüß [ - Answer - Quote - Direct link - ] |
2006-07-11, 10:23 h MaikG Posts: 5172 User |
>Dass heißt, wenn du die Maus auf Port 0 lässt (also Port 0 nicht >als Ausgang benutzen kannst), dann kannst du aber Port 1 als >Eingang benutzen? Du verwirrst mich. Solange ich keine Ausgänge brauche gehen die Eingänge vollständig. Lasse ich das input.device wie es ist kann ich die Ausgänge in einem Loop LOW setzten, input setzt es ständig wieder hight. Sage ich input das die Maus am Joyport ist, gehen die 2. und 3. Taste nicht mehr am Joyport. Sage ich input das ein Joystik am Mausport hängt und nirgens eine Maus, gehen die Ausgänge(Mausport) gar nicht mehr auch wenn ich diese im Loop beschreibe. [ - Answer - Quote - Direct link - ] |
2006-07-11, 18:22 h Holger Posts: 8116 User |
Zitat: Der Sinn war ja nicht, den Port abzuschalten und zu gucken, was passiert, sondern den Test zu machen, ob intuition die port-bits freigibt, damit man sie dann selber kontrollieren kann. Ich hatte aber nicht die Zeit, das selber zu Testen, und deshalb schon mal den Stand gepostet, um den Weg aufzuzeigen. Inzwischen hab ich den Test gemacht, Antwort: ja, wenn man intuition sagt, daß das keine Maus abgefragt werden soll, werden die Port-Bits freigegeben und können über die potgo.resource selbst belegt werden. Hier das Programm: C code:#include <exec/types.h> #include <dos/dos.h> #include <devices/input.h> #include <devices/gameport.h> #include <resources/potgo.h> #include <hardware/custom.h> #include <clib/exec_protos.h> #include <clib/potgo_protos.h> #include <stdio.h> #define OUTRY (1L<<15) #define DATRY (1L<<14) #define OUTRX (1L<<13) #define DATRX (1L<<12) #define OUTLY (1L<<11) #define DATLY (1L<<10) #define OUTLX (1L<< 9) #define DATLX (1L<< 8) struct PotgoBase *PotgoBase; extern struct Custom custom; int main(void) { ULONG potbits; UWORD value; struct IOStdReq *inputIO; struct MsgPort *inputMP; BYTE type = GPCT_NOCONTROLLER; if(!(PotgoBase=(struct PotgoBase *)OpenResource("potgo.resource"))) { printf("couldn't alloc "potgo.resource""); return 10; } if(inputMP = CreateMsgPort()) { if(inputIO=(struct IOStdReq *)CreateExtIO(inputMP, sizeof(struct IOStdReq))) { if(!OpenDevice("input.device", 0, (struct IORequest*)inputIO, 0)) { inputIO->io_Command = IND_SETMTYPE; inputIO->io_Data = &type; inputIO->io_Length = 1; DoIO((struct IORequest*)inputIO); if(inputIO->io_Error) printf("nIND_SETMTYPE failed %dn",inputIO->io_Error); else { potbits=AllocPotBits(OUTRY|DATRY|OUTRX|DATRX|OUTLY|DATLY|OUTLX|DATLX); /* Get the bits for the right and middle mouse buttons on the * alternate mouse port. */ if(potbits != (OUTRY|DATRY|OUTRX|DATRX|OUTLY|DATLY|OUTLX|DATLX)) { printf("Pot bits are already allocated! %lxn",potbits); FreePotBits(potbits); return 5; } /* Set all ones in the register (masked by potbits) */ WritePotgo(0xFFFFFFFFL, potbits); printf("nPlug a mouse into the second port. This program will indicate whenn"); printf("the right or middle button (if the mouse is so equipped) is pressed.n"); printf("Stop the program with Control-C. Press return now to begin.n"); getchar(); while(!(SIGBREAKF_CTRL_C & SetSignal(0L,0L))) /* until CTRL-C is pressed */ { /* Read word at $DFF016 */ value = custom.potinp; /* Show what was read (restricted to our allocated bits) */ printf("POTINP = $%lxn",value & potbits); } FreePotBits(potbits); type = GPCT_MOUSE; /* Besser wäre natürlich vorher alten Typ abfragen */ inputIO->io_Command = IND_SETMTYPE; inputIO->io_Data = &type; inputIO->io_Length = 1; DoIO((struct IORequest *)inputIO); if(inputIO->io_Error) printf("n(setting back) IND_SETMTYPE 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"); } mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-12, 00:24 h NoImag Posts: 1050 User |
Zitat: Tut mir Leid, das war nicht meine Absicht. Deine Aussagen haben mich verwirrt und ich habe nur versucht, meine Verwirrung zu beseitigen. Zitat: Ok, die Situation ist mir nun klar, glaube ich. Aber ich verstehe nicht was da passiert. Mit Holgers Beispiel sollte aber das Problem ja jetzt gelöst sein. Tschüß [ - Answer - Quote - Direct link - ] |
2006-07-12, 18:13 h MaikG Posts: 5172 User |
Okay, geht soweit aber wie kann ich das einzeln machen? > /* Set all ones in the register (masked by potbits) */ > WritePotgo(0xFFFFFFFFL, potbits); Also nur Taste 2 oder nur Taste 3, diese F's sind etwas undurchsichtig. [ - Answer - Quote - Direct link - ] |
2006-07-12, 18:32 h Holger Posts: 8116 User |
Zitat: Benutz einfach die Konstanten: #define OUTRY (1L<<15) #define DATRY (1L<<14) #define OUTRX (1L<<13) #define DATRX (1L<<12) #define OUTLY (1L<<11) #define DATLY (1L<<10) #define OUTLX (1L<< 9) #define DATLX (1L<< 8 ) Dabei kannst Du mit dem 2. Parameter bestimmen, welche Bits Du verändern willst, also WritePotgo(OUTRY|OUTRX, OUTRY|OUTRX); setzt beide Bits des einen Ports auf Ausgang, ohne den anderen Port oder die Datenbits zu beeinflussen. Mit WritePotgo(0, OUTRY|OUTRX); löschst Du sie dann. Entsprechend kanns Du sie auch kombinieren, wenn Du z.B. Taste 2 und Taste 3 des einen Ports auf Ausgang und gleichzeitig die des anderen auf Eingang setzen willst: WritePotgo(OUTRY|OUTRX, OUTRY|OUTRX|OUTLY|OUTLX); Genauso kannst Du natürlich auch die Datenbits setzen, ohne den In/Out Status zu verändern: WritePotgo(DATRY, DATRY);//setzt nur dieses eine Bit und läßt alle anderen in Ruhe Genug verwirrt? mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-12, 21:02 h MaikG Posts: 5172 User |
>Genug verwirrt? Bei der Hitze sowieso, ich sitz grade 2 Stunden an dem 1.Knopf: POKEB &hBFE201 ,(PEEKB(&hBFE201) AND &b10000000) OR &b10000000 1 k$=INKEY$ IF k$=CHR$(27) THEN END IF k$="s" THEN POKE &hBFE001, (PEEK(&hBFE001) AND 128) OR &b10000000 IF k$="u" THEN POKE &hBFE001 ,(PEEK(&hBFE001) AND 128) OR &b00000000 GOTO 1 Ich glaub das mit den Maskieren hab ich noch nicht richtig kapiert. Auf Ausgang wird wohl gesetzt, ist dann High und lässt sich nicht verändern. Ist jetzt erstmal für den Joystikknopf, weil ohne Maus Programmierts sich schlecht. [ - Answer - Quote - Direct link - ] |
2006-07-13, 13:07 h Holger Posts: 8116 User |
Zitat: Scheint so. Wenn Du ein Bit ändern und den Rest unangetastet lassen willst, lautet die Anweisung: basic code:oderVAL=1<<BitNo IF set POKEx ADR, PEEKx(ADR) OR VAL : REM set ELSE POKEx ADR, PEEKx(ADR) AND NOT VAL: REM clear basic code:x mußt Du durch die jeweils richtige Breite ersetzen, B, W, L...VAL=1<<BitNo MASK=NOT VAL IF NOT set VAL=0 :REM clear POKEx ADR, (PEEKx(ADR) AND MASK) OR VAL : REM change, either set or clear Lies Dir mal die Binärarithmetik an, ohne deren Verständnis wird es für Dich immer ein Rumprobieren bleiben. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-13, 15:12 h MaikG Posts: 5172 User |
>Lies Dir mal die Binärarithmetik an, ohne deren Verständnis wird es >für Dich immer ein Rumprobieren bleiben. Also Binär->Dec->HEX kann ich besser als mein Lehrer damals... Ist vielleicht eher das Shiften und AND OR XOR. Oder der Kaliummangel :-) [ - Answer - Quote - Direct link - ] |
2006-07-13, 18:49 h Holger Posts: 8116 User |
Zitat:Shiften, and, or, xor ist Binärarithmetik. Das andere sind blos Konvertierungen. Die man ohne Not nicht von Hand macht, weil das ja der Compiler für einen erledigt. Ich hab das Gefühl, Dein Lehrer hat die falschen Schwerpunkte gesetzt... mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-13, 23:23 h platon42 Posts: 400 [Former member] |
Zitat: Kurz eine Stimme aus dem Off, da ich gerade selber mit den Potgo-Registern herumexperimentiere (ICSP Programmierer für nen PIC18Fxxxx): Laut Autodocs soll man OUTRX/OUTRY/OUTLX/OUTLY *nur* dann anfordern, wenn man die Ports *ausschließlich* als Ausgang nutzt und *nicht* davon lesen will. Was mir auch aufgefallen ist: Der Amiga ist wirklich total genial designt :-) Habe gestern herausgefunden, dass der angeblich nicht verwendete Barrelshifter von CIAB (CIAA verwendet ihn für die Tastatur) an die Parallel-Port Leitungen PaperOut und PrinterBusy gelegt ist *und* dass man den Port nicht nur als Eingang nutzen kann, sondern auch als Ausgang, wobei dann der CIAB-Timer den Takt vorgibt. Ich denke mal, wenn Dirk Conrad das gewusst hätte, dann würde der MAS Player heute eine etwas andere Pinbelegung verwenden und wäre nicht ganz so ineffizient von der Datenübertragung her... -- -- Best Regards Chris Hodges [ - Answer - Quote - Direct link - ] |
2006-07-14, 07:52 h MaikG Posts: 5172 User |
>Shiften, and, or, xor ist Binärarithmetik. >Das andere sind blos Konvertierungen. Die man ohne Not nicht von >Hand macht, weil das ja der Compiler für einen erledigt. >Ich hab das Gefühl, Dein Lehrer hat die falschen Schwerpunkte >gesetzt... 10 Klasse Mathe, das war kein Studium. [ - Answer - Quote - Direct link - ] |
2006-07-14, 11:54 h Holger Posts: 8116 User |
Zitat: Hab ich jetzt auch nicht angenommen, aber Konvertierungen zwischen den Zahlensystemen hatten ihr ja, so klang es zumindest. Da wären Binäroperationen sinnvoller gewesen, aber gut, was weiß ich, was heutzutage in den Lehrplänen steht, gibt's da wenigstens Informatik bei 10 Klassen? Iss aber auch egal, Du weißt ja jetzt, was Du jetzt an Wissen brauchst, und Dir irgendwie aneignen solltest. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-14, 17:54 h MaikG Posts: 5172 User |
>Hab ich jetzt auch nicht angenommen, aber Konvertierungen zwischen >den Zahlensystemen hatten ihr ja, so klang es zumindest. Wir hatten umwandeln von Binär in Dezimal, mehr nicht. Und das kann ich auch, bereits vorher schon. >Da wären Binäroperationen sinnvoller gewesen, aber gut, was weiß >ich, was heutzutage in den Lehrplänen steht, gibt's da wenigstens >Informatik bei 10 Klassen? An einer Gesamtschule ja, 7.-10. mit entsprechender Wahl des Faches. An einem Gymnasium das ich kenne gibts von 7.-9. kein Informatik. >Iss aber auch egal, Du weißt ja jetzt, was Du jetzt an Wissen >brauchst, und Dir irgendwie aneignen solltest. Jepp, ich denke das müsste jetzt alles Funktionieren, vielen dank an alle! [ - Answer - Quote - Direct link - ] |
2006-07-17, 10:58 h MaikG Posts: 5172 User |
Zu früh gefreut das wiederherstellen der Mausfunktion verursacht einen Enforcer Hit: also type&=GPCT_MOUSE& POKEW(InputIO&+IORequestio_Command%), IND_SETMTYPE& POKEL(InputIO&+IOStdReqio_Data%), VARPTR(type&)+3 POKEL(InputIO&+IOStdReqio_Length%),1& POKEB(InputIO&+IOStdReqio_Flags%), IOF_QUICK& IF DoIO&(InputIO&) THEN PRINT "Fehler4 DOIO" IF deviceI&=0 THEN CloseDevice InputIO&:PRINT "Device geschlossen" Nicht anders als bei NOCONTROLLER, klammer ich die ersten 6 Zeilen aus kommt kein Hit. "Device geschlossen" sehe ich nicht mehr bevor das Programm sich aufhängt. [ - Answer - Quote - Direct link - ] |
2006-07-17, 14:17 h Holger Posts: 8116 User |
@MaikG: So kann man ja nur raten. Zeigt denn InputIO& auch wirklich auf einen angeforderten Speicherbereich der richtigen Größe? Stimmen die Offsets? Die Namen sind sehr ungewöhnlich, na ja und in Basic eine Variable nicht existiert, wird flugs den neue Variable mit dem Wert 0 erzeugt und das dürfte bei poke nicht so gut sein... Ansonsten mußt Du schon mehr als diese paar Zeilen zeigen... mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Answer - Quote - Direct link - ] |
2006-07-17, 18:01 h MaikG Posts: 5172 User |
>@MaikG: >So kann man ja nur raten. Zeigt denn InputIO& auch wirklich auf >einen angeforderten Speicherbereich der richtigen Größe? InputIO& ist so wie es früher war, wo die Maus abgeschaltet wurde, wie in deinem Beispiel. >Stimmen die Offsets? Die Namen sind sehr ungewöhnlich, na ja und >in Basic eine Variable nicht existiert, wird flugs den neue >Variable mit dem Wert 0 erzeugt und das dürfte bei poke nicht so >gut sein... Na weiter oben im Programm geht es ja, mit den gleichen offsets, die sehen unter Basic etwas anders aus, bei C definiert man ja die größe einer Variablen am Anfang bei Basic ist das halt mit &, %, ! usw. >Ansonsten mußt Du schon mehr als diese paar Zeilen zeigen... Hier ist der Anfang: type&=GPCT_NOCONTROLLER& portI& = CreatePort&(NULL&, NULL&) IF portI& THEN InputIO&=CreateExtIO&(port&,IOStdReq_sizeof%) IF InputIO& THEN deviceI& = OpenDevice&(SADD("input.device" + CHR$(0)), NULL&, InputIO&, NULL&) IF deviceI&=0 THEN POKEW(InputIO&+IORequestio_Command%), IND_SETMTYPE& POKEL(InputIO&+IOStdReqio_Data%), VARPTR(type&)+3 POKEL(InputIO&+IOStdReqio_Length%),1& IF DoIO&(InputIO&) THEN PRINT "Fehler4 DOIO" ELSE PRINT "can't open input.device" END IF Librarys etc. sind geöffnet und Ports etc. wird nach dem Maus aktivieren wieder geschlossen. Ansonsten ist da noch mein Programm, was aber andere Variablen verwendet, deswegen PortI& statt Port&. Kann es sein das man das man extra nochmal einen Port, CreateExtIO& und OpenDevice machen muss? Ich hab gestern im halbschlaf in den NDK gelesen das man irgendeine Struktur nicht wiederverwenden darf. [ - Answer - Quote - Direct link - ] |
2006-07-17, 19:27 h Holger Posts: 8116 User |
Zitat:Geht ja nicht um die Größe der Variablen, sondern um deren Inhalt. Basic warnt Dich ja nicht, wenn es die Variable nicht gibt, sondern erzeugt eine neue. z.B. POKEW(InputIO&+IORequestio_Command%), IND_SETMTYPE& Gibt es wirklich IND_SETMTYPE& ? Die anderen Variablen sind alle zwei-byte Integer und ausgerechnet da, wo wirklich zwei byte Integer benötigt wird, ist die Konstante plötzlich vier bytes? mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - 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. |