|
|
|
import gex
|
|
|
|
|
|
|
|
class DOut(gex.Unit):
|
|
|
|
"""
|
|
|
|
Digital output port.
|
|
|
|
Pins are represented by bits of a control word, right-aligned.
|
|
|
|
|
|
|
|
For example, if pins C6, C5 and C0 are selected for the unit,
|
|
|
|
calling the "set" function with a word 0b111 will set all three to 1,
|
|
|
|
0b100 will set only C6.
|
|
|
|
"""
|
|
|
|
|
|
|
|
def _type(self):
|
|
|
|
return 'DO'
|
|
|
|
|
|
|
|
def write(self, pins:int, confirm=True):
|
|
|
|
""" Set pins to a value """
|
|
|
|
pb = gex.PayloadBuilder()
|
|
|
|
pb.u16(pins)
|
|
|
|
self._send(0x00, pb.close(), confirm=confirm)
|
|
|
|
|
|
|
|
def set(self, pins:int, confirm=True):
|
|
|
|
""" Set pins high """
|
|
|
|
pb = gex.PayloadBuilder()
|
|
|
|
pb.u16(pins)
|
|
|
|
self._send(0x01, pb.close(), confirm=confirm)
|
|
|
|
|
|
|
|
def clear(self, pins:int, confirm=True):
|
|
|
|
""" Set pins low """
|
|
|
|
pb = gex.PayloadBuilder()
|
|
|
|
pb.u16(pins)
|
|
|
|
self._send(0x02, pb.close(), confirm=confirm)
|
|
|
|
|
|
|
|
def toggle(self, pins:int, confirm=True):
|
|
|
|
""" Toggle pins """
|
|
|
|
pb = gex.PayloadBuilder()
|
|
|
|
pb.u16(pins)
|
|
|
|
self._send(0x03, pb.close(), confirm=confirm)
|