METERREC万用表测量自动记录命令
通过Python/cmd下的 meterrec完成实验台面万用表数据自动记录的功能。
■ 命令
1.命令格式
meterrec ch dn
记录单通道,并最终拷贝到CLLIPBOARD。meterrec ch dn #tab1 tab2 tab3…
记录单通道,并根据tab1,2,3自动粘贴到 CSDN 形成表格
如果第一个参数以‘#’’开始,则最开始为序号meterrec datafile ch1 ch2 ch3…
记录多通道到数据文件。
2.通道定义
0~3: 桌面万用表集成测量通道数据
4:DM3068:VDC
5:DM3068:VAC
6:DM3068:RES
7:DM3068:FREQ
▲ 台面万用表数据通道
3.鼠标操作
Ⅰ.鼠标左键 :记录一条记录。
Ⅱ.鼠标右键:在第一种命令下,开启新的记录行;在第2,3种记录命令,将当前记录清零。
Ⅲ.左键–>右键:在第一种命令下,将MSG窗口内容拷贝到CLIPBOARD,并清楚。在第二种命令下,还包括自动粘贴;第三种命令没有特殊功能。
Ⅳ.右键–>左键:退出程序。退出后,MSG窗口内的拷贝到CLIPBOARD。
■ 程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# METERREC.PY -- by Dr. ZhuoQing 2020-07-06
#
# Note:
#============================================================from headm import *
import os
from tsmodule.tsstm32 import *
from tsmodule.tsvisa import *#------------------------------------------------------------
#============================================================#------------------------------------------------------------
def tspclickaction(func1=None, func2=None):global workmodeglobal tablesection, tableidglobal ch1data, ch2data, ch3data, ch4dataglobal ch5data, ch6data, ch7data, ch8data#--------------------------------------------------------def f1():tspmsg('msg \a')def f2():printf('\a')if func1 == None:func1 = f1if func2 == None:func2 = f2#--------------------------------------------------------codeflag = 0if len(tablesection) > 0:printf(' '.join(tablesection))linenum = 0#--------------------------------------------------------while True:if codeflag == 0:time.sleep(.5)else: time.sleep(.5)key = tspread()if key[7] != 0 and codeflag == 0:if key[2] != 0:tspmsgcopy()tspclr()tspbeep(1200, 100)codeflag = 1if len(tablesection) > 0:tspexecutepythoncmd('cdpt')if len(tablesection) > 0:printf(' '.join(tablesection))continueif key[3] != 0:returnif key[2] != 0 and codeflag == 0:codeflag = 1continueif key[3] != 0 and codeflag == 0:codeflag = 2continueif codeflag != 0:if key[2] == 0 and key[3] == 0:if codeflag == 1:func1()linenum = linenum + 1if len(tablesection) > 0:if linenum >= len(tablesection) - tableid:func2()linenum = 0elif codeflag == 2:if len(tablesection) == 0:func2()if workmode == 1:ch1data = []ch2data = []ch3data = []ch4data = []ch5data = []ch6data = []ch7data = []ch8data = []tspclr()printf('Record data %s at %s:'%(datafilename, str(datachannel)))else: tspclr()linenum = 0codeflag = 0continueif key[2] != 0 and key[3] != 0:if codeflag == 1:tspmsgcopy()tspclr()tspbeep(1200, 100)codeflag = 3if len(tablesection) > 0:tspexecutepythoncmd('cdpt')if len(tablesection) > 0:printf(' '.join(tablesection))continueelif codeflag == 2:return#------------------------------------------------------------
windowtitle = tspgetwindowtitle()
findflag = 0meterfile = r'D:\zhuoqing\window\cb\MyResearch\Test\TestAD5344\M8BL_BAS\M8BL_BAS.exe'for wt in windowtitle:if wt.find('MEGA8 DOWLOAD PROGERAM') >= 0:findflag = 1breakif findflag == 0:os.system(meterfile)time.sleep(.5)tspbeep(1200, 200)#============================================================
#------------------------------------------------------------workmode = 0 # 0 Record the table data# 1 Record data filemeterid = 0
decimalnum = -1 # Decimal number no limiteddatafilename = ''
datachannel = []tablesection = [] #
tableid = 0 ##------------------------------------------------------------
if len(sys.argv) > 1:if sys.argv[1].isdigit() == False:datafilename = sys.argv[1]for s in sys.argv[2:]:if s.isdigit() == False:printf("meterrec datafile ch1 ch2 ...")exit()datachannel.append(int(s))if len(datachannel) == 0:printf("meterrec datafile ch1 ch2 ...")exit()workmode = 1 #else:meterid = int(sys.argv[1])if len(sys.argv) > 2:if sys.argv[2].isdigit():decimalnum = int(sys.argv[2])tablesection = sys.argv[3:]else:tablesection = sys.argv[2:]for s in tablesection:if s.find('#') >=0:tableid = 1tablesection = [s.strip('#') for s in tablesection]#------------------------------------------------------------
if meterid > 3:dm3068open()
elif len(datachannel) > 0:for c in datachannel:if c > 3:dm3068open()break#============================================================
#------------------------------------------------------------
def tspmsgdecimal(val, dn=-1):if dn == 0:tspmsg('%d '%val)elif dn == 1:tspmsg('%3.1f '%val)elif dn == 2:tspmsg('%4.2f '%val)elif dn == 3:tspmsg('%5.3f '%val)elif dn == 4:tspmsg('%6.4f '%val)elif dn == 5:tspmsg('%7.5f '%val)elif dn == 6:tspmsg('%8.6f '%val)elif dn == 7:tspmsg('%9.7f '%val)elif dn == 8:tspmsg('%10.8f '%val)else:tspmsg('%f '%val)#------------------------------------------------------------
def getchannelval(ch):if ch < 4:meter = meterval()val = meter[ch]elif ch == 4:val = dm3068vdc()elif ch == 5:val = dm3068vac()elif ch == 6:val = dm3068res()elif ch == 7:val = dm3068freq()else:val = dm3068vdc()return val#------------------------------------------------------------
def recordchannel():global decimalnumdn = decimalnumval = 0val = getchannelval(meterid)tspmsgdecimal(val, dn)tspbeep(2000, 200)#------------------------------------------------------------
ch1data = []
ch2data = []
ch3data = []
ch4data = []
ch5data = []
ch6data = []
ch7data = []
ch8data = []def recorddata():global datafilenameglobal datachannelglobal decimalnumglobal ch1data, ch2data, ch3data, ch4dataglobal ch5data, ch6data, ch7data, ch8datatspbeep(1200, 50)if len(datachannel) == 0:printf('ERROR: Channel number: 0.')exit()if len(datafilename) == 0:printf("ERROR: Data file length is zero.")exit()if len(datachannel) >= 1:ch1data.append(getchannelval(datachannel[0]))tspmsgdecimal(ch1data[-1], decimalnum)if len(datachannel) >= 2:ch2data.append(getchannelval(datachannel[1]))tspmsgdecimal(ch2data[-1], decimalnum)if len(datachannel) >= 3:ch3data.append(getchannelval(datachannel[2]))tspmsgdecimal(ch3data[-1], decimalnum)if len(datachannel) >= 4:ch4data.append(getchannelval(datachannel[3]))tspmsgdecimal(ch4data[-1], decimalnum)if len(datachannel) >= 5:ch5data.append(getchannelval(datachannel[4]))tspmsgdecimal(ch5data[-1], decimalnum)if len(datachannel) >= 6:ch6data.append(getchannelval(datachannel[5]))tspmsgdecimal(ch6data[-1], decimalnum)if len(datachannel) >= 7:ch7data.append(getchannelval(datachannel[6]))tspmsgdecimal(ch7data[-1], decimalnum)if len(datachannel) >= 8:ch8data.append(getchannelval(datachannel[7]))tspmsgdecimal(ch8data[-1], decimalnum)if len(datachannel) == 1:tspsave(datafilename, ch1=ch1data)if len(datachannel) == 2:tspsave(datafilename, ch1=ch1data, ch2=ch2data)if len(datachannel) == 3:tspsave(datafilename, ch1=ch1data, ch2=ch2data, ch3=ch3data)if len(datachannel) == 4:tspsave(datafilename, ch1=ch1data, ch2=ch2data, ch3=ch3data, ch4=ch4data)if len(datachannel) == 5:tspsave(datafilename, ch1=ch1data, ch2=ch2data, ch3=ch3data, ch4=ch4data, ch5=ch5data)if len(datachannel) == 6:tspsave(datafilename, ch1=ch1data, ch2=ch2data, ch3=ch3data, ch4=ch4data, ch5=ch5data, ch6=ch6data)if len(datachannel) == 7:tspsave(datafilename, ch1=ch1data, ch2=ch2data, ch3=ch3data, ch4=ch4data, ch5=ch5data, ch6=ch6data, ch7=ch7data)if len(datachannel) == 8:tspsave(datafilename, ch1=ch1data, ch2=ch2data, ch3=ch3data, ch4=ch4data, ch5=ch5data, ch6=ch6data, ch7=ch7data, ch8=ch8data)printf("\a")#------------------------------------------------------------
time.sleep(.5)
tspbeep(1000, 500)
tspclr()
clipboard.copy('')#------------------------------------------------------------
if workmode == 1:printf('Record data %s at %s:'%(datafilename, str(datachannel)))tspclickaction(recorddata)
else:tspclickaction(recordchannel)#------------------------------------------------------------
tspmsgcopy()
tspbeep(500, 200)#------------------------------------------------------------
# END OF FILE : METERREC.PY
#============================================================
METERREC万用表测量自动记录命令相关推荐
- 如何使用万用表测量随机噪声
数字万用表是测量电信号的有力助手.虽说是" "用表,其实常见的功能只有测量电压.电流.电阻.电压.电流还包括有交直流档.除此之外,部分万用表包含有测量电感.电容.通断.二极 ...
- 万用表怎么测量电池容量_如何使用万用表,使用万用表测量常用的六个方面
如何使用万用表测量:万用表测量电路通路.断路.短路方法 万用表是电子工程师或者从事电子行业的人们常用的一种测量工具,他可以测量电阻.电容.二极管等常用元器件.而且在日常生活中,我们也会经常用它来测量电 ...
- 万用表测量二极管方法
万用表测量二极管方法 2009-02-24 18:46:05| 分类: 工作资料 | 标签: |字号大中小 订阅 怎么用万用表测二极管.发光二极管和三极管的好坏 普通二极管的检测(包括检波二极管. ...
- 万用表怎么测量电池容量_万用表测量锂电池容量的方法
万用表测量锂电池容量的方法 严格上说,万用表只能测量电流,电压,电阻,测量不了容量.但是可以用万用表大致测量一下锂电池是否容量不足,那就是用万用表的直流电流档(最好是指针表).瞬间测量一下电池的正负极 ...
- db107s-ASEMI整流桥堆怎么测量好坏,万用表测量DB107S四脚
编辑-Z db107s整流桥堆怎么测量好坏?拿到一个DB107S后,将其放好如图,(下面两脚代表AC,接交流电,测量时,AC的两脚当为一个整体来理解). DB107S参数描述 型号:DB107S 封装 ...
- 示波器和万用表测量直流电压的区别
示波器和万用表是工程师非常熟悉的两款电子测试工具,它们均具有直流电压测试功能,那测量时又有什么不同呢? 01.示波器测量直流电压 示波器是一种可以显示电信号波形的测量仪器.示波器可以做到高频采样,测量 ...
- 用万用表测量电压、电阻和电流
唉,不知道是以前学过的东西忘了还是基础不扎实,今天测量阻都不会测. 在一般的开发板中,使用万用表测量电压很简单,直接调到电压档,把两个探针放到要测量的器件(比如电阻)两端就行了.但是测量电流就很少像我 ...
- 使用万用表测量CAN总线电压及实际电压与逻辑电瓶关系
从下图可以看出: 在CAN_High的高电平为3.5V,低电平为2.5V,CAN_Low的高电平为2.5V,低电平为1.5V的情况下: 1.使用万用表测量CAN总线电压 测量CAN_High的对地电压 ...
- 万用表测量CAN信号的方法
万用表测量CAN信号的方法 https://jingyan.baidu.com/article/48206aea899b7e216ad6b3c2.html
最新文章
- 青源 LIVE 第 28 期 | 北大燕博南:下一代AI芯片—存内计算的硬核与软着陆
- 硅谷人眼中的2018年十大前沿科技预测
- 来自mooon的最简单的日志类CSimpleLogger
- vivado中如何导入ise工程
- 计算机常用工具软件教案,常用工具软件教案.doc
- 【渝粤教育】国家开放大学2018年春季 0222-21T模拟电子电路 参考试题
- HTML鼠标悬停的语法
- Energy python API 代码学习
- ServiceAccounts 及 Secrets 重大变化
- 网络游戏(MMORPG) 好玩的原因
- 天龙八部手游服务器维护公告,天龙八部手游 近期更新维护公告
- 【高等代数】行列式的定义和性质
- 7-13 愿天下有情人都是失散多年的兄妹 (25 分)
- 王者荣耀各服务器位置,盘点王者荣耀各位置国服战力排名,辅助榜表示只有富婆才玩的懂...
- 贪心算法_排队不等式_绝对值不等式_推公式
- Android:销毁所有的Activity退出应用程序几种方式
- 程序员面试金典总结 - leetcode 程序员面试金典系列
- matlab学习笔记之——符号函数应该怎么作图?
- 使用umi快速搭建项目以及如何在umi中使用dva进行状态管理
- 用devc++表白_想谈一场甜甜的姐弟恋了 | 肇院表白墙716期