def SetDO(NoDev, NoSubDev, Name): #Get number of lines meNumberChannels = meDriver.meQueryNumberChannels(NoDev, NoSubDev) #Get CAPS (capability flags) meCAPS = meDriver.meQuerySubdeviceCaps(NoDev, NoSubDev) #Configure output type if (meCAPS & meDriver.ME_CAPS_DIO_SINK_SOURCE) == meDriver.ME_CAPS_DIO_SINK_SOURCE: #User has to shows hardware configuration DIO_Output_Type = GetOutputType(NoDev, NoSubDev, Name) else: #Use default DIO_Output_Type = meDriver.ME_SINGLE_CONFIG_DIO_OUTPUT #Configure sub-device for output meDriver.meIOSingleConfig(NoDev, NoSubDev, 0, DIO_Output_Type, meDriver.ME_REF_NONE, meDriver.ME_TRIG_CHAN_NONE, meDriver.ME_TRIG_TYPE_NONE, meDriver.ME_TRIG_EDGE_NONE, meDriver.ME_IO_SINGLE_NO_FLAGS) for meNoChannels in range(meNumberChannels): #Write to sub-device SingleDict = { 'Device': NoDev, 'Subdevice': NoSubDev, 'Channel': 0, 'Dir': meDriver.ME_DIR_OUTPUT, 'Value': 0x01 << meNoChannels, 'TimeOut': meDriver.ME_VALUE_NOT_USED, 'Flags': meDriver.ME_IO_SINGLE_TYPE_NO_FLAGS, 'Errno': 0 } SingleList = [SingleDict] meDriver.meIOSingle(SingleList, meDriver.ME_IO_SINGLE_NO_FLAGS) #Read back GetDO(NoDev, NoSubDev, Name) time.sleep(1)
def SetAO(NoDev, NoSubDev, NoChannel): #Get maximalaceppted value #Using range 0 (iUnit, dMin, dMax, iMaxData) = meDriver.meQueryRangeInfo(NoDev, NoSubDev, 0) STEPS = 9 step = (dMax-dMin)/(STEPS-1) #Configure sub-device for output meDriver.meIOSingleConfig(NoDev, NoSubDev, NoChannel, 0, meDriver.ME_REF_AO_GROUND, meDriver.ME_TRIG_CHAN_DEFAULT, meDriver.ME_TRIG_TYPE_SW, meDriver.ME_TRIG_EDGE_NONE, meDriver.ME_IO_SINGLE_NO_FLAGS) for i in range(STEPS): #Write to sub-device SingleDict = { 'Device': NoDev, 'Subdevice': NoSubDev, 'Channel': NoChannel, 'Dir': meDriver.ME_DIR_OUTPUT, 'Value': meDriver.meUtilityPhysicalToDigital(dMin, dMax, iMaxData, dMin + (step * i)), 'TimeOut': meDriver.ME_VALUE_NOT_USED, 'Flags': meDriver.ME_IO_SINGLE_TYPE_NO_FLAGS, 'Errno': 0 } SingleList = [SingleDict] meDriver.meIOSingle(SingleList, meDriver.ME_IO_SINGLE_NO_FLAGS) print "Device [%d:%d/%d] SET:%f(0x%x)" % (NoDev, NoSubDev, NoChannel, dMin + (step * i), SingleList[0]['Value']) #Read back GetAO(NoDev, NoSubDev, NoChannel) time.sleep(1)
def GetDO(NoDev, NoSubDev, Name): #Read from sub-device SingleDict = { 'Device': NoDev, 'Subdevice': NoSubDev, 'Channel': 0, 'Dir': meDriver.ME_DIR_INPUT, 'Value': 0, 'TimeOut': meDriver.ME_VALUE_NOT_USED, 'Flags': meDriver.ME_IO_SINGLE_TYPE_NO_FLAGS, 'Errno': 0 } SingleList = [SingleDict] meDriver.meIOSingle(SingleList, meDriver.ME_IO_SINGLE_NO_FLAGS) print "Device %d: %s%d value=0x%x" % (NoDev, Name, NoSubDev, SingleList[0]['Value'])
def GetDI(NoDev, NoSubDev, Name): #Configure sub-device for input meDriver.meIOSingleConfig(NoDev, NoSubDev, 0, meDriver.ME_SINGLE_CONFIG_DIO_INPUT, meDriver.ME_REF_NONE, meDriver.ME_TRIG_CHAN_NONE, meDriver.ME_TRIG_TYPE_NONE, meDriver.ME_TRIG_EDGE_NONE, meDriver.ME_IO_SINGLE_NO_FLAGS) #Read from sub-device SingleDict = { 'Device': NoDev, 'Subdevice': NoSubDev, 'Channel': 0, 'Dir': meDriver.ME_DIR_INPUT, 'Value': 0, 'TimeOut': meDriver.ME_VALUE_NOT_USED, 'Flags': meDriver.ME_IO_SINGLE_TYPE_NO_FLAGS, 'Errno': 0 } SingleList = [SingleDict] meDriver.meIOSingle(SingleList, meDriver.ME_IO_SINGLE_NO_FLAGS) print "Device %d: %s%d value=0x%x" % (NoDev, Name, NoSubDev, SingleList[0]['Value'])
def GetAO(NoDev, NoSubDev, NoChannel): #Using range 0 (iUnit, dMin, dMax, iMaxData) = meDriver.meQueryRangeInfo(NoDev, NoSubDev, 0) #Read from sub-device SingleDict = { 'Device': NoDev, 'Subdevice': NoSubDev, 'Channel': NoChannel, 'Dir': meDriver.ME_DIR_INPUT, 'Value': 0, 'TimeOut': meDriver.ME_VALUE_NOT_USED, 'Flags': meDriver.ME_IO_SINGLE_TYPE_NO_FLAGS, 'Errno': 0 } SingleList = [SingleDict] meDriver.meIOSingle(SingleList, meDriver.ME_IO_SINGLE_NO_FLAGS) print "Device [%d:%d/%d] GET:%f(0x%x)" % (NoDev, NoSubDev, NoChannel, meDriver.meUtilityDigitalToPhysical(dMin, dMax, iMaxData, SingleList[0]['Value'], meDriver.ME_MODULE_TYPE_MULTISIG_NONE, 0), SingleList[0]['Value'])