88 lines
3.3 KiB
Python
88 lines
3.3 KiB
Python
#!/usr/bin/python
|
|
# -*- coding:utf-8 -*-
|
|
|
|
from ctypes import *
|
|
|
|
from components.Automation.BDaq import Scenario, ErrorCode
|
|
from components.Automation.BDaq.DioCtrlBase import DioCtrlBase
|
|
from components.Automation.BDaq.BDaqApi import TInstantDiCtrl, TArray, BioFailed
|
|
from components.Automation.BDaq.DiintChannel import DiintChannel
|
|
from components.Automation.BDaq.NosFltChannel import NosFltChannel
|
|
from components.Automation.BDaq.DiPmintPort import DiPmintPort
|
|
from components.Automation.BDaq.DiCosintPort import DiCosintPort
|
|
|
|
|
|
class InstantDiCtrl(DioCtrlBase):
|
|
def __init__(self, devInfo = None):
|
|
super(InstantDiCtrl, self).__init__(Scenario.SceInstantDi, devInfo)
|
|
self._nosFltChans = []
|
|
self._intChans = []
|
|
self._cosPorts = []
|
|
self._pmPorts = []
|
|
|
|
@property
|
|
def noiseFilterBlockTime(self):
|
|
return TInstantDiCtrl.getNoiseFilterBlockTime(self._obj)
|
|
|
|
@noiseFilterBlockTime.setter
|
|
def noiseFilterBlockTime(self, value):
|
|
if not isinstance(value, (float, int)):
|
|
raise TypeError('a float is required')
|
|
ret = ErrorCode.lookup(TInstantDiCtrl.setNoiseFilterBlockTime(self._obj, value))
|
|
if BioFailed(ret):
|
|
raise ValueError('set noiseFilterBlockTime is failed, the error code is 0x%X' % (ret.value))
|
|
|
|
@property
|
|
def noiseFilter(self):
|
|
if not self._nosFltChans:
|
|
nativeArr = TInstantDiCtrl.getNoiseFilter(self._obj)
|
|
count = TArray.getLength(nativeArr)
|
|
for i in range(count):
|
|
nosFltChannObj = NosFltChannel(TArray.getItem(nativeArr, i))
|
|
self._nosFltChans.append(nosFltChannObj)
|
|
return self._nosFltChans
|
|
|
|
@property
|
|
def diIntChannels(self):
|
|
if not self._intChans:
|
|
nativeArray = TInstantDiCtrl.getDiintChannels(self._obj)
|
|
count = TArray.getLength(nativeArray)
|
|
for i in range(count):
|
|
diintChannObj = DiintChannel(TArray.getItem(nativeArray, i))
|
|
self._intChans.append(diintChannObj)
|
|
return self._intChans
|
|
|
|
@property
|
|
def diCosintPorts(self):
|
|
if not self._cosPorts:
|
|
nativeArray = TInstantDiCtrl.getDiCosintPorts(self._obj)
|
|
count = TArray.getLength(nativeArray)
|
|
for i in range(count):
|
|
cosPortsObj = DiCosintPort(TArray.getItem(nativeArray, i))
|
|
self._cosPorts.append(cosPortsObj)
|
|
return self._cosPorts
|
|
|
|
@property
|
|
def diPmintPorts(self):
|
|
if not self._pmPorts:
|
|
nativeArray = TInstantDiCtrl.getDiPmintPorts(self._obj)
|
|
count = TArray.getLength(nativeArray)
|
|
for i in range(count):
|
|
pmPortsObj = DiPmintPort(TArray.getItem(nativeArray, i))
|
|
self._pmPorts.append(pmPortsObj)
|
|
return self._pmPorts
|
|
|
|
def readAny(self, portStart, portCount):
|
|
dataArray = (c_uint8 * portCount)()
|
|
data = []
|
|
ret = TInstantDiCtrl.readAny(self._obj, portStart, portCount, dataArray)
|
|
for i in range(portCount):
|
|
data.append(dataArray[i])
|
|
return ErrorCode.lookup(ret), data
|
|
|
|
def readBit(self, port, bit):
|
|
dataArray = (c_uint8 * 1)()
|
|
ret = TInstantDiCtrl.readBit(self._obj, port, bit, dataArray)
|
|
data = dataArray[0]
|
|
return ErrorCode.lookup(ret), data
|