Autor Wątek:  Sterowanie joystickiem  (Przeczytany 7721 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline MaciejM

  • Wiadomości: 4134
    • Zobacz profil
  • Otrzymane polubienia: 1421
Sterowanie joystickiem
« dnia: 27 Stycznia 2014, 15:46:54 »
Obserwując duże zainteresowanie własnymi pulpitami do MaSzyny oraz głosy braku sił/czasu/chęci do ich stworzenia, pozwalam sobie przetłumaczyć instrukcję poprawnego podłączenia jednego z urządzeń wejścia (joystick) w taki sposób, aby jego działanie przełożyć na symulator. Nie biorę odpowiedzialności za jakiekolwiek błędy i ich następstwa spowodowane podczas zabawy.

Na wstępie należy zainstalować program AutoHotkey: http://ahkscript.org/download/

Po zainstalowaniu w folderze Moje Dokumenty lub Dokumenty utworzy się plik AutoHotkey.ahk. Otwieramy go za pomocą edytora tekstu (Notatnik, Notepad++) i zmieniamy zawartość na:
; AutoHotkey Version: 1.x
; Language:       English
; Platform:       Win9x/NT
; Author:         Greno Zee
;
; Script Function:
;   Provides joystick control for MaSzyna train simulator
;

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#Persistent  ; Keep this script running until the user explicitly exits it.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
CheckInterval = 10 ; Number of miliseconds between joystick status checks. It's prefered not to change this value
ChecksForShift = 50 ; Number of check the joystick must be in certain position to trigger the SHIFT + Key input.

ShiftCounter := 0
SetTimer, WatchAxis, %CheckInterval%
return

WatchAxis:
GetKeyState, JoyX, JoyX  ; Get position of X axis.
GetKeyState, JoyY, JoyY  ; Get position of Y axis.
GetKeyState, Joy1, Joy1  ; Get button 1 state.
GetKeyState, Joy2, Joy2  ; Get button 2 state.

KeyToHoldDownPrev = %KeyToHoldDown%  ; Prev now holds the key that was down before (if any).

if JoyX > 70
{
    if Joy1 = D
        KeyToHoldDown = Numpad7
    else if Joy2 = D
        KeyToHoldDown = NumpadDot
    else
        KeyToHoldDown = Numpad9
}
else if JoyX < 30
{
    if Joy1 = D
        KeyToHoldDown = Numpad1
    else if Joy2 = D
        KeyToHoldDown = Numpad0
    else
        KeyToHoldDown = Numpad3
}
else if JoyY > 70
{
    if Joy1 = D
        KeyToHoldDown = NumpadMult
    else if Joy2 = D
        KeyToHoldDown = r
    else
        KeyToHoldDown = NumpadSub
}
else if JoyY < 30
{
    if Joy1 = D
        KeyToHoldDown = NumpadDiv
    else if Joy2 = D
        KeyToHoldDown = d
    else
        KeyToHoldDown = NumpadAdd
}
else
    KeyToHoldDown =

SetKeyDelay -1  ; Avoid delays between keystrokes.

if KeyToHoldDown   ; There is a key to press down.
{
    if KeyToHoldDown = %KeyToHoldDownPrev%
    {
        ShiftCounter += 1

        if ShiftCounter = %ChecksForShift%
        {
            SendInput {Shift Down}
            Sleep 70
            SendInput {%KeyToHoldDown%}
            Sleep 70
            SendInput {Shift Up}
        }
    }
    else
        SendInput {%KeyToHoldDown%}
}
else
    ShiftCounter := 0
return

Podłączamy joystick.

Funkcje:
Przód-----Nastawnik jazdy +1
Przód + przycisk 1 -----Dźwignia bocznikowania +1
Przód + przycisk 2-----Nastawnik kierunkowy do przodu (+1)
Tył-----Nastawnik jazdy -1
Tył + przycisk 1-----Dźwignia bocznikowania -1
Tył + przycisk 2-----Nastawnik kierunkowy do tyłu (-1)
Lewo-----Kran hamulca zasadniczego w kierunku zwiększenia siły hamowania
Lewo + przycisk 1-----Kran hamulca pomocniczego w kierunku zwiększenia siły hamowania
Lewo + przycisk 2-----Hamowanie awaryjne
Prawo-----Kran hamulca zasadniczego w kierunku zmniejszenia siły hamowania
Prawo + przycisk 1-----Kran hamulca pomocniczego w kierunku zmniejszenia siły hamowania
Prawo + przycisk 2 -----Odcięcie kranu hamulca zasadniczego


Przytrzymanie dźwigni (przykładowo) w pozycji PRZÓD sprawi, że przeskoczy on jedną pozycję do przodu. Z kolei po pół sekundy ciągłego przytrzymania nastawnik jazdy "przeskoczy do końca". Tak jakby po pół sekundy trzymania joysticka w jednej pozycji dołączył się do niego klawisz SHIFT.

Sam tego dotychczas nie sprawdzałem, joysticka będę mógł użyć dopiero jutro.
« Ostatnia zmiana: 27 Stycznia 2014, 16:11:02 wysłana przez macius5991 »
PKP Intercity Zakład Centralny w Warszawie
15 lat z MaSzyną!

Sceneria Tomaszewo - zapraszam do otwartych testów scenerii.

Offline fuji8

  • Zasłużony dla Symulatora
  • Wiadomości: 1201
    • Zobacz profil
    • smk Jaworzyna Śląska
  • Otrzymane polubienia: 833
Odp: Sterowanie joystickiem
« Odpowiedź #1 dnia: 27 Stycznia 2014, 22:27:29 »
Wszystko działa, jak mi się uda to jeszcze dzisiaj pokażę filmik.
EDIT: nie działają u mnie następujące klawisze:
Lewo   -----   Kran hamulca zasadniczego w kierunku zwiększenia siły hamowania
Prawo   -----   Kran hamulca zasadniczego w kierunku zmniejszenia siły hamowania
Lewo + przycisk 1   -----   Kran hamulca pomocniczego w kierunku zwiększenia siły hamowania
Prawo + przycisk 1   -----   Kran hamulca pomocniczego w kierunku zmniejszenia siły hamowania.
Filmik w dowód, że działa:
« Ostatnia zmiana: 27 Stycznia 2014, 23:20:53 wysłana przez fuji8 »
"Rzeczy niemożliwe wykonujemy natychmiast, cuda zajmują nam nieco więcej czasu"

Offline MaciejM

  • Wiadomości: 4134
    • Zobacz profil
  • Otrzymane polubienia: 1421
Odp: Sterowanie joystickiem
« Odpowiedź #2 dnia: 02 Lutego 2014, 13:08:17 »
Dziwna sprawa, bo w logu jest informacja, że sterowanie kranem hamulca zasadniczego działa, a ten ani drgnie. Mi działa wszystko za wyjątkiem:
Cytuj
Lewo   -----   Kran hamulca zasadniczego w kierunku zwiększenia siły hamowania
Prawo   -----   Kran hamulca zasadniczego w kierunku zmniejszenia siły hamowania
A hamowanie nagłe i pozycja odcięcia (Num0 i Num,) funkcjonują. Ogólnie fantastyczna sprawa. Obecnie dżojstik mamy w ET22-2xxx, SM42-12xx, ST45, a niebawem też w E186 oraz w BR285.

  Dodano: 02 Lutego 2014, 13:43:24
Film z działania urządzenia: http://youtu.be/S0ei5v702X4

  Dodano: 02 Lutego 2014, 15:16:16
Ktoś ma jakiś pomysł dlaczego w logu zapisane jest wciśnięcie klawisza a skutku nie widać?

  Dodano: 03 Lutego 2014, 19:31:03
Zaobserwowalem cos ciekawego. Kran hamulca dziala w EZTach, reaguje na ruchy lewo / prawo. Jednakze wysylany jest jeden impuls, co uniemozliwia odhamowanie skladu.
« Ostatnia zmiana: 03 Lutego 2014, 19:31:03 wysłana przez macius5991 »
PKP Intercity Zakład Centralny w Warszawie
15 lat z MaSzyną!

Sceneria Tomaszewo - zapraszam do otwartych testów scenerii.

Offline youBy

  • Deweloper
  • Wiadomości: 6169
  • Co tam?
    • Zobacz profil
    • Automat Weryfikujący Regulację i Lambdę
  • Otrzymane polubienia: 889
Odp: Sterowanie joystickiem
« Odpowiedź #3 dnia: 03 Lutego 2014, 19:58:20 »
Klawisze od sterowania zaworem FV4a muszą być naciśnięte ciągle, ponieważ zmiana pozycji zależy od czasu naciskania klawisza.
Xoov
Powyższy post wyraża jedynie opinię autora w chwili publikacji. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyny, jak również informowania o tym.

Offline adsim

  • Moderator
  • Wiadomości: 3934
    • Zobacz profil
  • Otrzymane polubienia: 12
Odp: Sterowanie joystickiem
« Odpowiedź #4 dnia: 04 Lutego 2014, 11:58:42 »
Tak z ciekawości, dało by się coś takiego zrobić dla kierownicy do PC?
(: ɯɐıʍɐɹpzod

Offline MaciejM

  • Wiadomości: 4134
    • Zobacz profil
  • Otrzymane polubienia: 1421
Odp: Sterowanie joystickiem
« Odpowiedź #5 dnia: 06 Lutego 2014, 21:57:52 »
Z pewnością autohotkey jest w stanie to zrobić (przy odpowiednio napisanych skryptach), ale trzeba by samemu się z tym pobawić. Ja obecnie próbuję dodać możliwość sterowania syreną.
PKP Intercity Zakład Centralny w Warszawie
15 lat z MaSzyną!

Sceneria Tomaszewo - zapraszam do otwartych testów scenerii.

Offline elektryk157

  • Wiadomości: 13
    • Zobacz profil
  • Otrzymane polubienia: 0
Odp: Sterowanie joystickiem
« Odpowiedź #6 dnia: 07 Lutego 2014, 20:30:50 »
To samo można zrobić za pomocą programu xpadder z dowolnym joystickiem/kierownicą i można tam ustawić każdy przycisk.

Offline MaciejM

  • Wiadomości: 4134
    • Zobacz profil
  • Otrzymane polubienia: 1421
Odp: Sterowanie joystickiem
« Odpowiedź #7 dnia: 07 Lutego 2014, 21:56:20 »
Z tym xpadder to też ciekawa sprawa. Uruchomiłem dodatkowo syrenę, zbijanie czuwaka... program bardzo intuicyjny, łatwo można skonfigurować sobie ustawienia. No i nie jest wysyłany jeden impuls, tylko symulowane jest wciśnięcie klawisza = działający kran hamulca zasadniczego.
PKP Intercity Zakład Centralny w Warszawie
15 lat z MaSzyną!

Sceneria Tomaszewo - zapraszam do otwartych testów scenerii.