You can edit almost every page by Creating an account. Otherwise, see the FAQ.

1-Wire API for Java Software Development Kit

Z EverybodyWiki Bios & Wiki
Skocz do:nawigacja, szukaj

1-Wire API for Java Software Development Kit (w skrócie OWAPI lub 1-Wire API SDK) – pakiet klas i interfejsów napisanych w języku Java składających się na całokształt abstrakcyjnej, niezależnej od środowiska uruchomieniowego, wysokopoziomowej warstwy dostępu do sieci 1-Wire, rozpowszechniany na zasadach licencji MIT.

Architektura[edytuj]

Z klas składających się na całość pakietu OWAPI, poza wieloma pomocniczymi, wyróżniają się dwie specjalne:

  • abstrakcyjna klasa adaptera 1-Wire – DSPortAdapeter,
  • abstrakcyjna klasa kontenera 1-Wire – OneWireContainer.

Adapter 1-Wire[edytuj]

Każda z instancji klas jednego z adapterów 1-Wire stanowi abstrakcyjny obiekt fizycznego urządzenia podłączonego do jednego z portów komputera hosta (RS232, LPT lub USB), które stanowi pomost pomiędzy środowiskiem wykonawczym a strukturą sieci 1-Wire. W skład realizowanych przez nią metod wchodzą te realizujące komunikację niskopoziomową (zapis oraz odczyt bitu lub bajtu na magistralę 1-Wire), oraz te wysokopoziomowe, jak np. przeszukiwanie magistrali 1-Wire pod kątem odnalezienia układów spełniających zadany warunek.

W zależności od platformy, różne są też sterowniki, z których korzysta OWAPI do komunikacji z adapterem.

Istnieją cztery podstawowe modele adapterów 1-Wire:

  • DS9097E - podłączany do portu RS-232,
  • DS1410E - podłączany do portu LPT,
  • DS9097U - podłączany do portu RS-232,
  • DS9490 - podłączany do USB.

Każdy z nich jednak realizuje tą samą funkcjonalność i ich wymiana nie ma żadnego wpływu na implementację.

Poniższy kod przeszukuje wszystkie porty USB od numeru 0 do 30, a następnie tworzy i zwraca obiekt adaptera 1-Wire dla pierwszego portu, na którym został on wykryty.

DSPortAdapter adapter = null;
for(int i = 0; i < 30; i++) {
    try {
        adapter = OneWireAccessProvider.getAdapter("{DS9490}", "USB" + i);
        if(adapter != null) {
            return adapter;
        }
    } catch(OneWireException e) {
        // ignoruj blad podczas przeszukiwania
    }
}

Kontener 1-Wire[edytuj]

Kontener 1-Wire jest drugą z klas specjalnych współistniejąca w pakiecie OWAPI. Wszystkie instancje klas z niej dziedziczących, reprezentują fizyczne układy podłączone do magistrali 1-Wire. Według aktualnej dokumentacji technicznej jest ich 34[1].

Obiekty abstrakcyjnej klasy kontenera 1-Wire same w sobie nie posiadają żadnej szczególnej funkcjonalności, lecz grupują wspólne dla wszystkich układów 1-Wire metody i pozwalają między innymi na:

  • sprawdzenie czy element jest w danym momencie podłączony do sieci 1-Wire,
  • sprawdzenie czy element jest w stanie alarmu,
  • ustawienie na magistrali najlepszej dla układu prędkości komunikacji,
  • odczytanie banków pamięci układu (o ile takie w danym układzie są dostępne).

Każda z podklas kontenera jest bardziej wyspecjalizowana i odpowiada tylko jednemu typowi układu, który jest rozpoznawany po tzw. kodzie rodziny (ang. family code), który jest zapisany w ostatnim bajcie adresu każdego z układów. Oczywiście w każdej z rodzin mogą istnieć różne wariacje pojedynczego układu, który de facto spełnia tą samą funkcjonalność, lecz w różnych wariantach sprzętowych (np. ekonomicznym lub full service).

Przykładowo klasa kontenera układu do pomiaru temperatury posiada wyspecjalizowane metody służące tylko i wyłącznie do konwersji i odczytu temperatury, podobnie jak inne klasy kontenerów (np. układu do pomiaru wilgotności lub napięcia).

Poniższy kod ilustruje odczyt banków pamięci dowolnego układu 1-Wire.

MemoryBank bank;
Enumeration banks = owd.getMemoryBanks();
while (banks.hasMoreElements()) {
    bank = (MemoryBank) banks.nextElement();
    // czy bank jest Paged Memory
    if (bank instanceof PagedMemoryBank) {
        PagedMemoryBank pagedMemory = (PagedMemoryBank) bank;
        // ...
    }
    // czy bank jest One-Time-Programable
    if (bank instanceof OTPMemoryBank) {
        OTPMemoryBank oneTimeProg = (OTPMemoryBank) mb;
        // ...
    }
}

Przypisy[edytuj]

Bibliografia[edytuj]

Linki zewnętrzne[edytuj]


This article "1-Wire API for Java Software Development Kit" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:1-Wire API for Java Software Development Kit.



Read or create/edit this page in another language[edytuj]