湖南郴州建设局网站,深圳公司注册需要资料,手机优化如何弄到100,wordpress默认登录1#xff0c;背景本人做光学的。。。最近研究实验偏向通信做WDM实验的时候发现能用实验室TCP/IP通信的光谱仪(OSA)都被用了#xff0c;翻翻找找只在角落找到一台Agilent 68146B的OSA。。。就是下图这个货#xff0c;想要捞取光谱数据#xff0c;你看到那个软盘接口了吗。。…1背景本人做光学的。。。最近研究实验偏向通信做WDM实验的时候发现能用实验室TCP/IP通信的光谱仪(OSA)都被用了翻翻找找只在角落找到一台Agilent 68146B的OSA。。。就是下图这个货想要捞取光谱数据你看到那个软盘接口了吗。。。已经2020年奔小康了我去哪找个软盘去读取呢就算有软盘我笔记本也没有软盘口了。。软盘测试取光谱数据肯定是不可能了而且在测试方案设计上需要不停的扫描WDM auto sacn模式去取得信噪比OSNR和功率power然后利用判据去反馈调节光网络其他参数。好消息是OSA后面有个GPIB的接口后面经过调研百度bing发现GPIB还是能用的然鹅我的电脑也没有GPIB的口子找了半天找到一根满是蜘蛛网的GPIB-USB的转接线。望着这一堆破烂。。我后面在百度上看到有个类似的文章也是用python控制仪器关键的库为pyvisa。由于我研一用过python去爬过小姐姐那段时间身体消瘦的特别快咳咳也用xlwings对光谱数据进行过处理因此对这个比较感兴趣。这里实名感谢一下 Luyao Zou 这个大哥的文章特别致谢给了我很大的启发也让我意识到用python做成这件事情的可能性~爱你原文我摘取一部分用python你能干什么事情我的科研工作大量依赖自己开发的 Python 程序和脚本。比如用 Python 和 PyVisa 控制实验仪器用 numpy 和 scipy 拟合光谱看到成功先例之后后面我自己理解了一下仪器remote control的逻辑其实就是分三部分。通信协议以及驱动包括当前流行的TCP/IP或者RS232或者COM口通信以及早期GPIB通信用于提供管道进行信息交互仪器本身的编程手册即发送给仪器的命令SCPI协议将仪器的命令通过通信协议TDC/IPGPIB等发送给仪器实验逻辑这个需要自己去制定专业的实验方案和python没什么关系了用py进行控制有了上述三步后面的事情就简单了并不首先是装驱动天坑。。。我用来实验的笔记本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_GPIBGPIB0::25::INSTR #GPIB口self.rmvisa.ResourceManager() #open visaself.instrumentself.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 operationself.instrument.write(INITiate:IMMediate)print(---------------- auto-scan is running now, wait for 15s n)time.sleep(14)def wdm_wav_get(self):get channel wavelengthwve[]try:print(---------------- wavelength is calculating---)str_wveself.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_osnrself.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