es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , ,

Answer

  1. Avatar for 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 variable ULONG. TempLong.Byte[0] está accediendo al primer byte de la variable ULONG TempLong. El valor de TempLong.Byte[0] será igual al primer byte del valor almacenado en TempLong. Por ejemplo, si TempLong es igual a 0x0440, entonces TempLong.Byte[0] será igual a 0x04.

Comments are closed.