-
Notifications
You must be signed in to change notification settings - Fork 2
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).
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}");
}
Response is Ok.
Hex DATA bytes: 01-01-53
Current temperature is 33,9 °C