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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《真实世界的Python仪器监控:数据采集与控制系统自动化》是2013年 出版的图书,作者是休斯。ISBN 978-7-121-18659-2 本书主要帮助读者了解如何通过自行开发应用程序来监视或者控制仪器硬件。本书内容涵盖了从接线到建立接口,直到完成可用软件的整个过程。 本书适合需要进行仪表控制、机器人、数据采集、过程控制等相关工作的读者阅读参考。 目录编辑 第1 章仪器学概论........................................................ 1 数据采集.........................................................................2 控制输出................................................................................4 开环控制 ...............................................................5 闭环控制.........................................................6 顺序控制.............................................8 应用概观.............................................................9 电子测试仪器...........................................................9 实验室仪器..............................................................11 过程控制..........................................................12 小结............................................................................14 第2 章基本电子学...................................................... 15 电荷..............................................................15 电流..................................................................17 基础电路理论..........................................18 电路原理图.......................................................20 直流电路特性.................................................23 欧姆定律...........................................24 电流吸入与电流输出.................................26 再谈电阻 ......................................27 交流电路...............................................28 正弦波.......................................29 电容器.......................................................30 电感器.......................................................................34 其他波形:方波、斜波、三角波和脉冲.............................................37 接口.............................................................38 离散数字I/O.......................................................38 模拟I/O.................................................42 计数器与定时器.......................................46 脉宽调制........................................48 串行I/O.............................................49 并行I/O........................................51 小结.......................................................53 推荐阅读....................................................54 第3 章 Python 编程语言.............................................. 55 安装Python.................................................................56 Python 编程...............................................................57 Python 的命令行 ................................................57 命令行参数和环境.....................................58 Python 中的对象...........................................59 Python 中的数据类型..............................................60 表达式........................................................73 操作符..................................................73 语句........................................................79 字串..........................................................86 程序组织.............................................91 模块导入........................................101 加载并运行Python 程序.................................104 基础输入输出.........................................106 提示和技巧................................110 Python 开发工具................................112 编辑器和IDE...................................................112 调试器....................................115 小结...................................................115 推荐阅读.................................................115 第4 章 C 语言编程.................................................... 117 安装C 语言编程环境 ...................................117 使用C 语言开发软件........................118 一个简单的C 程序........................119 预处理指令....................................122 标准数据类型.....................................126 用户定义类型 ..................................127 操作符................................................127 表达式........................................136 语句.....................................................136 数组和指针..................................143 结构..............................................146 函式..........................................150 标准库...........................................151 编译C 程序...................................152 C 语言综述 ........................................156 C 开发工具............................................156 小结............................................................157 推荐阅读...........................................................157 第5 章 Python 扩展................................................... 159 用C 建立Python 扩展...................................160 Python 的C 扩展API.......................................161 扩展代码的模块组织 .....................................161 Python API 类型和函数.................................163 方法表.................................................163 方法标记......................................164 传递数据..................................................165 使用Python 的C 扩展API............................167 通用离散I/O API..............................................167 通用包装器示例..............................................169 调用扩展...................................................173 Python 的ctypes 外部函数库...............................177 用ctypes 载入外部DLL........................177 ctypes 中的基本数据类型................178 使用ctypes...................................................179 小结................................................................179 推荐阅读...............................................180 第6 章硬件:工具与耗材.......................................... 181 必备工具....................................................181 手工工具..........................................182 数字万用表..............................................184 焊接工具.........................................187 最好能有的工具..................................189 高级工具...................................................190 示波器..........................................190 逻辑分析仪.................................192 测试设备注意事项........................194 耗材................................................194 全新和二手 ..........................................195 小结...............................................196 推荐阅读..................................................196 第7 章物理接口........................................................ 197 连接器.............................................................197 DB 型连接器.........................................198 USB 连接器...........................................201 圆形连接器...............................................202 接线端子................................................203 接线...................................................205 连接器失效.........................................207 串行接口..................................................208 RS-232/EIA-232............................209 RS-485/EIA-485..............................................215 USB............................................................220 Windows 虚拟串口......................................224 GPIB/IEEE-488..............................................226 GPIB/IEEE-488 信号 .....................................226 GPIB 连接............................................228 GPIB 转接USB .............................................229 PC 总线接口设备.............................................230 基于总线接口的优缺点................................230 数据采集卡.............................................232 GPIB 接口卡...........................................232 旧并不代表差............................................................233 小结......................................................234 推荐阅读................................................234 第8 章开始干吧........................................................ 235 项目定义..............................................................236 需求驱动的设计 ..................................236 从需求开始..........................................237 工程目标.............................................238 需求......................................................239 为什么需要需求........................240 良好的需求...................................241 全景....................................................242 需求类型..........................................242 用例......................................................244 可追溯性 .....................................246 需求捕获.....................................248 设计软件....................................................248 软件设计说明.............................................249 SDD 的图景............................................249 伪代码...........................................253 分而治之................................253 处理错误和故障........................255 功能测试.........................................256 为需求而测.................................257 测试用例................................................257 测试错误处理............................................260 回归测试..............................................261 进展追踪................................................261 实施............................................................262 代码风格................................................262 组织你的代码 ..................................264 代码复查.......................................265 单元测试................................................268 连接到硬件...............................................277 软件文档化.........................................278 版本控制..............................................281 缺陷跟踪..........................................281 用户文档 ................................................................282 小结..........................................................283 推荐阅读 ...................................................283 第9 章控制系统概念................................................. 285 基础控制系统理论......................................286 线性控制系统......................................286 非线性控制系统......................................288 顺序控制系统.............................................289 术语和符号.......................................................290 控制系统框图..........................................292 传递函数......................................................293 时间和频率...........................................293 控制系统类型........................................................298 开环控制.........................................................299 闭环控制...............................................299 非线性控制:继电器控制器....................................... 306 顺序控制系统.............................................308 比例、比例积分、比例积分微分控制..........................................................312 混合控制系统...........................................317 用Python 实现控制系统............................................318 线性比例控制器..........................................318 开关式控制器..................................................319 简单PID 控制器.................................................320 小结................................................................................324 推荐阅读.................................................324 第10 章构建并使用仿真器........................................ 327 什么是仿真.........................................328 低保真和高保真................................................................329 模拟错误和故障.......................................................330 使用Python 创建一个仿真器.............................................333 程序包和模块的组织......................................334 数据输入/ 输出仿真器 ......................................334 交流电源控制器仿真............................................349 串行终端仿真器......................................................358 使用终端仿真器脚本.................................................359 显示仿真数据......................................................361 gnuplot ............................................361 使用gnuplot.....................................................363 使用gnuplot 将仿真器数据图表化 ............................................. 366 创建你自己的仿真器................................................369 确认仿真器的必要性........................................369 仿真的范围...........................................370 时间和精力.................................................371 小结...............................................................371 推荐阅读..................................................371 第11 章仪器数据I/O................................................ 373 数据I/O :接口软件......................................373 接口格式与协议......................................................374 Python 接口支持的工具包 ............................................383 Windows 平台上的替代品.........................................389 在Linux 下使用基于总线的硬件I/O 设备.............................. 389 数据I/O :数据采集与写入...................................391 基本数据I/O...........................................391 阻塞和非阻塞调用................................................................398 数据I/O 方法.......................................................399 数据I/O 错误处理...............................................402 处理不一致的数据.................................................407 小结..................................................................411 推荐阅读...........................................................412 第12 章读写数据文件............................................... 413 ASCII 数据文件..................................................414 原始的ASCII 字符集................................414 Python 的ASCII 字符操作方法............................. 416 读写ASCII 平面文件 .......................................418 配置数据...............................................425 AutoConvert。py 模块——自动转换字符串 .................................................. 427 FileUtils。py 模块——ASCII 数据文件I/O 工具 ........................................... 430 二进制数据文件..................................................440 平面二进制数据文件............................................440 用Python 处理二进制数据.............................................. 442 图像数据................................................453 小结 ..................................................................462 推荐阅读............................................................................462 第13 章用户界面 ......................................................465 文本界面...........................................................465 控制台...................................................465 ANSI 显示控制台技术................................478 Python 和curses..........................................494 用不用curse 是个问题吗 .....................................502 图形用户界面.................................................502 图形用户界面的历史和概念..................................... 503 在Python 中使用GUI............................504 TkInter...................................................................508 wxPython .................................................514 小结..........................................................522 推荐阅读........................................................523 第14 章实例............................................................ 525 串行接口........................................................525 简易DMM 数据获取..................................................526 串行接口的离散或模拟数据I/O 设备 ....................................... 531 串行接口及对速度的考虑.........................................................535 USB 实例:LabJack U3.....................................................536 LabJack 连接....................................................537 安装LabJack 设备...........................................538 LabJack 与Python...................................539 小结.............................................................546 推荐阅读...........................................................547 附录A 自由和开源软件资源 ....................................... 549 附录B 仪器资源 ........................................................ 553 索引........................................................................... 557

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值