python实验总结心得体会_Python,Pyvisa操作Agilent 86140x系列OSA

1,背景

本人做光学的。。。最近研究实验偏向通信

做WDM实验的时候发现能用实验室TCP/IP通信的光谱仪(OSA)都被用了,翻翻找找只在角落找到一台Agilent 68146B的OSA。。。就是下图这个货,

abe16bc3aaf31dc95e4a7b457e8a9b3b.png

想要捞取光谱数据,你看到那个软盘接口了吗。。。已经2020年奔小康了,我去哪找个软盘去读取呢,就算有软盘我笔记本也没有软盘口了。。

9cb8d6f0959ab48acbd7a5221ca09f3b.png

软盘测试取光谱数据肯定是不可能了,而且在测试方案设计上,需要不停的扫描WDM auto sacn模式去取得信噪比OSNR和功率power,然后利用判据去反馈调节光网络其他参数。

好消息是OSA后面有个GPIB的接口,后面经过调研(百度+bing),发现GPIB还是能用的,然鹅我的电脑也没有GPIB的口子,找了半天找到一根满是蜘蛛网的GPIB-USB的转接线。望着这一堆破烂。。我

12bf9be6c10684bad6e6e1aadc2dc0a9.png

后面在百度上看到有个类似的文章,也是用python控制仪器,关键的库为pyvisa。由于我研一用过python去爬过小姐姐,那段时间身体消瘦的特别快咳咳,也用xlwings对光谱数据进行过处理,因此对这个比较感兴趣。

这里实名感谢一下 @Luyao Zou 这个大哥的文章,特别致谢!给了我很大的启发,也让我意识到用python做成这件事情的可能性~,爱你!原文我摘取一部分,用python你能干什么事情

我的科研工作大量依赖自己开发的 Python 程序和脚本。比如,用 Python 和 PyVisa 控制实验仪器,用 numpy 和 scipy 拟合光谱

27ba477b4d99613c7bbd323dd0a35f5f.png

看到成功先例之后,后面我自己理解了一下仪器remote control的逻辑,其实就是分三部分。

  1. 通信协议以及驱动,包括当前流行的TCP/IP,或者RS232或者COM口通信以及早期GPIB通信,用于提供管道进行信息交互
  2. 仪器本身的编程手册,即发送给仪器的命令(SCPI协议?),将仪器的命令通过通信协议(TDC/IP,GPIB等)发送给仪器
  3. 实验逻辑,这个需要自己去制定专业的实验方案,和python没什么关系了,用py进行控制

有了上述三步,后面的事情就简单了(并不)

8426c2ea5412c043e9d131b07a4049b4.png

首先是装驱动天坑。。。,我用来实验的笔记本win7 32的,大概花了两天才从那根GPIB-USB的adlink官网的角落下载到了32位的驱动,然后找了半天NI-VISA,找到了一个非常古老的NI-VISA504离线版本装上了。。。通信协议以及驱动部分花了大概三天就完成了

第二步是装pyvisa,这个相比之下是最easy的了,直接pip install pyvisa就搞定了。安装失败一般是pypi的网速问题,请用国内阿里的源或者清华的源即可。

第三步去bing上面找了一圈PDF,都是OSA的编程指令,花了三小时调试好了老爷机,下面直接上光谱仪的WDM_AutoScan部分的代码,定义了一个类方便在实验的中控py文件调用

# -*- coding: utf-8 -*-
#!/usr/bin/pythonimport pyvisa
import xlwings as xw
import os
import matplotlib 
import visa
import time
import paramiko#author_jzk 2020-7-22
#class OSA,仪器的指令不大好记,获取WDM模式下的波长,功率以及OSNR值class OSA():"""docstring for OSA"""'''初始化OSA,连接'''def __init__(self):osa_GPIB='GPIB0::25::INSTR'									#GPIB口self.rm=visa.ResourceManager()								#open visaself.instrument=self.rm.open_resource(osa_GPIB)				#connect agilent osaprint('----------------> the OSA is connected successful n')def close(self):self.instrument.close()print('the osa connect is closed......')def wdm_AutoScan(self):'''进入WDM扫描光谱模式'''self.instrument.write('inst:sel "WDM_Autoscan"')		print('----------------> now the OSA is using sub-system ----WDM Spectrum n')print('wait the sub-systems end for 20s ')time.sleep(20)def wdm_sweep(self):'''WDm auto test operation'''self.instrument.write('INITiate:IMMediate')print('----------------> auto-scan is running now, wait for 15s n')time.sleep(14)def wdm_wav_get(self):'''get channel wavelength'''wve=[]try:print('----------------> wavelength is calculating---')str_wve=self.instrument.query('CALCulate:DATA:CWAVelengths?').split(',')for i in str_wve:wve.append(float(i))time.sleep(1)return wveexcept Exception as e:print('------->None data is calculated, please check the optical input')raise edef wdm_OSNR_get(self):'''get osnr '''osnr=[]try:print('----------------> OSNR is calculating---')str_osnr=self.instrument.query('CALCulate:DATA:CSNR?').split(',')for i in str_osnr:osnr.append(float(i))time.sleep(1)return osnrexcept Exception as e:print('------->None data is calculated, please check the optical input')raise e# 获取对应信号的功率def wdm_Power_get(self):power = []try:print('----------------> the power is calculated')str_power = self.instrument.query('CALCulate:DATA:CPOWers?').split(',')for i in str_power:power.append(float(i))time.sleep(0.5)return powerexcept Exception as e:print('------> None data is get, please check the optical input...')raise e#single sweep一遍'''def sweep(self):self.instrument.write('init:imm')print('take a sweep for osa,please wait for 2 seconds until it is ended')time.sleep(0.5)

总结,python很多人都是从很多看起来就很热的小姐姐爬虫程序开始,但是后面可以做什么还是看个人的想象力和使用工具方式,无论是前阵子用xlwings来画图或者干别的都行

大佬们 @Luyao Zou 那篇文章都是2017年的了,也是我爬很热的小姐姐最多的那阵子,三年过去了终于开始使用工具走上正路了,俺导师看到这个估计也会替我高兴吧hhh,后续的GUI还没需求,有需求准备再挖个坑写一篇hhh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cgcs2000高斯平面直角坐标_如何巧妙记忆高斯积分

高斯积分作为一种特殊的反常积分,其应用范围相当广泛,无论是在概率论中所引入的高斯分布(亦称正态分布),还是在统计物理中的相关应用,都表明其有着至关重要的作用。下面我们来介绍一种记忆高斯积分的方法&a…

基于.NET Core的优秀开源项目合集

开源项目非常适合入门,并且可以作为体系结构参考的好资源, GitHub中有几个开源的.NET Core项目,这些项目将帮助您使用不同类型的体系结构和编码模式来深入学习 .NET Core技术, 本文列出了不同类别的优秀的开源项目。???? eShopOnContainerseShopOnCo…

提高计算机软件速度的方法,小白看过来!提高电脑速度8种实用方法

当电脑使用一段时间之后,常常会遇到运行速度逐渐变缓的情况,甚至卡顿死机,非常影响体验。那么有什么办法可以快速便捷的提高电脑运行速度呢?下面就教你8种办法,让电脑恢复飞速运行状态。1.关闭自动更新电脑总是自动更新&#xff…

C# Task 循环任务_C# Task.Run调用外部参数

首先讲一下:c# Task启动带参数和返回值的方法:Task启动带参数Task.Run(() > test("123"));public void Test(string s){...todo..}Task启动带参数和返回值的方法var s Task.Run(() > isTest("ss"));var t s.Result;private …

如何向K8s,Docker-Compose注入镜像Tag

最近在做基于容器的CI/CD, 一个朴素的自动部署的思路是:从Git Repo打出git tag,作为镜像Tagssh远程登录到部署机器向部署环境注入镜像Tag,拉取镜像,重新部署下面分享我是如何在K8s、docker-compose中注入镜像Tag?k8s熟…

职称计算机还用考试,职称计算机考试注意事项

职称计算机考试注意事项一、注意事项首先,由于考试是模块化设计,所以在报考时要选择自己熟悉的科目。切忌好高骛远,选择那些自己日常使用机会不多、并无把握的科目。许多人在考试时选择了自己工作中最常用的Windows XP、Word 2003、PowerPoin…

python安装地是什么_如何安装python

展开全部 Python是跨平台的,可以运行在2113Windows、Mac和各种Linux/Unix系统上5261。在Windows上写Python程序,放到Linux上也是能够4102运行的。 要开始学习1653Python编程,首先就得把Python安装到电脑里。安装后,会得到Python解…

ABP vNext 实现租户Id自动赋值插入

背景在使用ABP vNext过程中,因为我们的用户体系庞大,所以一直与其他业务同时开发,在开发其他业务模块时,我们一直存在着误区:认为ABP vNext 自动处理了数据新增时的租户Id(TenantId)的自动赋值插…

深入研究.NET 5的开放式遥测

OpenTelemetry 介绍OpenTelemetry是一种开放的源代码规范,工具和SDK,用于检测,生成,收集和导出遥测数据(指标,日志和跟踪),开放遥测技术得到了Cloud Native Computing Foundation(CN…

.NET5实战千万并发,性能碾压各版本,云原生时代,.NET5为王!

在移动互联网时代掉队的.NET,当下正凭借着.NET5的开源跨平台以及容器友好,在云原生时代正在重铸辉煌。而作为.NET开发者,新年跳槽季的高并发问题会更多了,因为高并发能牵扯出太多问题,接口响应超时、CPU负载升高、GC频…

html点击按钮计算两个输入框的和_小程序计算报价功能介绍

一、使用场景用户可在管理后台设置计算值和运算公式,访客输入对应计算值,即可实现自动计算出结果,并提供相关的咨询入口,适用于装修、建材、房贷、车险等行业的报价行为。二、功能版本限制小程序至尊版可开启和使用计算报价功能。…

用python画树_Python+Turtle动态绘制一棵树实例分享

本文实例主要是对turtle的使用,实现Pythonturtle动态绘制一棵树的实例,具体代码: # drawtree.py from turtle import Turtle, mainloop def tree(plist, l, a, f): """ plist is list of pens l is length of branch a is hal…

[ASP.NET2.0] asp.net在ie7中使用FileUpload上传前预览图片 [ZT]

asp.net在ie7中使用FileUpload上传前预览图片 因为安全性问题&#xff0c;IE7禁用了image控件引用本地图片&#xff0c;为了这个问题郁闷了好几天&#xff0c;终于找到了解决方案&#xff0c;好东西要与大家分享&#xff0c;代码如下&#xff1a;此段代码放于<head> ....…

360浏览器5兼容模式吗_个独模式真能将企业总体税负降低至5%吗,为何大家都热衷核定征收...

个独模式真的能将企业总体税负降低至5%吗&#xff0c;为何大家都热衷选择申请核定征收企业性质不同&#xff0c;结构不同&#xff0c;体量不同&#xff0c;业务模式不同&#xff0c;自然纳税方式和税负也有差别。不同的纳税对象应该采取不同的节税方式&#xff0c;用合理合法的…

python3 for循环_从零开始学习PYTHON3讲义(六)for循环跟斐波那契数列

《从零开始PYTHON3》第六讲 几乎但凡接触过一点编程的人都知道for循环&#xff0c;在大多数语言的学习中&#xff0c;这也是第一个要学习的循环模式。 但是在Python中&#xff0c;我们把for循环放到了while循环的后面。原因是&#xff0c;Python中的for循环已经完全不是你知道的…

Yahoo Mail,慢功出细活〔转载〕

Yahoo Mail&#xff0c;慢功出细活2007年08月31日13:59 原文链接&#xff1a;http://chinese.wsj.com/gb/20070831/ptk141709.asp?sourcechannel用两年时间测试一款软件可真算费功夫&#xff0c;但雅虎公司(Yahoo! Inc.)开发完成新版本的电子邮箱软件Yahoo Mail就花了这么长…

浅谈如何理解领域驱动设计

本文作者为长沙.NET社区开发者微笑刺客&#xff0c;转载已获得作者授权。前言什么是领域&#xff0c;我习惯描述的是制药领域、环境领域、建筑领域、金融领域等&#xff0c;而在领域内&#xff0c;各种业务规则、业务知识盛行&#xff0c;如何有效的把控规则的变化&#xff0c;…

lol战绩查询接口_LOL:莫名其妙被封号?3把躺赢局被说是代打

Hello&#xff0c;大家好&#xff0c;这里是小皮说电竞&#xff0c;每天都会为大家带来LOL有趣的资讯&#xff0c;喜欢的话记得点个关注哦~英雄联盟已经发展至S10了&#xff0c;这么久以来&#xff0c;许多小伙伴都碰到过一个问题&#xff0c;那就是封号。封号的原因有很多&…

apk源码查看工具_如何查看Linux命令工具的源码?

点击上方「嵌入式大杂烩」&#xff0c;「星标公众号」第一时间查看精彩文章&#xff01;上一篇分享了两个使用的小工具&#xff1a;《如何同时输出调试信息到终端及文件&#xff1f;》。有位小伙伴留言问道tee工具的代码在哪&#xff1a;这篇文章我们就来简单分享一下。首先&am…

final类是否可以被代理_浅谈Java【代理设计模式】——看这篇文章就懂了

什么是代理模式为其他对象提供一种代理以控制对这个对象的访问。为什么使用代理模式中介隔离&#xff1a;在某些情况下&#xff0c;一个客户类不想或者不能直接引用一个委托对象&#xff0c;而代理类对象可以在客户类和委托对象之间起到中介的作用&#xff0c;其特征是代理类和…