2 Controller 1 PC
Übersicht

![]() |
marcel_bohnBetreff: 2 Controller 1 PC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guten tag!
Ich hab hier mal ne Frage: kann man auf irgendeine weise 2 Controller an einen PC anschließen die dann parallel funktionieren? ich glaub zwar nicht das das möglich ist aber vllt. kennt ihr ja ne lösung... |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum sollte es nicht möglich sein, du hast doch mehr als einen USB-Steckplatz oder?
Schau dir mal die Befehle in der Hilfe an, da musst du eigentlich immer einen Port angeben(ab0), also hat jeder Controller seinen eigenen port/id einfach die maximalanzahl durchgehen und prüfen, ob ein Controller angeschlossen ist. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
das hab ich auch schon gelesen und habs getestet nur leider prüft mein pc nur den von windows bevorzugten controller und ignoriert alle anderen controller | ||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie sieht den dein Code aus, ich habe mir damals ein Sample geschrieben und es hat super funktioniert, außerdem wäre das Thema im Codebereich wohl besser aufgehoben, da man im Moment nicht sehen kann, welche BB Version du benutzt.
Ich schau gleich mal ob ich mein Sample noch finde [Edit] Ok habs doch auf meinen neuen Laptop mitgenommen. Mit folgendem Code werden mein Sidewinder Digitalpad und mein Logitech Dual Action gleichzeitig erkannt, den dritten kann ich gerade nicht anschließen, da meine Maus auch einen USB-Platz blockiert. Code: [AUSKLAPPEN] Graphics 800, 600, 32, 2 SetBuffer BackBuffer() Type joypad Field id Field art$ End Type joy_anz = CountJoysticks() Repeat Text 10, 10, "Anzahl Joysticks: " + joy_anz For j.joypad = Each joypad Text 10 + (j\id * 250), 50, "Joypad: " + j\id Text 10 + (j\id * 250), 70, "Joypad Type: " + j\art Text 10 + (j\id * 250), 100, "Joypad X: " + JoyX(j\id) Text 10 + (j\id * 250), 120, "Joypad X Dir: " + JoyXDir(j\id) Text 10 + (j\id * 250), 140, "Joypad Y: " + (-JoyY(j\id)) Text 10 + (j\id * 250), 160, "Joypad Y Dir: " + JoyYDir(j\id) Text 10 + (j\id * 250), 180, "Joypad Z: " + JoyZ(j\id) Text 10 + (j\id * 250), 200, "Joypad U: " + JoyU(j\id) Text 10 + (j\id * 250), 220, "Joypad V: " + JoyV(j\id) Text 10 + (j\id * 250), 240, "Joypad Pitch: " + JoyPitch(j\id) Text 10 + (j\id * 250), 260, "Joypad Yaw: " + JoyYaw(j\id) Text 10 + (j\id * 250), 280, "Joypad Roll: " + JoyRoll(j\id) Text 10 + (j\id * 250), 300, "Joypad Hat: " + JoyHat(j\id) For i = 1 To 12 Text 10 + (j\id * 250), 310 + (i * 20), "Joypad Knopf(" + i + "): " + JoyDown(i,j\id) Next Next Flip Cls Until KeyHit(1) End Function CountJoysticks() Local joy_type Local index = 0 Repeat joy_type = JoyType(index) If joy_type <> 0 Then j.joypad = New joypad j\id = index Select joy_type Case 1 j\art = "digital" Case 2 j\art = "analog" End Select index = index + 1 EndIf Until joy_type = 0 Return index End Function |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja, also ich benutzte bmax und mein code sieht so aus
BlitzMax: [AUSKLAPPEN]
so und da gibt er nur an wenn ich mit controller 1 eine taste drücke, also i2 is für port |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also bei mir werden beide Joypads erkannt, habe deinen Code mal ein wenig umgeschrieben:
Code: [AUSKLAPPEN] Repeat For port = 0 To 4 For button = 0 To 12 If JoyHit(button, port) Then Print "Taste: " + button + "| Joypad:" + port Next Next Until KeyHit(KEY_ESCAPE) End schau dir einfach mal mein Beispiel an und es sollte kein Problem sein dieses in BMax um zu schreiben. Wenn obiges Beispiel keinen zweiten Controller anzeigen, wird wohl etwas mit einem von deinen nicht in Ordnung sein. Wobei es mir auch komisch vorkommt, dass mein digitale Sidewinder bei Knopfdruck gleichzeitig 0,2,3 und 4 ist, der analoge Logitech wird nur als 1 angezeigt. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok anscheinend kann nur blitz 2d zwei controller unterscheiden, denn mein code funktioniert wunderbar in blitz 2d ... aber überhaupt nicht in blitzmax... | ||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie ich sagt, auch mit deinem Ursprungscode, zeigt er mir beide an, keine Ahnung woran es bei dir sonst liegen kann??? | ||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
benutzt du blitzmax?
achja und bei deinem code Printed er das: Taste: 2| Joypad:3 Taste: 2| Joypad:2 Taste: 2| Joypad:4 Taste: 2| Joypad:0 Taste: 2| Joypad:0 Taste: 2| Joypad:3 Taste: 2| Joypad:2 Taste: 2| Joypad:0 Taste: 2| Joypad:4 Taste: 2| Joypad:2 Taste: 2| Joypad:1 Taste: 2| Joypad:0 obwohl immer nur der selbe controller und taste gedrückt wurde |
||
- Zuletzt bearbeitet von marcel_bohn am Sa, Mai 28, 2011 11:53, insgesamt einmal bearbeitet
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
So nochmal von Anfang, den Code den ich zuerst gepostet habe ist aus B3D und zeigt alles Korrekt an.
Dann habe ich deinen Code in BM geladen und er zeigt mir auch an, dass egal ob ich den digitalen oder analogen Controller drücke ein Tastendruck empfangen wurde. Daraufhin habe ich deinen Code nur etwas optimiert und bei der Anzeige, den Controller eingefügt, der gerade gedrückt wurde, mein Analoger wird mit dem Port 1 auch korrekt dargestellt, nur bei meinem Digitalen werden mehrere Ports(0,2,3,4) hintereinander angezeigt, was mir komisch vorkommt. Zudem bin ich auch gerade dabei mein Sample aus B3D auf BM zu portieren, wird aber wohl heute nichts mehr, da ich gleich weg muss. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
me² schreib mir wenn du dein code optimiert hast(ich hab zwei analoge controler und es werden immer nur die tasten angezeigt von dem controler den ich als bevorzugt gewählt hab) vllt. is das auch ein windows xp problem | ||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich habe hier kein XP mehr drauf und habe auch keinen Controller als Bevorzug eingerichtet, mag auch sein, dass es daran liegt, das kann ich nicht testen. | ||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
gameworx |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte mir bei amazon vor ein paar Wochen einen USB Adapter bestellt, an dem ich zwei Playstation Controller anschließen kann. Der Adapter hat ca. 5 EUR gekostet und funktioniert wunderbar. Egal ob ich einen Emulator benutze (MAME o.ä.), Armed Assault II spiele (Auto fahren ist damit cool) oder in Blitz3D programmiere. Kann ich wirklich sehr empfehlen, wenn du bereits Playstation Controller besitzt. | ||
AMD Athlon II X3 440 (3 GHz), 4GB Ram, ATI Radeon HD 5450, Win 7 |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
das wäre eventuell eine gute alternative, bloß ich muss halt sagen das es mich schon ein bisschen ankotzt, das mein Controller code in blitz2d funktioniert aber in bmax nicht ich versuchs gleich mal ein meinem bro seinem windows 7 und wenns da geht dann heul ich... ![]() |
||
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok jetzt check ich gar nix mehr ich hab mich jetzt heut morgen nochmal an mein programm gesetzt und sinnlos daran rum geschrieben mit erfolg: Es funktioniert jetzt, auch wenn ich nich weiß warum das so funzt ich post den code mal hier hier mal
BlitzMax: [AUSKLAPPEN]
schreib ich den Code wie gepostet, so funktioniert es ohne probleme aber sobald ich joycount() entferne funktioniert controller 2 nicht mehr und ich weiß net warum... Naja hauptsach es geht, Ich weiß jetzt auch übrigens warum er für einen controller mehrere Ports zuweißt! Blitzmax weißt dem controller einen port zu bsp.: controller 1 = Port0, controller 2 = Port1 und da nicht mehr controller vorhanden sind, weißt er controller 1 auch noch die restlichen ports zu (3 und 4). Wird nun der controller an Port 3 oder 4 abgefragt wird automatisch controller 1 abgefragt. ich hoffe das ich es einigermaßen verständlich erklärt habe ![]() |
||
![]() |
DaysShadow |
![]() Antworten mit Zitat ![]() |
---|---|---|
Teste am besten noch, ob es reicht JoyCount einmal vor der Hauptschleife, also vor Repeat aufzurufen.
Dann bräuchtest du BlitzMax nicht jeden Frame die Anzahl der Joysticks und Gamepads ermitteln lassen. |
||
Blessed is the mind too small for doubt |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
jop, da hast du natürlich recht ^^ is ja unnötig das jedes mal zu wiederholen. Wenn es vor der schleife steht funktionierts auch | ||
c64 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
würde mal behaupten/vermuten das JoyCount irgentwas Initialisiert was auf bestimmten Systemen notwendig ist bei der benutzung von mehreren Controllern und auf anderen Systemen je nach Konfiguration nicht von nöten ist! Allerdings würde ich es aufgrund meiner Vermutung immer einsetzen wenn ein Programm mehrere Controller unterstützen soll. mfg. C64 |
||
Betreten verboten! Kinder haften für ihre Eltern! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group