Mam kilka expanderów PCF8574 podłączonych do wspólnej szyny. Do ich obsługi używam biblioteki pcf8574esp.h, niestety używam jej trochę w ciemno i może stąd problemy. Dla każdego układów mogę sobie zdefiniować klasę (przykład niemal żywcem z dołączonego do biblioteki programu instruktażowego):
PCF8574 device01(0x20, &testWire);
U mnie jednak tych układów będzie osiem, w dodatku ich ilość niekoniecznie ma być stała (chcę napisać program, który automatycznie wykryje ilość dołączonych modułów i się dostosuje do zastanej sytuacji). Oczywiście mogę zdefiniować osiem klas i ich użycie uzależnić od tego, czy układy istnieją fizycznie, ale taki sposób pisania kodu woła o pomstę do nieba.
Zatem pytanie: czy da się stworzyć tablicę klas? Coś w stylu jak niżej?
@Jarek_P: Jakoś nie wyobrażam sobie softu na takie coś. Wydaje mi się, że próbujesz zrobić coś na zapas ale zupełnie bez sensu. Ofc, możesz zrobić tablicę klas. Możesz zrobić klasę driver pcf, która sprawdzi dostępne adresy i wynotuje na którym jest urządzenie. Klasa będzie takim pomostem między logiką programu a konkretnym driverem ale ukryje ich ilość w zamian za udostępnienie ich adresów. API to twoja sprawa.
@Analityk: To co chcę zrobić jest całkiem realne i bynajmniej nie na zapas, a stablicowanie tych PCFów da mi komfort ich późniejszej obsługi dzięki odwołaniu do numeru urządzenia i numeru portu na urządzeniu. Póki co mam tablicę, w której są adresy kolejnych urządzeń wpisywane w trakcie skanowania interfejsu, można jej kolejne pola traktować jako indeksy.
@Jarek_P: Skanowanie urządzeń na I2C jest nieźle opanowane w easyesp. Zawsze poprawnie wykrywa po włączeniu esp. Może tam podejrzysz jak to zrobili, nawet mają guzik w interface do zrobienia rescan i wyszukuje co jest na szynie. http://www.letscontrolit.com/wiki/index.php/PCF8574
Mam kilka expanderów PCF8574 podłączonych do wspólnej szyny. Do ich obsługi używam biblioteki pcf8574esp.h, niestety używam jej trochę w ciemno i może stąd problemy.
Dla każdego układów mogę sobie zdefiniować klasę (przykład niemal żywcem z dołączonego do biblioteki programu instruktażowego):
PCF8574 device01(0x20, &testWire);
U mnie jednak tych układów będzie osiem, w dodatku ich ilość niekoniecznie ma być stała (chcę napisać program, który automatycznie wykryje ilość dołączonych modułów i się dostosuje do zastanej sytuacji). Oczywiście mogę zdefiniować osiem klas i ich użycie uzależnić od tego, czy układy istnieją fizycznie, ale taki sposób pisania kodu woła o pomstę do nieba.
Zatem pytanie: czy da się stworzyć tablicę klas? Coś w stylu jak niżej?
PCF8574 device8;_
Ofc, możesz zrobić tablicę klas.
Możesz zrobić klasę driver pcf, która sprawdzi dostępne adresy i wynotuje na którym jest urządzenie. Klasa będzie takim pomostem między logiką programu a konkretnym driverem ale ukryje ich ilość w zamian za udostępnienie ich adresów. API to twoja sprawa.
Może tam podejrzysz jak to zrobili, nawet mają guzik w interface do zrobienia rescan i wyszukuje co jest na szynie.
http://www.letscontrolit.com/wiki/index.php/PCF8574