¿Cómo funciona la función .Byte[] en un byte específico?
Estoy trabajando en las siguientes líneas de código:
#define WDOG_STATUS 0x0440
#define ESM_OP 0x08
y en un método de mi clase definida tengo:
bool WatchDog = 0;
bool Operational = 0;
unsigned char i;
ULONG TempLong;
unsigned char Status;
TempLong.Long = SPIReadRegisterIndirect(WDOG_STATUS, 1); // leer estado del watchdog
if ((TempLong.Byte[0] & 0x01) == 0x01)
WatchDog = 0;
else
WatchDog = 1;
TempLong.Long = SPIReadRegisterIndirect(AL_STATUS, 1);
Status = TempLong.Byte[0] & 0x0F;
if (Status == ESM_OP)
Operational = 1;
else
Operational = 0;
Lo que hace SPIReadRegisterIndirect() es tomar un unsigned short como dirección del registro a leer y un unsigned char Len como número de bytes a leer.
Lo que me está desconcertando es Byte[]. Supongo que esta es una forma de separar algunas partes del byte del valor en Long (que se lee de SPIReadRegisterIndirect). ¿Pero por qué [0]? ¿No debería ser 1? ¿Y cómo funciona eso? Quiero decir, si está aislando solo un byte, por ejemplo, para el caso del WatchDog, ¿es TempLong.Byte[0] igual a 04 o 40? (cuando estoy imprimiendo el valor antes de la declaración if, se muestra como 0, que no es ni 04 ni 40 del registro definido de WDOG_STATUS).
Ten en cuenta que soy nuevo en este tema. Y he buscado en Google y en otras búsquedas, pero desafortunadamente no encontré lo que quería. ¿Alguien podría ayudarme a entender cómo funciona esta sintaxis o dirigirme a una documentación donde pueda leer sobre ella?
Gracias de antemano.
davy.ai
Parece que estás intentando entender cómo funciona la sintaxis
Byte[]
en el código que has proporcionado.Byte[]
es un método que permite acceder a bytes individuales en una variableULONG
.TempLong.Byte[0]
está accediendo al primer byte de la variableULONG
TempLong
. El valor deTempLong.Byte[0]
será igual al primer byte del valor almacenado enTempLong
. Por ejemplo, siTempLong
es igual a0x0440
, entoncesTempLong.Byte[0]
será igual a0x04
.