Skip to content

Spinel: Ostatní instrukce

papouch.com edited this page Jun 15, 2018 · 9 revisions

Knihovnu je možné snadno použít pro komunikaci se zařízeními, která používají protokol Spinel (formát 97). Níže uvedený příklad ukazuje, jak Spinel.NET použít pro sestavení vlastní instrukce v protokolu Spinel a jak zpracovat odpověď. Příklad je předveden na instrukci Měření teploty (kód 0x51), kterou umí I/O moduly Quido.

Podrobný popis instrukcí, včetně funkčních kódů je v dokumentacích, které jsou volně dostupné u jednotlivých zařízení na papouch.com.

Níže uvedený příklady používá objekt MyDevice tak, jak je definován v Základních příkladech použití, které jsou uvedeny u jednotlivých zařízení (příklad pro Quido zde).

SendAndReceive() - vlastní instrukce protokolu Spinel

byte inst = 0x51;       // Instrukční kód (INST) - měření teploty
byte[] data = { 0x01 }; // Data instrukce (DATA) - číslo teploměru
string txt;

PacketSpinel97 txPacket = new PacketSpinel97(inst, data);

if (MyDevice.SendAndReceive(ref txPacket, out PacketSpinel97 rxPacket))
{
    if (rxPacket.INST == (int)Papouch.Spinel.Spinel97.ResponseACK.AllIsOk) 
    {
        // Data odpovědi převede na řetězec
        txt = BitConverter.ToString(rxPacket.SDATA);
        Console.WriteLine($"Response is Ok.\nHex DATA bytes: {txt}");

        // Příklad převodu získané hodnoty na výslednou teplotu
        float temp = (float)(rxPacket.SDATA[1] * 256 + rxPacket.SDATA[2]) / 10;
        Console.WriteLine($"Current temperature is {temp} °C");
    }
    else
        // Při chybě vypíše kód chyby
        Console.WriteLine($"Response code: {(ResponseACK)rxPacket.INST}");
}

Příklad výstupu z výše uvedeného kódu:

Response is Ok.
Hex DATA bytes: 01-01-53
Current temperature is 33,9 °C