Показать сообщение отдельно
Старый 05.04.2007, 17:06   #30
ubazza
Пользователь
 
Регистрация: 18.03.2007
Возраст: 40
Город: t72
Машина: 1984\Mercedes\E190
Сообщений: 49
ubazza is on a distinguished road
По умолчанию Подведем итоги.

Схемы подключения джойстика Sony RM-X2S , Sony RM-X4S
http://llg.cubic.org/tools/sonyrm/ - повесить сопрот 120ко на 6,8 pin порта (в схеме не нарисовано) - ось х
вторая схема
http://freeweb.supereva.com/dmc.freeweb/?p - в схеме нет проводка от оси Х, на разъём подключения джойстика.
Там же лежит готовый софт под winamp (plugin)
__________________________________________________ ____________

Для настройки под другой софт потребуется программа autohotkey

Скрипт для управления сфтом.
; Скрипт для подключения автомобильного двойстика Sony X4S к CarPc
; *********************** Секция настроек начало ***********************
JoystickNumber = 1
VolumeStep = 5
; Погрешность определения значений
KeyGetDelta = 0.3
; Значения кнопок
JKey_OFF =
JKey_ATT = 1.82
JKey_X1 =
JKey_X2 = 2.6
JKey_X3 = 11.1
JKey_PREV = 3.4
JKey_NEXT = 4.6
JKey_VOLD = 6.2
JKey_VOLU = 8.2
JKey_SOURCE = 0.8
; Переменная в которой запоминаем громкость (для Mute)
MUTE_SOUND = 0
; *********************** Секция настроек конец ***********************

#SingleInstance
SetFormat, float, 0.1 ; Omit decimal point from axis position percentages.

; Читаем инфу по жостику. Пока с ней ничего не делаем
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo

SoundGet, MUTE_SOUND
Loop
{
; Читаем состояние кнопок. Если кнопарь нажат, то переменная button(№кнопки)= D
Loop, %joy_buttons%
{
GetKeyState, button%a_index%, %JoystickNumber%joy%a_index%
}

; Читаем показания оси Х - по сути основных кнопок жостика
GetKeyState, joyx, %JoystickNumber%JoyX

; Читаем мышиный скролл (пока не пользуем)
; GetKeyState, mouse_Down, WheelDown
; GetKeyState, mouse_Up, WheelUp

; Генерим нужные действия:

; изменение громкости - меньше

If joyx-KeyGetDelta <= JKey_VOLD and joyx+KeyGetDelta >= JKey_VOLD
{
SoundSet -VolumeStep
}

; изменение громкости - больше
If joyx-KeyGetDelta <= JKey_VOLU and joyx+KeyGetDelta >= JKey_VOLU
{
SoundSet +VolumeStep
}

; JKey_X1
If joyx-KeyGetDelta <= JKey_X1 and joyx+KeyGetDelta >= JKey_X1
{
}

; JKey_OFF
If joyx-KeyGetDelta <= JKey_OFF and joyx+KeyGetDelta >= JKey_OFF
{
; Действие на JKey_OFF
}


; JKey_ATT
If joyx-KeyGetDelta <= JKey_ATT and joyx+KeyGetDelta >= JKey_ATT
{
; Действие на JKey_ATT
SoundGet, Tmp
If Tmp = 0 ;мы в режиме MUTE
{
SoundSet, MUTE_SOUND
}
Else
{
SoundGet, MUTE_SOUND
SoundSet, 0
}

}


; JKey_X2
If joyx-KeyGetDelta <= JKey_X2 and joyx+KeyGetDelta >= JKey_X2
{
; Действие на JKey_X2
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8

Send !2
}

; JKey_X3
If joyx-KeyGetDelta <= JKey_X3 and joyx+KeyGetDelta >= JKey_X3
{
; Действие на JKey_X3
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8

Send !5
}

; JKey_PREV
If joyx-KeyGetDelta <= JKey_PREV and joyx+KeyGetDelta >= JKey_PREV
{
; Действие на JKey_PREV
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !1
}

; JKey_NEXT
If joyx-KeyGetDelta <= JKey_NEXT and joyx+KeyGetDelta >= JKey_NEXT
{
; Действие на JKey_NEXT
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !3
}

; JKey_SOURCE
If joyx-KeyGetDelta <= JKey_SOURCE and joyx+KeyGetDelta >= JKey_SOURCE
{
; Действие на JKey_SOURCE
WinActivate ahk_class TForm1
Send {F11}
}

; Ждем 250 мс (0.25 сек)
Sleep, 250
}
return
__________________________________________________ _____________

а этот скрипт для опознания координат оси Х – те координаты которые нужно вбивать в превый скрипт.


; July 6, 2005: Added auto-detection of joystick number.
; May 8, 2005 : Fixed: JoyAxes is no longer queried as a means of
; detecting whether the joystick is connected. Some joysticks are
; gamepads and don't have even a single axis.

; If you want to unconditionally use a specific joystick number, change
; the following value from 0 to the number of the joystick (1-32).
; A value of 0 causes the joystick number to be auto-detected:
JoystickNumber = 1

; END OF CONFIG SECTION. Do not make changes below this point unless
; you wish to alter the basic functionality of the script.

; Auto-detect the joystick number if called for:
if JoystickNumber <= 0
{
Loop 32 ; Query each joystick number to find out which ones exist.
{
GetKeyState, JoyName, %A_Index%JoyName
if JoyName <>
{
JoystickNumber = %A_Index%
break
}
}
if JoystickNumber <= 0
{
MsgBox The system does not appear to have any joysticks.
ExitApp
}
}

#SingleInstance
SetFormat, float, 0.2 ; Omit decimal point from axis position percentages.
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo
Loop
{
buttons_down = 0
Loop, %joy_buttons%
{
GetKeyState, joy%a_index%, %JoystickNumber%joy%a_index%
if joy%a_index% = D
buttons_down = %buttons_down%%a_space%%a_index%
}
GetKeyState, joyx, %JoystickNumber%JoyX
axis_info = X%joyx%
GetKeyState, joyy, %JoystickNumber%JoyY
axis_info = %axis_info%%a_space%%a_space%Y%joyy%
IfInString, joy_info, Z
{
GetKeyState, joyz, %JoystickNumber%JoyZ
axis_info = %axis_info%%a_space%%a_space%Z%joyz%
}
IfInString, joy_info, R
{
GetKeyState, joyr, %JoystickNumber%JoyR
axis_info = %axis_info%%a_space%%a_space%R%joyr%
}
IfInString, joy_info, U
{
GetKeyState, joyu, %JoystickNumber%JoyU
axis_info = %axis_info%%a_space%%a_space%U%joyu%
}
IfInString, joy_info, V
{
GetKeyState, joyv, %JoystickNumber%JoyV
axis_info = %axis_info%%a_space%%a_space%V%joyv%
}
IfInString, joy_info, P
{
GetKeyState, joyp, %JoystickNumber%JoyPOV
axis_info = %axis_info%%a_space%%a_space%POV%joyp%
}
ToolTip, %joy_name% (#%JoystickNumber%):`nJoy_info is:%joy_jnfo%`n%axis_info%`nButtons Down: %buttons_down%`n`n(right-click the tray icon to exit)
; Ждем 200 мс (0.2 сек)
Sleep, 200
}
return


__________________________________________________ ___________

Важные параметры.
float, 0.1 – в обоих скриптах ед. измерения (отображения знаков после точки) – для тех у кого координаты находятся близко.

PS: Большое Спасибо Hamster, Mike, за скрипты , помощь в сборе и советах.
ubazza вне форума   Ответить с цитированием