Posts

Showing posts from November, 2016

Python Visa

Image
背景 作为一名凝聚态物理学生,做科研的大部分时间都在和各种测量仪器打交道,我最常用的要数Keithley 2400, 2410等测量电信号的仪器了,Keithley仪器的分辨率还是很高的,2400测量电压和电流都能精确到纳(10^-9)的量级,6517更是能达到皮(10^-12)的量级, 非常了不起。实验室用来控制这几台仪器的程序都是Labview程序,属于G语言吧,研一刚进实验室的时候师姐给我讲了一个多小时才给我讲明白一个简单测量IV的程序流程,研一寒假前为了能够实现Labview调用的子程序中的一个参数能够在图表上实时显示,费了老大劲了,虽然最终实现了,但现在基本忘记怎么做的了,总之很复杂。看一下Labview的程序(其实就是画图啦: 前面板UI还好,但后面板程序图真是太不具有可读性啦,扩展性也很差,想添加个新功能得画半天图,于是我想如果能用Python控制这些测量仪器就好啦,这样就可以把每个测量功能封装成一个函数,需要扩展新功能的话直接调用再修改就好啦,抱着试试看的态度(买了一疗程)在github上搜索Keithley真的搜出来几条Python写的控制程序,好开心,于是下定决心把自己常用的几个Labview测量程序Python化! 1. 环境搭建 首先是接口的连接,要通过Python连接上GPIB接口需要对应的库,这里用到的是pyvisa, 官方教程在 这里 , 我用的Python IDE是pycharm,所以直接在pycharm上搜索安装pyvisa就好了(真的很方便),但根据pyvisa的说明还需要安装 National Instruments’s VISA ,去 官网 下载适合自己电脑的版本,由于目前Linux平台只支持32位的,而我的是Ubuntu 14.04LTS,没办法,只好装在win10上了,pyvisa和National Instruments’s VISA都安装成功后就可以进行下一步了 2. 连接仪器 如果用的台式机,又有GPIB扩展槽,直接连上仪器就行了,我用的笔记本,所以还需要一条USB-GPIB线,这里用的是KUSB-488A ,第一次用肯定要装驱动的,若不能自动安装则需要去官网下载驱动,一切就绪后,执行以下Python语句以检测是否成功连上仪器: import visa rm = visa.Resou