2.[文件]
VisaCmdTool_en.py ~ 4KB
下载(20)
#!/bin/env python
# -*- coding: utf-8 *-*
from visa import *
import wx
'''
Author: Shawn Feng
Email: FML927@gmail.com
Discription: Depend on NI-visa driver, python2.7, PyVisa, wxpython Installed。
Like NI-max command tool, send command to instrument and read from instrument.
Version:0.1-python2.7-en
'''
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Cmd Test 1.0 by FML use python", size=(600, 420))
self.panel = wx.Panel(self, -1)
#define button and register process function
RefButt = wx.Button(self.panel, label = "Refresh", pos=(450, 20), size=(100,30) )
self.Bind( wx.EVT_BUTTON, self.RefreshButt, RefButt )
#define button and register process function
TestButt = wx.Button(self.panel, label = "Test", pos=(450, 60), size=(100,30) )
self.Bind( wx.EVT_BUTTON, self.TestButtClick, TestButt )
#find instrument
self.RefreshButt(wx.EVT_BUTTON)
#send
wx.StaticText(self.panel, -1, "Send", (20,70), (100,20))
self.sendBox = wx.TextCtrl(self.panel, -1, "*idn?", pos = (20,90), size=(400,100))
#read text
wx.StaticText(self.panel, -1, "Read", (20,200), (100,20))
self.readBox = wx.TextCtrl(self.panel, -1, "", pos = (20,220), size=(400,100))
#3 control button
SendButt = wx.Button(self.panel, label = "SEND", pos=(20, 340), size=(100,30) )
self.Bind( wx.EVT_BUTTON, self.SendButtClick, SendButt )
ReadButt = wx.Button(self.panel, label = "READ", pos=(220, 340), size=(100,30) )
self.Bind( wx.EVT_BUTTON, self.ReadButtClick, ReadButt )
SendReadButt = wx.Button(self.panel, label = "SEND && READ", pos=(420, 340), size=(150,30) )
self.Bind( wx.EVT_BUTTON, self.SendReadButtClick, SendReadButt )
#self.TestButtClick(wx.EVT_BUTTON)
def SendButtClick(self, event):
if self.Conn:
self.inst.write(self.sendBox.GetValue())
def ReadButtClick(self, event):
if self.Conn:
self.readBox.Clear()
self.readBox.AppendText( self.inst.read())
def SendReadButtClick(self, event):
if self.Conn:
self.readBox.Clear()
self.readBox.AppendText( self.inst.ask(self.sendBox.GetValue()) )
#find all instrumen
def RefreshButt(self, event):
wx.StaticText(self.panel, -1, "Inst List:", (20,5), (100,20))
NameList = get_instruments_list()
#self.listBox = wx.ListBox(self.panel, -1, (20,20), (400,120), NameList, wx.LB_SINGLE )
self.listBox = wx.Choice(self.panel, -1, (20,30), (400,120), NameList )
self.Bind( wx.EVT_CHOICE, self.ChoiceChange, self.listBox )
#self.listBox.SetSelection(0)
def ChoiceChange(self, event):
self.OpenInst()
def OpenInst(self):
self.Conn = False
if self.listBox.GetCurrentSelection() != -1:
instname = self.listBox.GetString(self.listBox.GetCurrentSelection())
#print instname
self.inst = instrument(instname)
self.readBox.Clear()
self.Conn = True
def TestButtClick(self, event):
self.OpenInst()
if self.Conn:
self.readBox.Clear()
self.readBox.AppendText( self.inst.ask( "*idn?") )
def OnMove(self, event):
pos = event.GetPosition()
self.posCtrl.SetValue("%s, %s" % (pos.x, pos.y))
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show(True)
app.MainLoop()