有没有办法将吉时利数字源表的读取电流值传输到我的计算机上?

Is there a way to get the read current values from a Keithley SourceMeter onto my computer?

我正在执行扫描,一切正常!除了当我尝试打印它正在读取的当前值时……它打印的只是我使用的 SPCI 命令的字符数。这是代码:

import pyvisa
import time
import serial

 
# configure the serial connections (the parameters differs on the device you are connecting to)
ser = serial.Serial()
ser.port = 'COM3'

ser.baudrate = 9600
ser.open()
ser.isOpen


###Sweep
numberofiterations = 10
stepsize = 0.05
voltage = 0
currents = []
voltages = []

ser.write(str.encode('*RST' + '\r\n'))
ser.write(str.encode(':OUTP ON'+'\r\n'))

    
for iterations in range(numberofiterations):
    #record voltage
    voltages.append(round(voltage,5))
    #supply voltage
    ser.write(str.encode(':SOUR:FUNC VOLT'+'\r\n'))
    ser.write(str.encode(':SOUR:VOLT:MODE FIX'+'\r\n'))
    ser.write(str.encode(':SOUR:VOLT:RANG 20'+'\r\n'))
    ser.write(str.encode(':SOUR:VOLT:LEV '+str(voltage)+'\r\n'))

    #wait 
    time.sleep(1)

    #measure current
    ser.write(str.encode(':SENS:FUNC "CURR"'+'\r\n'))
    ser.write(str.encode(':SENS:CURR:PROT 10e-1'+'\r\n'))
    ser.write(str.encode(':SENS:CURR:RANG 10e-1'+'\r\n'))
    ser.write(str.encode(':SENS:CURR:RANG:AUTO ON'+'\r\n'))
    current = ser.write(str.encode(':READ?'+'\r\n')) #measure current
    currents.append(current) #record current
 
    #increase voltage
    voltage += stepsize
    

#Print out values
for current in range(len(currents)):
    print(currents[current])

for voltage in range(len(voltages)):
    print(voltages[voltage])

具体来说,这是弄乱我的代码的行:

current = ser.write(str.encode(':READ?'+'\r\n')) #measure current

为什么电脑测不到电流?当电流显示在屏幕上时,Keithley SourceMeter 正在正确测量它……我只是无法将这些值输入计算机。这里有什么问题?

谢谢!

ser.write 向串口写入字节,并简单地报告写入了多少字节。您需要使用 ser.read(读取一个字节)或一些辅助函数(您自己的或库提供的)来读取仪器的响应,这些函数可以理解 SCPI 命令的响应格式。

根据this reference, it looks like the SCPI response is delimited with a newline, so you should be able to write a command using ser.write and then call ser.readline()读取整行仪器输出,最多一个换行符。当然,您会收到 SCPI 格式的响应,因此您需要解析它以获得您的电路观察结果。

请注意,如果您处于仪器未写入输出的奇怪状态,但您正在 readline 调用中等待响应,您的程序可能会锁定。为串行端口设置超时会有所帮助。我对协议不够熟悉,不知道什么时候会发生。