PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Устройства ввода (http://pccar.ru/forumdisplay.php?f=12)
-   -   Управляем громкостью (http://pccar.ru/showthread.php?t=195)

Hamster 06.12.2006 15:44

Вот пример скрипта (к сожалению последний, рабочий вариант в машине, и тока на выходных смогу выложить):

; Скрипт для подключения автомобильного двойстика Sony X4S к CarPc
; *********************** Секция настроек начало ***********************
JoystickNumber = 1
VolumeStep = 5
; Погрешность определения значений
KeyGetDelta = 2
; Значения кнопок
JKey_OFF = 1
JKey_ATT = 1
JKey_MUTE = 1
JKey_X1 = 1
JKey_X2 = 1
JKey_PREV = 1
JKey_NEXT = 1
JKey_VOLD = 1
JKey_VOLU = 1
JKey_SOURCE = 1
; Переменная в которой запоминаем громкость (для Mute)
MUTE_SOUND = 0
; *********************** Секция настроек конец ***********************

#SingleInstance
SetFormat, float, 03 ; 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_MUTE
If joyx-KeyGetDelta >= JKey_MUTE and joyx+KeyGetDelta <= JKey_MUTE
{
SoundGet, Tmp
If Tmp = 0 ;мы в режиме MUTE
{
SoundSet, MUTE_SOUND
}
Else
{
SoundGet, MUTE_SOUND
SoundSet, 0
}
}

; 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
}


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

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

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

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

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

; Ждем 200 мс (0.2 сек)
Sleep, 200
}
return

lvovitch 06.12.2006 17:19

Цитата:

Сообщение от Hamster (Сообщение 13168)
Вот пример скрипта...

Спасибо ОГРОМНОЕ!!! Я бы не разобрался! Сегодня вечером обязательно буду пробывать!

Hamster 06.12.2006 17:36

Цитата:

Сообщение от lvovitch (Сообщение 13175)
Спасибо ОГРОМНОЕ!!! Я бы не разобрался! Сегодня вечером обязательно буду пробывать!

Только не забудь правильно заполнить значение констант:

; Значения кнопок
JKey_OFF = 1
JKey_ATT = 1
JKey_MUTE = 1
JKey_X1 = 1
JKey_X2 = 1
JKey_PREV = 1
JKey_NEXT = 1
JKey_VOLD = 1
JKey_VOLU = 1
JKey_SOURCE = 1

Как ты понимаешь они для каждой конфигурации (у тебя и у меня) разные, ибо резисторы мы вешали разные.

lvovitch 06.12.2006 18:09

Цитата:

Сообщение от Hamster (Сообщение 13177)
Только не забудь правильно заполнить значение констант...


Ага. Сюда ведь нужно вписать данные с оси Х

А потом еще и действия на нажатия кнопок. Правильно?

Hamster 06.12.2006 19:05

Цитата:

Сообщение от lvovitch (Сообщение 13183)
Ага. Сюда ведь нужно вписать данные с оси Х

А потом еще и действия на нажатия кнопок. Правильно?

Угу. Там в примере тока Vol+, Vol-, Mute. Причем муте сделано как убирание звука в 0. Т.е. если к примеру в Роадраннере - он не покажет, что Муту включен (там кнопки-индикаторы). просто звук по нулям.

Короче. синтаксис там простой, хелп хороший.

Exial 29.12.2006 14:52

Купил домой клавиатуру с дополнительными кнопками, включая управление громкостью. Так вот: в XP Media center edition это заработало без драйверов, и обнаружился весьма интересный эффект: шаг изменения громкости при нажатии кнопки изменяется в зависимости от текущей громкости, то есть при маленьких значениях изменяется на единицы, а при повышении громкости шаг меняется. При этом на слух изменение громкости происходит равномерно (разница между 80% и 100% не такая большая, как между 10% и 30%). При этом полоска громкости при нажатии кнопок вылезает на OSD.
Очевидно, этот механизм заложен в операционку. Кто-нибудь знает что за команды клавиатура отдает системе и как это использовать?

Eugene 03.01.2007 01:30

У меня обычный XP тоже такие клавы переваривает без дров...

Gads 23.05.2007 06:01

Цитата:

Сообщение от Димон (Сообщение 1302)
Сложнее всего оказалось сделать чтобы при удержании одной из кнопок регулировка доезжала до крайнего значения а не двадцатью тычками делать муте.

Читал тему раза 3 так и не понял. Как решить проблему с многочисленными тычками для уменьшения звука.
Одно нажатие = -10% громкости.
а надо, одно нажатие и громкость постепенно до 0 уменьшилась.

спасибо :)

Димон 23.05.2007 10:55

Читать бесполезно, про это нигде не написано. Вся программа переделана на цыкл, который запускается по событию "нажатие кнопки". В каждой итерации снимаю по 4% и проверяю "не нажата-ли кнопка". Если вдруг выясняется что "она не нажата" то цыкл рву. Другого метода имхо нет т.к. в жостике нет события "button up", есть только "check state"

Cobalt 24.05.2007 03:48

А почему управление громкостью рассматривается тока на уровне компа и винды? Джойстик! Кнопки! Порт! Гемор! Нужен девайс, упраляющий громкостью после звуковухи. Желательно с несколькими парами входов и выходов например для системы типа 5.1- по 3 входа и стокаже выходов. с возможностью как раздельной аттеньюации каждой пары, так и убавления или поднятия общего уровня по всем парам... Кажется мысль более рациональна! И удобнее ручку крутить. Ну на крайняк мона и кнопки. Опять же не знаю, как это в поисковике обозвать... Есть у кого адресок или зацепка какая на подобное устройство. Ну мона в худшем случае несколько одинаковых приблуд, если у будет вход один. Мафон не катит. Тока от него избавился... да и аукс там одной парой представлен. Терь страдаю со скроллером и столкнулся с тем, что иногда надо саб погромче или потише. ДА! Есть уси с дистанционкой. Но у меня та без оной... Или то, что выше саба играет убавить почти на минимум и оставить колотушку. Короче суть искомого наверное ясна... помогите плиз!


Часовой пояс GMT +4, время: 15:57.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot