我只用过通过RS232串口、GPIB并口、网口、usb口通信的仪器。其中,RS232串口、GPIB并口非常非常简单,网口我没咋用过,应该也不难。最麻烦的是usb口通讯,比如newport的光学延迟线,这个得看说明书,一般是厂家给你一个动态链接库xxx.dll,通过调用dll中的函数去控制仪器。其实,我只用过labview去封装dll里的函数(labview用了好多年,奈何它不是开源的),用python封装应该也不难,百度一下就能知道(有时间的话,我会替大家百度)。
这篇文章只适合需要自己diy简单测量系统的穷逼搬砖狗。
仪器控制常用的python包
pyvisa:这个要先安装ni-visa,visa是对串口、GPIB、网口等通讯接口的封装,很常用。
serial:不想用visa进行串口通讯,可以用serial这个包。
pymeasure:这个包对测量过程和一些常用仪器进行了进一步的封装,具体可以去看它的文档。这个包不建议新手用,虽然它可以很方便的写出边测量边画图的程序,新手还是建议老老实实写简单的测量程序。别人写的复杂的包虽好,如果文档读的不好,很容易出错。测量嘛,程序越简单越不容易出错,要做到:只要电脑不死机,测量好几天都不能出错。
time:这个包用来设置时间延迟,比如:执行写入电流命令之后,等多少秒,再执行读取电压命令。
numpy:这个就不说了,太常用了。
matplotlib:用来画图。
至于python软件,建议直接安装Anaconda或者Miniconda,界面我用的Jupyter(并不好用),建议直接用Spyder。
测量之前,查看已连接仪器的程序
python程序代码:
import pyvisa #visa一般能看所有接口的仪器
import serial #我比较喜欢用serial控制有串口仪器,不喜欢用visa
import serial.tools.list_ports #用来列出说有串口
rm = pyvisa.ResourceManager() #得到visa的ResourceManage
port_list = list(serial.tools.list_ports.comports()) #得到所有串口
print(rm.list_resources()) #打印所有visa封装的接口(一般会包含下面的串口,只不过名字不太一样)
if len(port_list) == 0:
print(‘无可用串口’)
else:
for i in range(0,len(port_list)):
print(port_list[i]) #打印所有的串口
输出(我这台电脑只有12个串口):
(‘ASRL1::INSTR’, ‘ASRL2::INSTR’, ‘ASRL3::INSTR’, ‘ASRL4::INSTR’, ‘ASRL5::INSTR’, ‘ASRL6::INSTR’, ‘ASRL7::INSTR’, ‘ASRL8::INSTR’, ‘ASRL9::INSTR’, ‘ASRL10::INSTR’, ‘ASRL14::INSTR’, ‘ASRL19::INSTR’)
COM10 - USB Serial Port (COM10)
COM14 - USB-SERIAL CH340 (COM14)
COM1 - 通信端口 (COM1)
COM2 - 通信端口 (COM2)
COM3 - 通信端口 (COM3)
COM4 - 通信端口 (COM4)
COM5 - 通信端口 (COM5)
COM6 - 通信端口 (COM6)
COM8 - ADLINK CPL64 Port 0 (COM8)
COM9 - ADLINK CPL64 Port 1 (COM9)
COM7 - Intel® Active Management Technology - SOL (COM7)
COM19 - Prolific USB-to-Serial Comm Port (COM19)
简单控制程序之——两路串口继电器控制(只有写,没有读)
继电器淘宝链接:【淘宝】https://m.tb.cn/h.UAHwoOY?tk=ysh4dr9Hcec CZ0001 「LCUS型 USB继电器模块 电脑串口控制开关 PC智能控制器」 点击链接直接打开 或者 淘宝搜索直接打开
这个继电器的用途是:对于穷逼实验室,买不起双极性电源给电磁铁(穷逼可以自己绕电磁铁)供电,可以买个好一点的线性直流电源,配合这个继电器给电流换向,实现双极性电源的功能。这样就可以实现加正负磁场的测量。</