Observed since 20 Oct, 19:59 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Advantech Automation B-Daq Python Wrapper
‼️ 本仓库来自 Advantech 官方 SDK 中的 Python Examples
AutomationBDaq 是一个 Python 库(基于 ctypes),用于调用研华 Advantech DAQNavi / BioDAQ 的底层驱动接口,从而在 Python 中完成数据采集(DAQ)相关操作:
InstantAiCtrl / WaveformAiCtrlInstantAoCtrl / BufferedAoCtrlInstantDiCtrl / InstantDoCtrlEventCounterCtrl / FreqMeterCtrl / TimerPulseCtrl / UdCounterCtrl 等本仓库的 Python 分发包名是 advantech-AutomationBDaq,但代码中的实际 import 根包是 Automation(例如 Automation.BDaq.InstantAiCtrl)。
重要:本库不包含研华的驱动/DLL/SO 文件。你必须先安装并正确配置 Advantech DAQNavi / BioDAQ 运行时。
pyproject.toml)库会在导入阶段尝试加载动态库:
biodaq(等价于 biodaq.dll)libbiodaq.so因此:
biodaq.dll 在系统可搜索路径中(例如已安装到系统目录或 PATH 可找到)。libbiodaq.so,并确保在 LD_LIBRARY_PATH 或系统库路径中可被找到。platform.system() 会走“非 Windows”分支并尝试加载 libbiodaq.so,通常没有对应官方库文件,因此默认不可用。本仓库使用 setuptools 打包,分发名为 pydaq,包目录在 src/。
开发/本地安装:
pip install -e .
或普通安装:
pip install .
安装完成后使用如下 import 路径:
from Automation.BDaq.InstantAiCtrl import InstantAiCtrl
所有控制器都继承自 DaqCtrlBase,通过 selectedDevice 选择设备:
int:按设备号(例如 0)str:按设备描述字符串(例如 "PCI-1716,BID#0",具体取决于驱动枚举结果)示例:模拟量输入读取(Instant AI)
from Automation.BDaq.InstantAiCtrl import InstantAiCtrl
from Automation.BDaq import ErrorCode
def main() -> None:
ai = InstantAiCtrl()
try:
# 方式 A:按设备号(最简单)
ai.selectedDevice = 0
# 方式 B:按描述字符串(示例,实际字符串以系统枚举为准)
# ai.selectedDevice = "PCI-1716,BID#0"
err, values = ai.readDataF64(chStart=0, chCount=1)
if err != ErrorCode.Success:
raise RuntimeError(f"AI read failed: {err} (0x{err.value:08X})")
print("AI[0] =", values[0])
finally:
# 释放底层句柄
ai.dispose()
if __name__ == "__main__":
main()
from Automation.BDaq.InstantDiCtrl import InstantDiCtrl
from Automation.BDaq import ErrorCode
di = InstantDiCtrl(0)
try:
err, bit0 = di.readBit(port=0, bit=0)
if err != ErrorCode.Success:
raise RuntimeError(f"DI read failed: {err}")
print("DI port0 bit0 =", bit0)
finally:
di.dispose()
from Automation.BDaq.InstantDoCtrl import InstantDoCtrl
from Automation.BDaq import ErrorCode
do = InstantDoCtrl(0)
try:
err = do.writeBit(port=0, bit=0, data=1)
if err != ErrorCode.Success:
raise RuntimeError(f"DO write failed: {err}")
finally:
do.dispose()
from Automation.BDaq.InstantAoCtrl import InstantAoCtrl
from Automation.BDaq import ErrorCode
ao = InstantAoCtrl(0)
try:
# 输出 1 个通道的标定值(单位通常为 V;具体与设备量程/配置相关)
err = ao.writeAny(chStart=0, chCount=1, dataRaw=None, dataScaled=[1.0])
if err != ErrorCode.Success:
raise RuntimeError(f"AO write failed: {err}")
finally:
ao.dispose()
WaveformAiCtrl 支持“准备 → 开始 → 取数 → 停止”的流程,并提供 conversion/record 等配置项:
from Automation.BDaq.WaveformAiCtrl import WaveformAiCtrl
from Automation.BDaq import ErrorCode
wf = WaveformAiCtrl(0)
try:
wf.conversion.channelStart = 0
wf.conversion.channelCount = 1
wf.conversion.clockRate = 1000 # 1 kHz(实际可用范围以设备为准)
wf.record.sectionLength = 1000 # 每段采样点数
wf.record.sectionCount = 1
wf.record.cycles = 1
if wf.prepare() != ErrorCode.Success:
raise RuntimeError("prepare failed")
if wf.start() != ErrorCode.Success:
raise RuntimeError("start failed")
err, returned, data, *_ = wf.getDataF64(count=1000, timeout=2000)
if err != ErrorCode.Success:
raise RuntimeError(f"getData failed: {err}")
print("returned:", returned, "first:", data[:5])
finally:
wf.stop()
wf.dispose()
控制器类大多位于 Automation.BDaq.*:
InstantAiCtrl: readDataF64/readDataI32/readDataI16WaveformAiCtrl: prepare/start/getData*/stop,并通过 conversion / record 配置采集InstantAoCtrl: writeAnyInstantDiCtrl: readAny/readBitInstantDoCtrl: writeAny/writeBit,并可 readAny/readBitDaqCtrlBase: 设备选择 selectedDevice、释放 dispose()、重置 cleanup()、读取 state/device错误码使用 Automation.BDaq.ErrorCode,且很多方法返回 (ErrorCode, data) 或直接返回 ErrorCode。
src/
Automation/
BDaq/ # ctypes 封装与各类控制器
biodaq / libbiodaq.so
ErrorDeviceNotOpened / ErrorDriverNotFound
selectedDevice 是否正确、设备是否在系统中被驱动识别。Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.1 | 2 Jan 2026 | 0 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:59 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:60355a1500ff3bff613395852d4e994fbb7608e3a3e84a6af55ccec10b0ec4a0