一個更復雜的例程
下面的例程展示如何用SCPI命令從Keithley 2000萬用表讀取10個電壓值。在讀完之後,程序將計算出平均值並輸出到屏幕上。
讓我們一步一步的介紹程序。首先,初始化儀器:
>>> keithley = rm.open_resource( "GPIB::12" )
>>> keithley.write( "*rst; status:preset; *cls" )
|
此處,我們創建了變量keithley,這是進行深入操作儀器的基礎。緊隨其後,我們發送了初始化和復位命令到儀器。
下一步是發送測量參數給儀器,此處爲間隔時間(500ms)和讀取電壓值的數目(10)。我將不做更多解釋,請直接看SCPI命令和(或)Keithley 2000手冊。
>>> interval_in_ms = 500
>>> number_of_readings = 10
>>> keithley.write( "status:measurement:enable 512; *sre 1" )
>>> keithley.write( "sample:count %d" % number_of_readings)
>>> keithley.write( "trigger:source bus" )
>>> keithley.write( "trigger:delay %f" % (interval_in_ms / 1000.0 ))
>>> keithley.write( "trace:points %d" % number_of_readings)
>>> keithley.write( "trace:feed sense1; trace:feed:control next" )
|
現在,儀器已經準備好開始測量了。接下來的三行命令使儀器等待一個觸發脈衝,觸發它,並等待直到它發送一個服務請求信號。
>>> keithley.write( "initiate" )
>>> keithley.assert_trigger()
>>> keithley.wait_for_srq()
|
發送服務請求信號,儀器顯示測量結束並且結果已經準備好傳輸。我們可以用 keithley.query("trace:data?")獲取數據,得到如下結果:
- 000.0004E + 0 , - 000.0005E + 0 , - 000.0004E + 0 , - 000.0007E + 0 ,
- 000.0000E + 0 , - 000.0007E + 0 , - 000.0008E + 0 , - 000.0004E + 0 ,
- 000.0002E + 0 , - 000.0005E + 0
|
然後,我們將其轉換成python的數值列表。函數query_assii_values可以完成這項任務。
>>> voltages = keithley.query_ascii_values( "trace:data?" )
>>> print ( "Average voltage: " , sum (voltages) / len (voltages))
|
最後,我們需要復位儀器的數據緩存區和SRQ狀態寄存器,以便準備新一次的測量。這些在儀器手冊上有詳細的說明。
>>> keithley.query( "status:measurement?" )
>>> keithley.write( "trace:clear; trace:feed:control next" )
|
瞧,這就是簡潔的18行代碼(自然SCPI命令是比較繁瑣的,那又是另一回事了)。