0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你一招,简化仪器Python编程控制!

泰克科技 来源:泰克科技 2024-03-15 14:31 次阅读

引言

许多行业的工程师都使用自动化来扩展其测试仪器的功能,而大多是选择免费的编程语言——Python来完成。作为适用于自动化的主要编程语言,Python具备许多显著优势:

多功能性

易于教学

代码可读性

广泛可用的知识库和模块

自动化包含两种主要使用情形:

模拟人类行为以自动化前面板并节省时间的例程,例如自动化合规性测试。每次需要测试新零件时,工程师不会呆坐在示波器前,添加相应的测量值并记下结果,而是开发一个脚本来完成所有工作并显示最终结果。

扩展仪器功能的用途,例如:测量记录、验证或质量保证。自动化操作支持工程师执行复杂的测试,且能够规避测试过程中的许多固有缺点。操作人员无需设置示波器和手动记录结果,且每次都可以以相同的方式进行测试。

本技术简介将涵盖使用Python进行编程所需的内容,包括编程接口的基础知识以及下载和运行方法的示例。

1

编程接口的定义

编程接口(PI)是两个计算系统之间的一个或多个边界,可以通过编程来执行特定行为。就本文而言,编程接口是运行每台泰克测试设备的计算机和最终用户编写的应用程序之间的桥梁。为了进一步缩小范围,编程接口在此处定义为一组可以远程发送到仪器的命令,仪器会处理这些命令并执行相应的任务。PI堆栈(图1)显示了从主机控制器到仪器的信息流。最终用户编写的应用程序代码用于定义目标仪器的行为。

最终用户通常用业内流行的开发平台编写代码,如Python、MATLABLabVIEWC++C#。这些应用程序将使用可编程仪器标准命令(SCPI)格式——大多数测试和测量设备都支持的标准格式——发送数据。SCPI命令通常通过虚拟仪器软件架构(VISA)层发送,VISA层可通过为增强通信协议的鲁棒性(例如错误检查)促进数据传输。在某些情况下,应用程序可能会调用驱动程序,然后驱动程序会向VISA层发送一个或多个SCPI命令。

2

tm_devices驱动程序包的内容

泰克的tm_devices是泰克自行开发的设备管理包,支持用户使用编程语言Python控制和自动化泰克和吉时利产品的测试过程。使用Python的软件包管理系统pip可快速安装tm_devices。

Python软件包包含大量命令和功能,可帮助用户轻松地对泰克和吉时利产品进行自动化测试。其可在最流行的Python IDE中使用,且支持代码补全辅助。此外,Python软件包还可以帮助任何水平软件技能的工程师简单轻松地进行编码和测试自动化。

3

环境设置

本节将指导您完成使用tm_ devices进行开发工作的先决条件和安装。我们特意在Python(venvs)中提供了支持虚拟环境的指令,因为我们相信这样可以帮助您更轻松地管理和维护项目,特别是在使用Python软件包之前,您只是简单地试用了一下的情况下。

3.1

安装与先决条件概述

1. 安装 Python.

a.Python >=3.8

2. PyCharm——PyCharm安装、启动项目和tm_devices安装

3. VSCode——VSCode安装、启动项目和tm_devices安装

3.2

PyCharm社区版(免费)

PyCharm是一款各行各业软件开发人员广泛使用的Python IDE。PyCharm有一个集成的单元测试器,支持用户按文件、类、方法的运行测试,或直接运行文件夹中的所有测试。与大多数现代IDE一样,PyCharm拥有代码补全形式,和基本的文本编辑器相比,可以大大加快开发速度。

接下来,我们将为您介绍PyCharm社区版(免费)的安装过程,然后在IDE中安装tm_devices并设置一个虚拟环境进行开发。

1. 访问

https://www.jetbrains.com/pycharm/

2. 跳过PyCharm专业版,下拉至PyCharm社区版,然后点击下载。

96c51618-e284-11ee-a297-92fbcf53809c.jpg

3. 请继续执行默认的安装步骤。无需进行任何特殊操作。

4. 欢迎使用PyCharm!

96cfc590-e284-11ee-a297-92fbcf53809c.png

在PyCharm中创建新项目并设置虚拟环

5. 点击“新建项目”。

6. 确认项目路径,确保选择“Virtualenv”。

9777eb58-e284-11ee-a297-92fbcf53809c.png

7. 打开一个终端。如果您的视图底部没有带标签的按钮,请查看以下内容:

978464aa-e284-11ee-a297-92fbcf53809c.png

8. 在终端提示符出现之前进行检查(venv),确认虚拟环境已设置。

9791f26e-e284-11ee-a297-92fbcf53809c.png

9.从终端安装驱动程序。

键入:pip install tm _ devices

97994e9c-e284-11ee-a297-92fbcf53809c.png

10. 确保终端没有出错!开始使用吧!

3.3

Visual Studio Code

Visual Studio Code是另一款各行各业的软件开发人员都在使用的免费IDE。其适用于大多数语言,且具有针对大多数语言的扩展包,因此用户能够在此IDE中快捷高效地进行编码。Visual Studio Code可提供IntelliSense。IntelliSense是非常实用的开发工具,有助于代码补全、参数信息以及其他有关对象和类的信息。tm_devices支持对描述对象和类的命令树快速进行代码补全。

4

示例代码

在本节中,我们将逐步介绍一个简单的代码示例,并重点介绍一些有效使用tm_ devices的必要组件。

4.1

导入

97c7a77e-e284-11ee-a297-92fbcf53809c.png

这两行对于tm_devices的有效使用至关重要。在第一行中,我们导入DeviceManager。这将处理多个设备类的样板连接和断开。

在第二行中,我们导入一个特定的驱动程序(在本例中是MSO4B)

我们用DeviceManager设置一个上下文管理器:

97d5d128-e284-11ee-a297-92fbcf53809c.png

然后,当我们同时使用设备管理器和驱动程序时:

97df674c-e284-11ee-a297-92fbcf53809c.png

我们可以用与其型式匹配的特定命令集来实例化仪器。输入您仪器的ip地址(其他VISA地址也可)即可。

补全以上四行代码后,我们就可以开始为MSO4B编写特定的自动化代码了!

4.2

代码片段

接下来我们来看看几个简单的操作:

将触发类型设置为边沿触发

97f11582-e284-11ee-a297-92fbcf53809c.png

以下是添加和查询CH1峰-峰值测量值的方法:

97fb0704-e284-11ee-a297-92fbcf53809c.png

如果您想对CH2进行幅值测量:

9808178c-e284-11ee-a297-92fbcf53809c.png

5

使用IntelliSense/代码补全

IntelliSense——微软的代码补全系统,也是我们在尽可能利用的IDE的一个强大功能。

SCPI命令集是测试和测量设备自动化面临一大障碍。这是一种较为过时的结构,其语法在开发社区中并未得到广泛支持。

我们使用tm_devices所做的是为每个SCPI命令创建一组Python命令。我们可以从现有的命令语法中生成Python代码,避免手动开发驱动程序,并创建现有SCPI用户熟悉的结构。tm_devices还可映射在程序创建期间可能需要特意调试的底层代码。Python命令的结构模仿了SCPI(或在某些吉时利案例中的TSP)命令结构,因此如果您熟悉SCPI,您就知道这些结构。

以下是关于“IntelliSense如何显示先前键入的命令”的所有可用命令示例。

在Scope上的圆点后出现的可滚动列表中,我们可以看到按字母顺序排列的Scope命令类别列表:

980e4ca6-e284-11ee-a297-92fbcf53809c.png

选择afg,我们可以看到afg类别列表。

981adcaa-e284-11ee-a297-92fbcf53809c.png

在IntelliSense的帮助下编写的最终命令:

9826d51e-e284-11ee-a297-92fbcf53809c.png

6

文档字符串帮助

编写代码之时,或者查看其他人的代码时,您可以将鼠标悬停在语法的不同部分上,以获得该级别的特定帮助文档。越接近完整的命令语法,其内容就越具体。

983aa062-e284-11ee-a297-92fbcf53809c.png

根据您的IDE设置,您可以同时查看IntelliSense和文档字符串帮助。

9842565e-e284-11ee-a297-92fbcf53809c.png984d0cb6-e284-11ee-a297-92fbcf53809c.png

阅读本指南后,您可以了解泰克Python驱动程序包tm_devices的部分优势,接下来便可以开始您的自动化之旅了。通过简单的设置、代码补全和内置帮助,您无需离开IDE就能学习,进而可以加快开发速度,并以更高的信心进行编码。

如果您希望改进软件包,Github repo中有编辑指南。在文档和examples文件夹的软件包内容中突出显示了大量更高级的示例。

7

其他资源

tm_devices·PyPI——软件包驱动程序下载和信息

tm_devices Github——源代码、问题跟踪、编辑

https://github.com/tektronix/tm_devices#documentation ——在线文档

8

故障排除

通常情况下,故障排除的第一步是升级pip:

在您的终端键入:Python.exe -m pip install -upgrade pip

错误:whl看起来像文件名,但文件不存在或此平台不支持whl。

98c4e1dc-e284-11ee-a297-92fbcf53809c.png

解决方案:在pip中安装wheel,使其能够识别文件格式。

在您的终端键入:pip install wheel

如果您需要离线安装wheel,您可以遵循与附件A类似的说明,但其需要下载tar.gz格式文件而非.whl文件。


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15235

    浏览量

    171206
  • 示波器
    +关注

    关注

    111

    文章

    5661

    浏览量

    181784
  • LabVIEW
    +关注

    关注

    1918

    文章

    3619

    浏览量

    317001
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33136
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83468

原文标题:【操作指南】教你一招,简化仪器Python编程控制!

文章出处:【微信号:泰克科技,微信公众号:泰克科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    转载:每天学一招:设计Q&A

    学习他人经验就等于站在巨人的肩膀上创新,这里以Q&A的形式,把些实用设计技巧用简短等语句表述出来,帮助大家简化设计,欢迎大家跟帖补充!第一招:如何设计ADC前端的输入,以达到更好的性能
    发表于 07-15 09:52

    简单一招解决焊电路被烟熏的办法

    相信笔记本电脑的散热器大家都有吧,哈哈,一招搞定!贴图看效果:效果还不错,做硬件,焊电路的要多注意身体。
    发表于 03-07 09:17

    Labview与Python的网络编程

    Python与C系列相比,开发效率极高。如果用Python开发安卓APP,通过以太网控制Labview开发的自动化测试软件。将可以实现手机远程控制设备监控设备的功能。图片是我做的La
    发表于 11-12 13:48

    学会一招,精密小信号处理的目标就会变得很简单

    学会一招,低噪声,低偏移电压,低漂移的目标就会变得很简单
    发表于 04-09 07:11

    教你一招如何分辨PCB板层数

    教你一招如何分辨PCB板层数
    发表于 04-23 06:36

    教你一招如何去实现傅立叶变换算法?

    教你一招如何去实现傅立叶变换算法?
    发表于 04-30 06:05

    教你一招怎样去选择合适的CPLD

    CPLD有哪些优点?教你一招怎样去选择合适的CPLD
    发表于 05-06 09:48

    教你一招分分钟实现频谱仪带宽的正确设置

    教你一招分分钟实现频谱仪带宽的正确设置
    发表于 05-07 06:36

    教你一招定时器中断该怎么办?

    教你一招定时器中断该怎么办?
    发表于 05-14 06:34

    教你一招如何通过手机的芯片来判断手机的价格?

    教你一招如何通过手机的芯片来判断手机的价格?
    发表于 05-24 06:47

    教你一招如何去选择射频滤波器?

    教你一招如何去选择射频滤波器?
    发表于 05-28 07:05

    Python中的流程控制

    程控制无非就是if else之类的控制语句,今天我们来看Python中的流程控制会有什么不太
    发表于 06-28 08:54

    python基础语法及流程控制

    爬虫复习1.python基础python基础语法 流程控制 函数封装2.防爬措施整体防爬User-AgentrefererIP代理池Cookie代理池 各自防爬数据内部动态加载网页设置有干扰项标签
    发表于 08-31 07:41

    什么是Python中的流程控制

    什么是Python中的流程控制
    发表于 10-09 07:24

    教你一招RK31885.1蓝牙MAC怎样才能从模组中获取MAC地址

    教你一招RK31885.1蓝牙MAC怎样才能从模组中获取MAC地址
    发表于 02-18 06:28