st-ten-1/src/components/Automation/BDaq/InstantDiCtrl.py
2024-09-19 12:53:03 +02:00

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