1

Js Получить время стоянки, время с последнего сообщения

Topic: Js Получить время стоянки, время с последнего сообщения

Есть ли простой способ получения времени стоянки/времени движения/время "потери связи"

как я понял есть чудесная штука unit.getMessageParams() вернет что-то типа speed.ct.
Но мне возвращает null.

Подскажите как правильно использовать?

2

Js Получить время стоянки, время с последнего сообщения

Re: Js Получить время стоянки, время с последнего сообщения

Попробуйте при получении объекта указать флаг 0x00100000 и после этого unit.getMessageParams()

3

Js Получить время стоянки, время с последнего сообщения

(edited by Flatter 16/07/2014 10:06:07)

Re: Js Получить время стоянки, время с последнего сообщения

Похоже я логику виалона не могу понять, в данном примере при получении события от листенера как это сделать?

function redrawUnit(e) {
    var unit = e.getTarget();    
    var type = e.getType();

        console.log(unit.getMessageParams());

}

function showUnits() {
    // get units
    var units = wialon.core.Session.getInstance().getItems("avl_unit");        
    if (!units || !units.length)
        return;
    // populate table
    for(var i in units) {    
        var unit = units[i];
        addUnitRow(unit);        
        // if map available - add to map
        if(map)
            createUnitMarker(unit);
        // listen unit event
        addUnitListener(unit);
    }
    
    // center unit on map
    jQuery("a.row-name").click(function(e) {
        var id = e.currentTarget.id.substr(10);        
        goToMarker(id);
    });
}

function addUnitListener(unit) {
    if(typeof listeners[unit.getId()] == "undefined") {
        // change name
        unit.addListener("changeName", redrawUnit, this);            
        // change position
        unit.addListener("changePosition", redrawUnit, this);
        // change last message
        unit.addListener("changeLastMessage", redrawUnit, this);    
        listeners[unit.getId()] = true;    
    }
}

wialon.core.Session.loadLibrary(String libName) имеет отношение к флагам?

4

Js Получить время стоянки, время с последнего сообщения

Re: Js Получить время стоянки, время с последнего сообщения

Flatter wrote:

Похоже я логику виалона не могу понять, в данном примере при получении события от листенера как это сделать?

Приведите фрагмент кода с вызовом wialon.core.Session.updateDataFlags или код страницы целиком, например, на https://gist.github.com/

Flatter wrote:

wialon.core.Session.loadLibrary(String libName) имеет отношение к флагам?

Флаги (dataFlags) указывают какая информация будет запрошена/придёт с сервера (например, указав 0x1000 для объекта можно получить информацию о датчиках)

Для работы с этой информацией на JS нужны дополнительные методы, которые изначально отсутствуют в wialon.item.Unit. Для их добавления используется wialon.core.Session.loadLibrary("unitSensors"), вследствие чего в wialon.item.Unit добавляются методы из wialon.item.MUnitSensor

5

Js Получить время стоянки, время с последнего сообщения

Re: Js Получить время стоянки, время с последнего сообщения

Это из виалон кит http://one.wialon.com/dl/one.zip

https://gist.github.com/anonymous/4fb4a550a2acd8091d87

function initEnv() {    
    // load library for working with unit icons
    wialon.core.Session.getInstance().loadLibrary("itemIcon");
    
    // init wialon event system
    var spec = [{type: "type", 
                data: "avl_unit", 
                flags: wialon.item.Item.dataFlag.base|wialon.item.Unit.dataFlag.lastMessage|wialon.item.Item.dataFlag.image, 
                mode: 0}];    
    wialon.core.Session.getInstance().updateDataFlags(spec, function(code) {
        if(code) {
            alert("updateDataFlags error: ["+ code +"] " + wialon.core.Errors.getErrorText(code));
            return;
        }
6

Js Получить время стоянки, время с последнего сообщения

Re: Js Получить время стоянки, время с последнего сообщения

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

flags: wialon.item.Item.dataFlag.base|wialon.item.Unit.dataFlag.lastMessage|wialon.item.Item.dataFlag.image|0x00100000, 

вот так работает!
Спасибо!

7

Js Получить время стоянки, время с последнего сообщения

(edited by Flatter 16/07/2014 11:15:16)

Re: Js Получить время стоянки, время с последнего сообщения

Еще в догонку

speed.at - Начало движения
speed.ct - Конец движения

Или все сложнее?

8

Js Получить время стоянки, время с последнего сообщения

Re: Js Получить время стоянки, время с последнего сообщения

Для соблюдения стилистики лучше написать так

flags: wialon.item.Item.dataFlag.base|wialon.item.Unit.dataFlag.lastMessage|wialon.item.Item.dataFlag.image|wialon.item.Unit.dataFlag.messageParams, 
Flatter wrote:

вот так работает!
Спасибо!

Пожалуйста wink

9

Js Получить время стоянки, время с последнего сообщения

Re: Js Получить время стоянки, время с последнего сообщения

Flatter wrote:

догонку
speed.at - Начало движения
speed.ct - Конец движения
Или все сложнее?

Описание можно посмотреть в документации

{
    "prms":{    /* список параметров сообщений */
        <text>:{    /* имя параметра */
            "v":<any>,    /*значение параметра */
            "ct":<uint>,    /* время последнего изменения значения */
            "at":<uint>    /* время последнего сообщения, содержащего данный параметр */
        },
        ...
    }
}
10

Js Получить время стоянки, время с последнего сообщения

Re: Js Получить время стоянки, время с последнего сообщения

shmi
Время последнего изменения это с 0 на любое число или с любого числа на любое число? Будет ли являться ct началом / концом движения.

11

Js Получить время стоянки, время с последнего сообщения

Re: Js Получить время стоянки, время с последнего сообщения

Flatter wrote:

Время последнего изменения это с 0 на любое число или с любого числа на любое число?

Изменение с любого числа на любое число.

Flatter wrote:

Будет ли являться ct началом / концом движения.

Если speed.v == 0, то можно считать, что объект не двигается начиная с времени speed.ct (последнее изменение скорости было на нулевое значение). Для полноты картины можно проверить, что speed.at > speed.ct (после изменения скорости на 0 были и другие сообщения с параметром speed, но значение не изменялось, т.е оставалось нулевым)

Если speed.v != 0, то ничего конкретного, кроме как "в max(speed.at, speed.ct) объект двигался", утверждать нельзя

12

Js Получить время стоянки, время с последнего сообщения

Re: Js Получить время стоянки, время с последнего сообщения

Спасибо!