эмулятор ds1990 (библиотека OneWireHub)

chibaks
Offline
Зарегистрирован: 01.10.2018
всем привет,
подскажите пожалуйста как сделать чтобы можно было менять S/N датчика DS1990 в основном цикле LOOP ?
 
как сделать чтобы можно было изменять значение как в массиве например  ds1990A[0] = 0x03; или как-то по другому.
 

библиотека здесь

https://github.com/orgua/OneWireHub/blob/master/src/OneWireHub.h

https://github.com/orgua/OneWireHub/blob/master/src/DS2401.h

#include "OneWireHub.h"
#include "DS2401.h"  // Serial Number

OneWireHub hub = OneWireHub(2); 
auto ds1990A = DS2401( 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55 );

void setup(){
    hub.attach(ds1990A); // always online
}

void loop(){
    hub.poll();
        static bool flipFlop = 0;
        if (flipFlop){
            flipFlop = 0;
            hub.detach(ds1990A);
        }
        else{
            flipFlop = 1;
            hub.attach(ds1990A);
        }
}

 

 

chibaks
Offline
Зарегистрирован: 01.10.2018

может кто подсказать?

b707
Offline
Зарегистрирован: 26.05.2017

никак, библиотека не предусматривает изменения ID. Оно и понятно, у фирменных датчиков ID поменять нельзя.

Либо убиваете один инстанс датчика и создаете новый. с нужным ID, либо переписываете библиотеку.

chibaks
Offline
Зарегистрирован: 01.10.2018

то есть нужно переписать библиотеку так, чтобы S/N сохранялся в массиве ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

chibaks пишет:
например  ds1990A[0] = 0x03; 

Не очень ясно зачем, но если так уж надо, меняйте

ds1990A.ID[0] = 0x03;

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

ds1990A.ID[7] = OneWireItem::crc8(ds1990A.ID, 7);

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

никак, библиотека не предусматривает изменения ID. 

Почему? Он там public - меняй на здоровье. Неясно только нафига.

b707
Offline
Зарегистрирован: 26.05.2017

chibaks пишет:

то есть нужно переписать библиотеку так, чтобы S/N сохранялся в массиве ?

Нет, чтобы изменить ID в коде - нужно добавить в класс OneWireItem метод изменения ID. Но кроме изменения ID в программе нужно уметь менять ID в железе - а с этим у вас будут огромные проблемы, поскольку у большинства датчиков ID жестко зашит и менять его нельзя.

И я не понимаю, зачем это может понадобится...  Если же вы таким образом собрались перекодировать домофонные ключи типа DS1990 - вы ошиблись, эта библиотека совершенно не для этого.

b707
Offline
Зарегистрирован: 26.05.2017

ЕвгенийП пишет:

Почему? Он там public - меняй на здоровье. Неясно только нафига.

а, ну да :)

chibaks
Offline
Зарегистрирован: 01.10.2018

b707 пишет:

chibaks пишет:

то есть нужно переписать библиотеку так, чтобы S/N сохранялся в массиве ?

И я не понимаю, зачем это может понадобится...  Если же вы таким образом собрались перекодировать домофонные ключи типа DS1990 - вы ошиблись, эта библиотека совершенно не для этого.

есть некоторое устройство, которое может передавать s/n ds1990 на сервер. я хочу эмулировать датчик, и вместо s/n передавить нужную мне информацию.