python 仪器控制_python 用于仪器控制

已发布到:http://git.oschina.net/fml927/Python-Instrument-Command-Tool

Python 用于仪器控制的demo。

文件名后缀修改为“.pyw”即可在启动时不显示windows命令窗口!

1.[文件] VisaCmdTool_cn.py ~ 4KB     下载(21)

#!/bin/env python

# -*- coding:cp936 *-*

from visa import *

import wx

'''

Author: Shawn Feng

Email: FML927@gmail.com

Discription:依赖 NI-visa驱动, python2.7, PyVisa, wxpython安装包。

实现与仪器通讯、控制命令的发送和信息读取。类似于NI-max的仪器连接通讯控制工具

Version:0.1-python2.7-cn

'''

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)

#定义按键并注册事件处理函数

RefButt = wx.Button(self.panel, label = "刷新仪器", pos=(450, 20), size=(100,30) )

self.Bind( wx.EVT_BUTTON, self.RefreshButt, RefButt )

#定义按键并注册事件处理函数

TestButt = wx.Button(self.panel, label = "仪器连接测试", pos=(450, 60), size=(100,30) )

self.Bind( wx.EVT_BUTTON, self.TestButtClick, TestButt )

#查找仪器列表

self.RefreshButt(wx.EVT_BUTTON)

#send

wx.StaticText(self.panel, -1, "发送命令:", (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, "返回结果:", (20,200), (100,20))

self.readBox = wx.TextCtrl(self.panel, -1, "", pos = (20,220), size=(400,100))

#三个按钮

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()) )

#查找全部仪器 并列出

def RefreshButt(self, event):

wx.StaticText(self.panel, -1, "仪器列表:", (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()

2.[文件] VisaCmdTool_en.py ~ 4KB     下载(15)

#!/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()

3.[图片] python command tool.JPG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值