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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   АвтоЗвук (http://pccar.ru/forumdisplay.php?f=16)
-   -   сборка/тема foobar 2000 для CarPС (http://pccar.ru/showthread.php?t=19671)

Евген_21 15.06.2018 23:37

Стас, курим вдвоем.
Цитата:

Я с Вами, я же болен на всю голову)) И я рад что мы вместе, когда мы вместе мы можем.... ну почти все))
Блин, я как ребенок радуюсь.... Спасибо.....Точно вместе мы сила!
Завтрашнего дня погружаюсь в тему. Пошел спать. Время 3.37.

duzzy 16.06.2018 00:06

Евген_21

Пожалуйста :) Конечно когда вместе мы Силища :wink2:
Это конечно не ах ох но работает как должно, в видосе это наглядно видно.
В архиве должно быть все что нужно для икара, но я мог конечно что то забыть))
Для МПС код простой, если будет не понятно пишите.

И да добавил экраны для смены разрешений, переход из родного функционала.

Скачать тут

seriousstas 16.06.2018 02:41

Евген_21
Цитата:

Стас, курим вдвоем.
Покурил сигару))
Я сейчас залез в DSP и Оutput Device - последний "подарок" от Марка.
Нужно день - два на допил. Покажу , что получилось, на мой взгляд - норм.
Далее - свободен..
duzzy кстати Оutput Device а именно fb.GetOutputDevices(); работал уже с версии 2.1.3 ) ,

DSP попросило обнову.

duzzy 16.06.2018 16:19

seriousstas

Цитата:

fb.GetOutputDevices(); работал уже с версии 1.3 )
О спасибо :) не знал, добавлю себе в сборку на 1.3, жаль что ДСП только для 1.4.

И я наконец вспомнил почему так не люблю пропихивать команды через запуск ехе-ки... как с фубаром.
Пример: если достаточно часто нажимать след.трек будут пропуски(когда плагин тестировал ловил кучу раз).
Так что я буду переходить на систему опроса переменных, как предлагал ранее.
Инфу отправлять и получать придется как не крути...

____________________________________________

Евген_21

Вот готовый вариант опроса икара с проверкой на работающий икар...
Можно прописать в любом месте любого МПС скрипта.
Для полноценной работы нужна библиотечка автоита, ее нужно положить в папку assemblies основной папки сборки... вот так...
http://jpegshare.net/thumbs/da/99/da...9788f1076f.jpg
Немного расписал где что и как))
//====================================
Свой код пописывать межу этих указателей...
//====================================
PHP код:

//--- get send info/commands 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 1000//--- таймаут опроса переменных икара в мс
var track_pos "";

rr_check(); //--- запуск проверки икара и создание объекта


//--- ниже в rr_get_send_info() прописываем то что будем получать/отправлять из икара
function rr_get_send_info() {
    try {
        
//=================================================================================
        //--- try{...} обработчик ошибок с зацикленной схемой проверки на работающий икар
        //--- прописываем тут то что нужно получать отправлять в/из икар/а
        //--- и выполняем какие то действия при получении нужной инфы

        
if (rr.getinfo("=$icar_slider_pos_set$") == 'true') { //--- если icar_slider_pos_set = true выполняем далее
            
rr.execute("setvar;icar_slider_pos_set;false"); //--- обнуляем переменную icar_slider_pos_set в false
            
track_pos rr.getinfo("=$icar_slider_pos$"); //--- берем значение переменной icar_slider_pos которая содержит время перехода трека
            
fb.PlaybackTime track_pos//--- выставляем время трека в соответствии с положением слайдера икара
        
};
        
//=================================================================================
    
} catch (e) {
        
//--- catch(e){...} при получении ошибки она обрабатывается тут

        
tt('>>> iCarDS GetSendInfo() Error...'); //--- выводим сообщение об ошибке в консоль фубара
        
rr_getinfo_timer false && rr_getinfo_timer.Dispose(); //--- гасим таймер
        
rr undefined;
        
rr_obj_check_timer window.CreateTimerInterval(rr_obj_check_timer_value); //--- запускаем таймер проверки процесса icards.exe

    
};
};
//-------------------------------------------------------------------------------------
//--- далее можно ничего не трогать, тут расположены функции проверки и старта таймеров
//-------------------------------------------------------------------------------------
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;
    };
};
//--- если в скрипте уже есть функция on_timer(id)
//--- нужно просто перенести условия( if(...){...} ) в свою функцию из этого скрипта
function on_timer(id) {
    if (
rr_getinfo_timer && id == rr_getinfo_timer.ID) {
        
rr_get_send_info();
    };
    if (
rr_obj_check_timer && id == rr_obj_check_timer.ID) {
        
rr_check();
    };
};

function 
tt(t) {
    
fb.trace(t);
}; 


seriousstas 16.06.2018 16:43

Цитата:

добавлю себе в сборку на 1.3
duzzy не то пишу) , уточнил..
Имею ввиду прошлую версию панели марка v2.1.3

seriousstas 18.06.2018 11:50

duzzy
Слайдер работает!, можно как-то отвязать от плагина (регистраций) ?
Я ведь запихал "шкурку" в установщик ..
И кажется Ты кидал настройки опроса переменной .. чтоб реакция была быстрее на касание.

duzzy 18.06.2018 16:03

seriousstas

Цитата:

Имею ввиду прошлую версию панели марка v2.1.3
Аааа, понял))... а то я вроде проверял не работает, думал может что не так делал))

Цитата:

Слайдер работает!
Это хорошо :beer:

Цитата:

можно как-то отвязать от плагина (регистраций) ?
Нет конечно, это же внутренний механизм...
Его можно регистрировать без окон в тихом режиме(regsvr32 /s либа.dll).
Вернее так, слайдер сделать можно, точнее просто полоску отображения время трека но управлять ты ей не сможешь.
Цитата:

И кажется Ты кидал настройки опроса переменной .. чтоб реакция была быстрее на касание.
Чуть выше тот же механизм, только он немного упрощен в плане схемы опроса... т.е. готово для слайдера.
Механизм зацикленный, при таком варианте не важно используется икар или нет, код сделает все сам, а при ошибках будет писать в консоль.
Эта переменная отвечает за частоту опроса --- rr_getinfo_timer_value = 1000; в мс., сейчас один раз в секунду, но на практике будет достаточно 300 мс. можно и меньше если система позволяет.

Можно попробовать в опрос сунуть отправку из function on_playback_time(time)
PHP код:

str fb.TitleFormat("[%playback_time%][ / -%playback_time_remaining%]").Eval().split('/'); 
//--- send time to icar 
rr.execute("setvar;foobar_playback_time;" time "||setvar;foobar_playback_time_length;" Math.ceil(fb.PlaybackLength) + "||setvar;foobar_pb_time;" str[0] + "||setvar;foobar_pb_time_remaining;" + (str[1] == undefined 'Radio' str[1])); 

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

Единственное не до конца понял вот с этим моментом "...чтоб реакция была быстрее на касание..."
Ты имеешь в виду какую реакцию ? ...переход по времени трека или графический ответ...
Просто у меня реакция почти моментальная на временной переход, на видео слышно хорошо спецом со звуком симал :), а вот графический ответ идет немного с задержкой. Видимо слайдеры в икаре/rr опрашиваются один раз в секунду.
Нет нормального описания как работают функции в примере плагина, там только очень упрощенные примеры коих не достаточно для понимания как все это хозяйство работает.

seriousstas 18.06.2018 16:09

duzzy
Цитата:

Единственное не до конца понял вот с этим моментом "...чтоб реакция была быстрее на касание..."
Спали все - тестил без звука))
Цитата:

а вот графический ответ идет немного с задержкой. Видимо слайдеры в икаре/rr опрашиваются один раз в секунду.
Скорей всего - тут есть дискомфорт..
Цитата:

Вернее так, слайдер сделать можно, точнее просто полоску отображения время трека но управлять ты ей не сможешь.
Женя такой сделал , он работал.
Цитата:

Нет нормального описания как работают функции в примере плагина, там только очень упрощенные примеры коих не достаточно для понимания как все это хозяйство работает.
Я понял - снова методом "проб и ошибок")

duzzy 18.06.2018 16:16

seriousstas

Попробуй в опросник)) закинуть функционал из function on_playback_time(time), в JS эта функция отрабатывает каждую секунду, я просто сюда сунул для того чтоб разнести нагрузку на разные функции.
Теоретически должно работать быстрее... я не прав, графика опаздывает из за долгого получения времени от фубара... секунда это очень много.
...
Я уже попробовал))... все так же))) можно оставить в on_playback_time...

seriousstas 18.06.2018 16:18

Цитата:

графика опаздывает из за долгого получения времени от фубара... секунда это очень много.
Если смотря на его (Евген_21) икаровский слайдер надстройку и крутить слайдер Фубара, то графическая реакция примерно 300мс +-
А если смотреть на Твой , то после касания визуальный ответ около секунды.
Вобщем , если будет возможность хоть немного ускорить - было-бы супер., а пока итак отлично!)


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

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