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

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > АвтоЗвук

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2018, 23:48   #3401
duzzy
Гуру
 
Регистрация: 01.06.2013
Регион: 78, 98
Машина: SUBARU Impreza WRX
Сообщений: 1,766
duzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond repute
По умолчанию

Скрипт для отправки команд из Икара в фубар для МПС

Для функционирования скрипта необходима библиотека автоит AutoItX3.dll(в корне папки сборки в папке "assemblies" и еще манифест AutoItX3.dll.manifest, в свежей сборке FLAT есть все что нужно).
И плагин foo_ui_hacks.

Пример кнопки для Икара:

B,5,120,250,113,"SETVAR;SENDFB2K;nexttrack",

SENDFB2K --- переменная которую объявляем в икаре и читаем в js скрипте фубара
nexttrack --- команда которую прочитает фубар при например нажатии кнопки

Работает так, запускаем фубар из икара, скрипт в фубаре начинает работать, опрашивать переменную икара "SENDFB2K", как только из икара переменной присвоено какое то значение и если оно совпадает со значением в переключателе выполняется то что было прописано под этим значением, при выполнении переменная икара обнуляется.

Команды прописанные в переключателе(nexttrack, prevtrack, playorpause... и т.д.)прописаны как пример, можно прописывать что угодно, не забывая повесть команду на кнопку в икаре.
PHP код:
//--- send commands to fb2k(iCarDS<->fb2k)
var autoit_obj = new ActiveXObject("AutoItX3.Control");
var 
rr undefined;
var 
rr_getinfo_timer false;
var 
rr_obj_check_timer false;
var 
rr_obj_check_timer_value 5000//--- таймаут проверки икара в мс, работает он или нет
var rr_getinfo_timer_value 500//--- таймаут опроса икара в мс

rr_check();

//--- ниже в rr_get_info() задаем свои команды которые будем отправлять из икара
//--- case ' тут пишем команду ':
//--- тут что то делаем при получении команды
//--- break;
function rr_get_info() {
    try { 
//--- обработчик ошибок зацикленной схемой проверки на работающий икар
        
rr_get_ret rr.getinfo("=$SENDFB2K$");
    } catch (
e) {
        
rr_get_ret '0';
        
tt('>>> iCarDS GetInfo "SENDFB2K" Error...');
        
rr_getinfo_timer false && rr_getinfo_timer.Dispose();
        
rr undefined;
        
rr_obj_check_timer window.CreateTimerInterval(rr_obj_check_timer_value);
    };
    switch (
rr_get_ret) {
    
//switch (rr.getinfo("=$SENDFB2K$")) { //--- вариант без обработчика ошибок
    
case 'nexttrack':
        
rr.execute("SETVAR;SENDFB2K;0");
        
fb.Next();
        break;
    case 
'prevtrack':
        
rr.execute("SETVAR;SENDFB2K;0");
        
fb.Prev();
        break;
    case 
'playorpause':
        
rr.execute("SETVAR;SENDFB2K;0");
        
fb.PlayOrPause();
        break;
    case 
'shuffle':
        
rr.execute("SETVAR;SENDFB2K;0");
        
fb.PlaybackOrder 4;
        break;
    case 
'default':
        
rr.execute("SETVAR;SENDFB2K;0");
        
fb.PlaybackOrder 0;
        break;
    case 
'random':
        
rr.execute("SETVAR;SENDFB2K;0");
        
fb.PlaybackOrder 3;
        break;
    case 
'test'//вместо "test" прописываем нужное значение/команду идущую из икара
        
rr.execute("SETVAR;SENDFB2K;0"); //обнуляем принятое значение или отправляем что то в икар
        // тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    case 
'':
        
rr.execute("SETVAR;SENDFB2K;0");
        
// тут делаем что то
        
break;
    };
};
//----------------------------------------------------------- rr get info end
function rr_check() {
    if (
icar_check()) {
        
rr_obj_check_timer false && rr_obj_check_timer.Dispose();
        
rr = new ActiveXObject("RideRunner.sdk");
        
is_rr_on true;
    } else {
        
is_rr_on false;
        
rr undefined;
        
rr_obj_check_timer window.CreateTimerInterval(rr_obj_check_timer_value);
    };
    
is_rr_on rr_getinfo_timer window.CreateTimerInterval(rr_getinfo_timer_value) : rr_getinfo_timer false && rr_getinfo_timer.Dispose();
};

function 
icar_check() {
    var 
ret_check "";
    
ret_check autoit_obj.ProcessExists("iCarDS.exe");
    if (
ret_check == 0) {
        
tt('>>> iCarDS not running...');
        return 
false;
    } else {
        return 
true;
    };
};

function 
on_timer(id) {
    if (
rr_getinfo_timer && id == rr_getinfo_timer.ID) {
        
rr_get_info();
    };
    if (
rr_obj_check_timer && id == rr_obj_check_timer.ID) {
        
rr_check();
    };
};

function 
tt(t) {
    
fb.trace(t);
}; 
- Поправил немного скрипт, добавил цикличный обработчик ошибок, т.е. теперь скрипт падать не будет, а будет ждать пока появится икар.

Видео по работе снимать не стал, разобраться не сложно... но если нужно сниму

Теперь не обязательно использовать фубар с командной строкой, команды приходящие из икара обрабатываются почти сразу фубаром, да и использовать так проще и выбор того что можно делать больше

Последний раз редактировалось duzzy; 19.05.2018 в 01:04.
duzzy вне форума   Ответить с цитированием
Старый 19.05.2018, 14:29   #3402
seriousstas
Бывалый писикарщик
 
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
seriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant future
По умолчанию

Слава - хорошая альтернатива!
НО!
Цитата:
Теперь не обязательно использовать фубар с командной строкой
Давай вместо видео - живой пример)
Я пока так делаю - при помощи :
C:\XXX\YYY\Documents\iCarDS\skins\Chameleon\Script s\SendKey.exe
(один из вариантов использования) :
1. При запуске скрипта есть контроль раскладки (всегда английская! для отправки анг буквенных символов)
2. Скажем - отправляю повороты колеса (+2) над стрелочниками:
Код:
B,770,518,126,80,"RUNW;$SKINPATH$\Scripts\sendkey.exe|"[CLASS:{E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}]" "Analog VU Meter" "" "+2"
,
как это сделать через AutoItX3.dll?
Цитата:
500
- это опрос в цикле ..
Когда отправляем разово - цикла ведь нет ?
Ну скажем :
RUN;$foobar_exe$|/command:"repeat (track)" - стучим и получаем мгновенно ответ , а не через пол секунды - разве нет ?
Так-же и через sendkey - запуск > ответ.
Я просто пока не вижу преимуществ

Последний раз редактировалось seriousstas; 19.05.2018 в 16:11.
seriousstas вне форума   Ответить с цитированием
Старый 19.05.2018, 17:54   #3403
duzzy
Гуру
 
Регистрация: 01.06.2013
Регион: 78, 98
Машина: SUBARU Impreza WRX
Сообщений: 1,766
duzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond repute
По умолчанию

seriousstas

Цитата:
Давай вместо видео - живой пример)
Хорошо ))
Цитата:
При запуске скрипта есть контроль раскладки (всегда английская! для отправки анг буквенных символов)
Вот тут не понял для чего это и зачем.

Цитата:
Скажем - отправляю повороты колеса (+2) над стрелочниками
Стрелочниками не пользуюсь, но по сути должно работать, либо можно просто запустить скрипт при отправке команды который выполнит поворот колеса мыши.

Пример:
autoit_obj.ControlFocus(foobar_class, "", pl_class);
autoit_obj.ControlSend(foobar_class, "", pl_class, "{F3}");

Цитата:
- это опрос в цикле ..
Когда отправляем разово - цикла ведь нет ?
...
Я просто пока не вижу преимуществ
Это легко сравнить просто попробовав
Да это опрос в цикле одной переменной которая принимает разные значения.

Да когда отправляем разово цикла нет, НО при этом нужно:
1.выполнить команду
2.запустить ехе-шник(а это как правило скрипт автоит, который обрабатывается при его старте)
а это тоже время и ресурсы.

Ты также запускаешь копию фубара с командой и на это так же тратится время, так как запускается еще одна копия которая отрабатывает ком строку.

Время цикла можно уменьшить и до 300 или 100 мс, это опрос всего лишь одной переменной в икаре, на производительность это почти не влияет.
Могу даже больше сказать, многие варианты обработчиков работают так, только опросчик работает в другом потоке с очень короткой задержкой, это самый простой вариант опроса не используя сложные методы.
По такому же принципу собрал себе плагин для пот-плеера(он кривой косой но работает)
Единственное отличие этого опросчика в JS что он работает в главном потоке.

В этой схеме удобство еще в одном, тебе не нужно писать скрипты в икаре, нужно лишь отправить одну команду для приема фубаром т.е. js-ом а он ее уже обработает как необходимо. Это универсальная схема которая позволяет делать ну почти все в сборке... например: показывать/прятать панели, работать с плейлистами, менять порядок проигрывания, громкость, переключать ДСП, включать опции в панелях, запускать собственные кастомные функции... и т.д. т.е можно использовать почти все возможности js.
А ком строка фубара это может ?... я очень сильно сомневаюсь
Видос я запишу чуть позже будет просто более наглядно как оно работает.

Это не замена всего что можно, это просто еще один вариант использования js
duzzy вне форума   Ответить с цитированием
Старый 19.05.2018, 18:06   #3404
seriousstas
Бывалый писикарщик
 
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
seriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant future
По умолчанию

Цитата:
либо можно просто запустить скрипт при отправке команды который выполнит поворот колеса мыши.
Ну это перебор ))

Этот скрипт , что выше - отдельный или вставляется скажем в MPS ?

Цитата:
При запуске скрипта есть контроль раскладки (всегда английская! для отправки анг буквенных символов)
Вот тут не понял для чего это и зачем.
Если отправляю скажем букву Q или комбинацию например CTRL+Q - то не работает при вкл русской раскладке (скрипт задает принудительно Eng) ..
seriousstas вне форума   Ответить с цитированием
Старый 19.05.2018, 18:24   #3405
seriousstas
Бывалый писикарщик
 
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
seriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant future
По умолчанию

Цитата:
запустить ехе-шник(а это как правило скрипт автоит, который обрабатывается при его старте)
Кстати сравниваю в виртуалке под 7-X86
Запуски AutoHotkey и Autoit
Получаю мгновенный запуск AutoHotkey-я и думающий где-то 300-500мс Autoit
seriousstas вне форума   Ответить с цитированием
Старый 19.05.2018, 18:33   #3406
duzzy
Гуру
 
Регистрация: 01.06.2013
Регион: 78, 98
Машина: SUBARU Impreza WRX
Сообщений: 1,766
duzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond repute
По умолчанию

seriousstas
Это как вариант, разнообразного использования

Цитата:
Этот скрипт , что выше - отдельный или вставляется скажем в MPS ?
Это самостоятельный скрипт, но может быть использован и в основном мпс скрипте.
Только нужно добавить в on_timer()
if (rr_getinfo_timer && id == rr_getinfo_timer.ID) {...}
if (rr_obj_check_timer && id == rr_obj_check_timer.ID) {...}
и проверить переменные чтоб не совпадали.

Можно и отдельную панель сунуть просто ее спрятав

Цитата:
Если отправляю скажем букву Q или комбинацию например CTRL+Q
Ааа теперь понял для чего... Спасибо не знал что есть такая засада .
duzzy вне форума   Ответить с цитированием
Старый 19.05.2018, 18:39   #3407
duzzy
Гуру
 
Регистрация: 01.06.2013
Регион: 78, 98
Машина: SUBARU Impreza WRX
Сообщений: 1,766
duzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от seriousstas Посмотреть сообщение
Кстати сравниваю в виртуалке под 7-X86
Запуски AutoHotkey и Autoit
Получаю мгновенный запуск AutoHotkey-я и думающий где-то 300-500мс Autoit
Вот о чем я говорил, автохоткей вроде не так пакуется а автоит можно жестко упаковать и старт будет еще дольше.
Не помню точно схему но суть в том что при запуске сначала распаковывается скрипт затем он попадает в обработчик ну и мы видим запуск. По сути как js построчное чтение и выполнение кода.
duzzy вне форума   Ответить с цитированием
Старый 19.05.2018, 18:43   #3408
seriousstas
Бывалый писикарщик
 
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
seriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant future
По умолчанию

Цитата:
Сообщение от duzzy Посмотреть сообщение
Вот о чем я говорил, автохоткей вроде не так пакуется а автоит можно жестко упаковать и старт будет еще дольше.
Не помню точно схему но суть в том что при запуске сначала распаковывается скрипт затем он попадает в обработчик ну и мы видим запуск. По сути как js построчное чтение и выполнение кода.
Если компилировать по ПКМ - то сжатия почти нет ..
Понял, что сжатие - не влияет ..
Тут да - разные методы походу.. Но уже в 8.1-ке и 10ке любые скрипты работают быстро..
seriousstas вне форума   Ответить с цитированием
Старый 19.05.2018, 19:01   #3409
duzzy
Гуру
 
Регистрация: 01.06.2013
Регион: 78, 98
Машина: SUBARU Impreza WRX
Сообщений: 1,766
duzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond reputeduzzy has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от seriousstas Посмотреть сообщение
Если комтилировать по ПКМ - то сжатия почти нет ..
Понял, что сжатие - не влияет ..
Тут да - разные методы походу.. Но уже в 8.1-ке и 10ке любые скрипты работают быстро..
Сжатие влияет, это так же как и с архивами, сожми сильно и распаковывать будешь дольше, сожми меньше и распакуешь быстро, просто это не так видно из за быстроты обработки.
Скорее всего да разные методы, а виртуалка позволяет увидеть многое что невидно на живой системе.

Сейчас видос отсниму по обработчику js глянешь как это хозяйство работает
У меня эта идея давно в моем воспаленном мозге роилась, но использование сборки с интерфейсом мне более по душе.
duzzy вне форума   Ответить с цитированием
Старый 19.05.2018, 19:07   #3410
seriousstas
Бывалый писикарщик
 
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
seriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant future
По умолчанию

Цитата:
но использование сборки с интерфейсом мне более по душе.
Икаровские кнопки оч удобны для 6-7-8 дюймовок .. Мне нравится и размер и отклик..
Это словами сложно пояснить))
seriousstas вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 10 (пользователей: 0 , гостей: 10)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



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


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