naiilo wrote: 0xFE, 0xFE, bit odpowiedzi - kod ramki, tutaj są zera, CRC (2 bajty), 0xFE, 0x0D.
Bit a w zasadzie bajt odpowiedzi czyli konkretnie? Nie podał kolega jaki to bajt, a na dole pisze, że:
naiilo wrote: Ogólnie do pobierania statusu wyjść/czujek służy ramka 0x17 Outputs State
.. z tym, że to już nie dotyczy czujek (wejść), a tylko samych wyjść.
Ogólnie, wg protokołu:
Komenda do odpytania o naruszone wejścia to: 0x00. Taką więc komendę należy wysłać, jeżeli chcemy w odpowiedzi otrzymać info, które wejścia są aktualnie naruszone.
Komendę należy opatrzeć w bajty początku i na końcu sumę kontrolną i bajty kończące, czyli ramka pytająca o stan wejść musi mieć postać:
Stan wejść:
gdzie:
D7 E2 oznacza sumę kontrolną.
Odpytanie o stan wyjść centrali wygląda następująco.
Stan wyjść:
W konsekwencji wysłania takich ramek, należy spodziewać się odpowiedzi, która może mieć ogólną postać:
(dla wejść), np.:
co należy czytać jako:
fefe - początek ramki
00 - komenda
01 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - właściwa odpowiedź
32 B6 - suma kontrolna CRC
FE 0D - koniec ramki
Teraz, zaglądając do naszej "właściwej odpowiedzi" ( 01 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ), rozbijamy to na bity:
01 40 w zapisie szesnastkowym to:
0000 000
1 0
100 0000 w zapisie binarnym.
Każdy bajt (każde 8 bitów) reprezentuje 8 wejść (lub 8 wyjść, jeżeli będzie to komenda 0x17). Najmłodszy bit z prawej, czyli z tej ramki można wywnioskować, że naruszone są wejścia:
1 i 15, bo
8 7 6 5 4 3 2
1 | 16
15 14 13 12 11 10 9
Myślę, że to powinno wiele wyjaśnić. Analogicznie postępuje się z wyjściami.