Deteccion del estado de las salidas en STX570

  • 2 Respuestas
  • 716 Vistas

pboero

  • Novato
  • *
  • Mensajes: 6
Deteccion del estado de las salidas en STX570
« : enero 10, 2016, 09:52:43 am »
Buenas,
Necesitaría saber cómo saber el estado de una determinada salida en la STX570.
La función Stx570_DoutReadAll(Addr, DoutState) lee todas las salidas y retorna el estado en DoutState, pero no encontré en el manual de dicha placa como hacer para, a partir de DoutState consultar el estado de una determinada salida.

Para el caso de las entradas está claro, primero utilizamos Stx570_DinReadAll(Addr, DinState) y luego con Stx570_DinRead(DinState, EDIN1) consultamos por ejemplo el estado de la entrada 1.

Muchas gracias,
Pablo

pboero

  • Novato
  • *
  • Mensajes: 6
Re:Deteccion del estado de las salidas en STX570
« Respuesta #1 : enero 10, 2016, 15:49:39 pm »
Estimados, ya lo solucioné: Utilizo la función BitRead provista en el Pawn.
El ejemplo queda:

ChequearStatusSalida (PlacaNro, SalidaNro)
{
     new DoutState     
     Stx570_DoutReadAll(PlacaNro, DoutState)
     StatusSalida = BitRead(DoutState, SalidaNro)
     return StatusSalida
}

Muchas gracias,

Pablo

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 1722
  • Soporte Técnico
Re:Deteccion del estado de las salidas en STX570
« Respuesta #2 : enero 24, 2016, 20:14:13 pm »
Si, perfecto, es correcto como lo planteas.

Disculpa la demora en constestar, pero recién retornamos de vacaciones.

Solo una pequeña corrección, podes hacer:

ChequearStatusSalida (PlacaNro, SalidaNro)
{
     new DoutState     
     Stx570_DoutReadAll(PlacaNro, DoutState)
     return xBitRead(DoutState, SalidaNro)
}

La función xBitRead() a diferencia de BitRead() devuelve "0" o "1" de acuerdo al valor del bit. Ya que BitRead() devuelve "0" si el bit=0 y diferente a 0 (un numero positivo) si el bit=1.

Por otro lado, si queres utilizar las constantes EDOUT, podes usar xNBitRead().

ChequearStatusSalida (PlacaNro, SalidaNro)
{
     new DoutState     
     Stx570_DoutReadAll(PlacaNro, DoutState)
     return xNBitRead(DoutState, SalidaNro)
}

Y lo usas:

ChequearStatusSalida(0, EDOUT1)

Estamos a disposición.

SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com