在Linux中使用Python和USBTMC将信号加载并读取到波形发生器中?
我需要将显示的信号加载到波形发生器中 通过USBTMC驱动波形发生器的代码: 我使用了以下代码创建示例代码 如何将创建的啁啾信号加载到波形发生器中?USBTMC是USB测试和测量类。这些命令是SCPI命令。必须加载的驱动程序系统驱动程序是usb_tmc。插入安捷伦设备后,在dmesg的输出中检查这一点。然后,波形发生器应出现在系统上的/dev/usbtmcx或/dev/ttySx中,并用数字替换x 配置接口 最近的Linux内核支持现成的USBTMC。连接你的 检测并检查是否存在/dev/usbtmc*。设置适当的 对/dev/usbtmc的权限* 打开USB仪器t0=usbtmc'/dev/usbtmc0'的接口 写入侦听器:usbtmc_writet0,*IDN?“ 阻塞读取调用[二进制读取],返回uint8数组数据=usbtmc_readt0,10000 将uint8数组转换为字符串、字符数据 关闭usbtmc会话usbtmc\u关闭0 不是Python;是,仅显示基本用法 在Python中,它是类似的。看 在插入安捷伦设备时,首先检查dmesg是否加载了驱动程序usb_tmc,并按照创建udev规则的说明进行操作,…,检查是否显示/dev/usbtmc0等 如果一切正常,编写一个简单的测试脚本,查看安捷伦设备是否响应:在Linux中使用Python和USBTMC将信号加载并读取到波形发生器中?,python,usb,Python,Usb,我需要将显示的信号加载到波形发生器中 通过USBTMC驱动波形发生器的代码: 我使用了以下代码创建示例代码 如何将创建的啁啾信号加载到波形发生器中?USBTMC是USB测试和测量类。这些命令是SCPI命令。必须加载的驱动程序系统驱动程序是usb_tmc。插入安捷伦设备后,在dmesg的输出中检查这一点。然后,波形发生器应出现在系统上的/dev/usbtmcx或/dev/ttySx中,并用数字替换x 配置接口 最近的Linux内核支持现成的USBTMC。连接你的 检测并检查是否存在/dev/usb
import usbtmc
instr = usbtmc.Instrument(2391, 5973) // The 2391 and 5973 are USB idVendor and idProduct of the Agilent MSO7104A converted to decimal
print(instr.ask("\***IDN?"))
# returns 'AGILENT TECHNOLOGIES,MSO7104A,MY********,06.16.0001'
然后编写一个Python“驱动程序”,将标准TMC命令映射到Python函数read、write、,。。。像美国的btmc.py。你有这个
中有一个非常基本的波形发生器控制脚本
如果要设置频率,请写入SCPI命令FREQ,后跟所需值:
freq = 1000
write("FREQ %f" % freq)
amplitude = 5
write("VOLT %f" % amplitude)
如果要设置振幅,可写入命令VOLT,后跟所需值:
freq = 1000
write("FREQ %f" % freq)
amplitude = 5
write("VOLT %f" % amplitude)
复杂的部分是创建和下载二进制任意文件
您不能直接使用NumPy矩阵加载安捷伦,因为它只接受特殊的二进制文件,因此必须将chirp矩阵转换为二进制文件。见第42、62页。也许可以将第62页上的示例翻译成Python来生成二进制arb文件
创建波形二进制arb文件时,可以使用C中的SCPI写入操作传输它
在使用类似于上面的Python驱动程序时转换为Python,可以是:
二进制写入源1:数据:任意测试b,,z,true;二进制写入
看
在第234页的用户指南中,ff也是相关SCPI命令的摘要。在互联网上搜索“安捷伦书写arb”
在仪器控制工具箱中,有一个名为Quick Control Function Generator的MATLAB工具箱解决了这个问题