一、硬件:
笔记本电脑Windows 10系统
NI USB-6000
二、软件:
(1)Python版本3.7如下

(2)NI DAQmx16.0

查看板卡对应的设备名称;

(3)安装Python下的DAQmx,使用pip install DAQmx进行安装。
三、参考链接:
NI DAQmx Python API说明参考:
https://nidaqmx-python.readthedocs.io/en/latest/index.html
Control NI DAQ Device with Python and NI DAQmx
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019Pf1SAE&l=zh-CN
四、代码示例

import nidaqmx
import pprint
import numpy as np
from matplotlib import pyplot as plt pp = pprint.PrettyPrinter(indent=4)with nidaqmx.Task() as task:task.ai_channels.add_ai_voltage_chan("Dev1/ai0")print('1 Channel 1 Sample Read: ')data = task.read()pp.pprint(data)data = task.read(number_of_samples_per_channel=1)pp.pprint(data)print('1 Channel N Samples Read: ')data = task.read(number_of_samples_per_channel=10)x=np.arange(0,len(data))pp.pprint(data)plt.plot(x,data)task.ai_channels.add_ai_voltage_chan("Dev1/ai1")print('N Channel 1 Sample Read: ')data = task.read()pp.pprint(data)print('N Channel N Samples Read: ')data = task.read(number_of_samples_per_channel=2)pp.pprint(data)

执行结果如下:

五、示例2:

import nidaqmx
import tkinter as tk
from tkinter import ttkimport matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figureclass voltageContinuousInput(tk.Frame):def __init__(self, master):tk.Frame.__init__(self, master)#Configure root tk classself.master = masterself.master.title("Voltage - Continuous Input")self.master.iconbitmap("Voltage - Continuous Input.ico")self.master.geometry("1100x600")self.create_widgets()self.pack()self.run = Falsedef create_widgets(self):#The main frame is made up of three subframesself.channelSettingsFrame = channelSettings(self, title ="Channel Settings")self.channelSettingsFrame.grid(row=0, column=1, sticky="ew", pady=(20,0), padx=(20,20), ipady=10)self.inputSettingsFrame = inputSettings(self, title="Input Settings")self.inputSettingsFrame.grid(row=1, column=1, pady=(20,0), padx=(20,20), ipady=10)self.graphDataFrame = graphData(self)self.graphDataFrame.grid(row=0, rowspan=2, column=2, pady=(20,0), ipady=10)def startTask(self):#Prevent user from starting task a second timeself.inputSettingsFrame.startButton['state'] = 'disabled'#Shared flag to alert task if it should stopself.continueRunning = True#Get task settings from the userphysicalChannel = self.channelSettingsFrame.physicalChannelEntry.get()maxVoltage = int(self.channelSettingsFrame.maxVoltageEntry.get())minVoltage = int(self.channelSettingsFrame.minVoltageEntry.get())sampleRate = int(self.inputSettingsFrame.sampleRateEntry.get())self.numberOfSamples = int(self.inputSettingsFrame.numberOfSamplesEntry.get()) #Have to share number of samples with runTask#Create and start taskself.task = nidaqmx.Task()self.task.ai_channels.add_ai_voltage_chan(physicalChannel, min_val=minVoltage, max_val=maxVoltage)self.task.timing.cfg_samp_clk_timing(sampleRate,sample_mode=nidaqmx.constants.AcquisitionType.CONTINUOUS,samps_per_chan=self.numberOfSamples*3)self.task.start()#spin off call to check self.master.after(10, self.runTask)def runTask(self):#Check if task needs to update the graphsamplesAvailable = self.task._in_stream.avail_samp_per_chanif(samplesAvailable >= self.numberOfSamples):vals = self.task.read(self.numberOfSamples)self.graphDataFrame.ax.cla()self.graphDataFrame.ax.set_title("Acquired Data")self.graphDataFrame.ax.plot(vals)self.graphDataFrame.graph.draw()#check if the task should sleep or stopif(self.continueRunning):self.master.after(10, self.runTask)else:self.task.stop()self.task.close()self.inputSettingsFrame.startButton['state'] = 'enabled'def stopTask(self):#call back for the "stop task" buttonself.continueRunning = Falseclass channelSettings(tk.LabelFrame):def __init__(self, parent, title):tk.LabelFrame.__init__(self, parent, text=title, labelanchor='n')self.parent = parentself.grid_columnconfigure(0, weight=1)self.xPadding = (30,30)self.create_widgets()def create_widgets(self):self.physicalChannelLabel = ttk.Label(self, text="Physical Channel")self.physicalChannelLabel.grid(row=0,sticky='w', padx=self.xPadding, pady=(10,0))self.physicalChannelEntry = ttk.Entry(self)self.physicalChannelEntry.insert(0, "Dev1/ai0")self.physicalChannelEntry.grid(row=1, sticky="ew", padx=self.xPadding)self.maxVoltageLabel = ttk.Label(self, text="Max Voltage")self.maxVoltageLabel.grid(row=2,sticky='w', padx=self.xPadding, pady=(10,0))self.maxVoltageEntry = ttk.Entry(self)self.maxVoltageEntry.insert(0, "10")self.maxVoltageEntry.grid(row=3, sticky="ew", padx=self.xPadding)self.minVoltageLabel = ttk.Label(self, text="Min Voltage")self.minVoltageLabel.grid(row=4,  sticky='w', padx=self.xPadding,pady=(10,0))self.minVoltageEntry = ttk.Entry(self)self.minVoltageEntry.insert(0, "-10")self.minVoltageEntry.grid(row=5, sticky="ew", padx=self.xPadding,pady=(0,10))class inputSettings(tk.LabelFrame):def __init__(self, parent, title):tk.LabelFrame.__init__(self, parent, text=title, labelanchor='n')self.parent = parentself.xPadding = (30,30)self.create_widgets()def create_widgets(self):self.sampleRateLabel = ttk.Label(self, text="Sample Rate")self.sampleRateLabel.grid(row=0, column=0, columnspan=2, sticky='w', padx=self.xPadding, pady=(10,0))self.sampleRateEntry = ttk.Entry(self)self.sampleRateEntry.insert(0, "1000")self.sampleRateEntry.grid(row=1, column=0, columnspan=2, sticky='ew', padx=self.xPadding)self.numberOfSamplesLabel = ttk.Label(self, text="Number of Samples")self.numberOfSamplesLabel.grid(row=2, column=0, columnspan=2, sticky='w', padx=self.xPadding, pady=(10,0))self.numberOfSamplesEntry = ttk.Entry(self)self.numberOfSamplesEntry.insert(0, "100")self.numberOfSamplesEntry.grid(row=3, column=0, columnspan=2, sticky='ew', padx=self.xPadding)self.startButton = ttk.Button(self, text="Start Task", command=self.parent.startTask)self.startButton.grid(row=4, column=0, sticky='w', padx=self.xPadding, pady=(10,0))self.stopButton = ttk.Button(self, text="Stop Task", command=self.parent.stopTask)self.stopButton.grid(row=4, column=1, sticky='e', padx=self.xPadding, pady=(10,0))class graphData(tk.Frame):def __init__(self, parent):tk.Frame.__init__(self, parent)self.create_widgets()def create_widgets(self):self.graphTitle = ttk.Label(self, text="Voltage Input")self.fig = Figure(figsize=(7,5), dpi=100)self.ax = self.fig.add_subplot(1,1,1)self.ax.set_title("Acquired Data")self.graph = FigureCanvasTkAgg(self.fig, self)self.graph.draw()self.graph.get_tk_widget().pack()#Creates the tk class and primary application "voltageContinuousInput"
root = tk.Tk()
app = voltageContinuousInput(root)#start the application
app.mainloop()

运行结果如下:

六、其他代码参见以下:
在本论坛搜索:nidaqmx-python-master.zip

使用Python调用NI DAQmx相关推荐

  1. python 调用 .netcore api_浅谈Python调用XBee的API来进行通讯

    浅谈Python调用XBee的API来进行通讯 用python编程来控制串口(COM口),来让一对XBee进行通讯.不需要借助终端来发送和接收数据,增大了XBee使用的灵活性.这才是使用XBee模块的 ...

  2. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

  3. python调用cmd命令会弹出黑框_python 调用cmd,不显示cmd黑框

    python 调用系统命令的方式有很多 1.1   os.system(command) 在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态.这实际上是使用C标准 ...

  4. python调用js库中的函数_Python 调用JS文件中的函数

    Python 调用JS文件中的函数 1.安装PyExecJS第三方库 2.导入库:import execjs 3.调用JS文件中的方法 Passwd = execjs.compile(open(r&q ...

  5. python 调用 javascript函数

    python 调用 javascript函数 # pip install pyexecjs import execjs # 直接执行 print('execjs.eval:', execjs.eval ...

  6. python调用dll报错:ValueError: Procedure called with not enough arguments (4 bytes missing) or wrong call

    python调用dll报错:ValueError: Procedure called with not enough arguments (4 bytes missing) or wrong call ...

  7. Windows使用MSVC,命令行编译,链接64位dll,Python调用

    文章目录 代码 编译 链接 Python调用 前一篇博客: Windows下使用Visual Studio自带的MSVC,命令行编译C/C++程序 代码 mylib.h代码如下: #ifndef MY ...

  8. python调用脚本或shell的方式

    python调用脚本或shell有下面三种方式: os.system() 特点: (1)可以调用脚本. (2)可以判断是否正确执行. (3)满足不了标准输出 && 错误 command ...

  9. python 调用 c 生成数组_python调用c++传递数组的实例

    如下所示: input = c_int * 4 # 实例化一个长度为2的整型数组 input = input() # 为数组赋值(input这个数组是不支持迭代的) input[0] = 11 inp ...

最新文章

  1. SAP BW 学习笔记(一)
  2. Python将py文件生成exe文件
  3. 企鹅java游戏下载安装_企鹅企鹅生活安卓版游戏下载|企鹅企鹅生活手游下载v1.6.1-乐游网安卓下载...
  4. mysql优化有哪些着手点_mysql的优化总结
  5. SQL Server中TEXT类型操作
  6. 130分的计算机专科学校排名及分数线,2021专科学校排名及分数线是多少
  7. 20200702:最长公共子序列(leetcode1143)
  8. Money Pro for Mac如何导入账单?
  9. 【科来】网络异常行为分析学习笔记
  10. 后flash时代的何去何从
  11. 文本数据挖掘-----词向量
  12. 此文对你人生会有莫大好处的,建议永久保存
  13. 案例:Java多态实现饮料购买咖啡、可乐、矿泉水2.0
  14. 原生WebGL场景中绘制多个圆锥圆柱
  15. 渗透测试之信息收集 -tryhackme-Content Discovery
  16. 内存管理、磁盘和文件拾遗
  17. Ubuntu16.04 使用apt-get安装软件时无法自动安装所需要的依赖
  18. 【Response】
  19. Cesium粒子系统、火焰粒子、喷水粒子
  20. 计算机无法安装蓝牙设备,笔记本蓝牙无法添加设备解决方法

热门文章

  1. 移动计算机无线网络,移动笔记本电脑怎么连接WIFI无线网络
  2. 勒索软件病毒肆虐多所高校:中招无法“挽救”
  3. mysql TMM_技术分享 | MySQL:timestamp 时区转换导致 CPU %sy 高的问题
  4. Caffeine 缓存
  5. vcenter虚拟化平台(VMware+FC SAN传统模式)
  6. 有关商品业务的增加、删除、修改、全查。
  7. pandorabox安装php,提醒:使用华硕和PandoraBox固件的路由请及时变更密码
  8. ABAP--如何写动态台账统计表(简单代码)
  9. L1-030 一帮一 Python
  10. Java版颈椎自动矫正图