Example: Write digital line
"""Example: Write digital line"""
from nominal_instro.instruments import NominalDAQ
from nominal_instro.instruments.daq.types import DAQVendor, Direction, Logic
from nominal_instro.lib.publishers import NominalCorePublisher
# Configuration: Choose your vendor.
VENDOR = DAQVendor.LABJACK_T_SERIES
# Vendor-specific configuration. For example purposes.
# Each vendor uses different channel naming conventions and resource ID formats. See vendor documentation for details.
match VENDOR:
case DAQVendor.LABJACK_T_SERIES:
CHANNEL_0 = "FIO4"
CHANNEL_1 = "FIO5"
RESOURCE_ID = "440020473"
case DAQVendor.NI:
CHANNEL_0 = "port0/line0"
CHANNEL_1 = "port0/line1"
RESOURCE_ID = "Dev1"
case DAQVendor.KEYSIGHT_34980:
from nominal_instro.lib import ConnectConfig
CHANNEL_0 = "5101/0"
CHANNEL_1 = "5101/1"
RESOURCE_ID = ConnectConfig(visa_resource="USB0::0x0957::0x0507::MY44001757::INSTR")
case DAQVendor.MCC:
CHANNEL_0 = "FIRSTPORTA/0"
CHANNEL_1 = "FIRSTPORTA/1"
RESOURCE_ID = "344371:0" # MCC DAQ device ID, optionally suffixed with ":<board_number>" (default 0)
# Nominal Core dataset to send data to as the instrument is operated.
DATASET_RID = "<dataset_rid>" # Replace with your dataset RID.
### Main code
daq = NominalDAQ.create(name="myDAQ", vendor=VENDOR, resource=RESOURCE_ID)
daq.add_publisher(NominalCorePublisher(dataset_rid=DATASET_RID))
daq.open()
try:
daq.configure_digital_channel(
direction=Direction.OUTPUT, physical_channel=CHANNEL_0, alias=f"do_0", logic=Logic.HIGH, logic_level=5.0
)
daq.configure_digital_channel(
direction=Direction.OUTPUT, physical_channel=CHANNEL_1, alias=f"do_1", logic=Logic.LOW, logic_level=5.0
)
daq.write_digital_line(channel="do_0", data=1)
daq.write_digital_line(channel="do_1", data=0)
finally:
print("Closing DAQ")
daq.close()