这是武散人著《自拍教程》(自动化测试Python教程)系列第60篇文章。python
重要提醒:
本案例涉及220v危险电压上电下电测试,存在安全风险,请切勿随意尝试!!!
编程
案例故事 不少移动终端都不带电池,都是直接电源插头供电,
好比Android电视机(220v),小米小爱同窗智能音箱(220v转5v的电源转换器),智能后视镜(12v)等智能终端设备,Android家庭信息机平板(5v),
还有电饭煲,微波炉,空调,台式电脑主机等220v的家用电器也是如此。
这些电子电器设备,确定须要涉及异常断电测试,
若是手工模拟上电下电测试,人工拔插电源插头费时费力,
其实Python + 可编程继电器,可实现“电源开关”的上电下电功能。windows
实际上是一台支持串口通信的继电器开关设备,
其可编程,主要是支持串口命令输入。
可考虑用这款聚英 DAM1600C继电器控制,淘宝连接,
建议选“USB口+USB线+外壳” 248元,“电源”15元,
由于以上USB接口是RS485的继电器,其也是串口的一种,不容易烧掉,稳定性高不少,
RS232的串口,很容易烧掉,在给继电器异常断电过程当中,就很容易烧掉。
其支持16路(即16个开关,便可同时控制16台电子电气设备一块儿进行上电下电操做),
另外继电器自己是须要供电的,产品上写的须要供7-30v的电便可,
通常建议用12v 2A的充电头(即电源)给继电器供电便可,
根据产品介绍,是最高支持250V 10A上电下电操做的,
好比Android智能电视机,普通家用电器等,用的都是是220v的电压。
可是...这毕竟是上电下电220v的电压,非必要请切勿尝试220v的上下电,
如实在是测试任务须要,请各位测试的同窗务必注意自身安全!安全
我更建议在低于24V的如下研发设备上作上电下电测试:微信
测试设备名称 | 电压 |
---|---|
车载设备,车载电信号 (好比acc on,CAN-High信号等) |
大部分车是12V 少数车辆是24V |
笔记本电脑(已用电源转换器) | 20V |
手机设备,智能音响笔记本电脑 (已用电源转换器) |
5V |
记住批处理脚本的精髓:批量顺序执行语句,
因为是16进制,在Python这边0x表示16进制数,是数字,因此未加双引号。函数
# coding=utf-8 import os import time import serial # 第一步:定义本模块(本.py文件)须要用到的变量 com_id = "COM24" pin1_on = [0xFE, 0x05, 0x00, 0x00, 0xFF, 0x00, 0x98, 0x35] pin1_off = [0xFE, 0x05, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xC5] # 第二步:New一个串口开关设备对象,绑定指定COM口 switch_obj = serial.Serial(com_id, baudrate=9600) # 第三步:反复进行串口开关设备打开和关闭100次 for i in range(100): print("正在进行第%s次设备异常上电/断电测试" % i) switch_obj.write(pin1_on) switch_obj.read() time.sleep(1) switch_obj.write(pin1_off) switch_obj.read() time.sleep(1) # 第四步:关闭窗口开关设备对象 switch_obj.close() os.system("pause")
面向过程函数的编程思惟应该是这样的:
你须要多少个功能(函数),才能作成这个事。
最好把功能(函数)都尽可能封装好,只暴露一些的参数接口便可。测试
# coding=utf-8 import os import time import serial def switch_pin1_on(switch): switch.write([0xFE, 0x05, 0x00, 0x00, 0xFF, 0x00, 0x98, 0x35]) switch.read() def switch_pin1_off(switch): switch.write([0xFE, 0x05, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xC5]) switch.read() # 第一步:定义本模块(本.py文件)须要用到的变量 com_id = "COM24" # 第二步:New一个串口开关设备对象,绑定指定COM口 switch_obj = serial.Serial(com_id, baudrate=9600) # 第三步:反复进行串口开关设备打开和关闭100次 for i in range(100): print("正在进行第%s次设备异常上电/断电测试" % i) switch_pin1_on(switch_obj) time.sleep(1) switch_pin1_off(switch_obj) time.sleep(1) # 第四步:关闭窗口开关设备对象 switch_obj.close() os.system("pause")
面向对象类的编程思惟应该是这样的:
若是给你一个空白的世界,在这个世界里你须要哪些种类的事物,
这些种类的事物都具有哪些共有的属性与方法,
这些种类(类)的事物(对象),和其余种类(其余类)的事物(其余对象)有什么关系。
尽可能把这些类封装好,只暴露对外的属性(变量)和方法(函数)便可。网站
# coding=utf-8 import serial import time # 定义本模块(本.py文件)须要用到的变量 com_id = "COM24" class SerialSwitch(object): def __init__(self, com_id): self.s_obj = serial.Serial(com_id, baudrate=9600) def switch_pin1_on(self): self.s_obj.write([0xFE, 0x05, 0x00, 0x00, 0xFF, 0x00, 0x98, 0x35]) self.s_obj.read() def switch_pin1_off(self): self.s_obj.write([0xFE, 0x05, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xC5]) self.s_obj.read() def switch_pin2_on(self): pass def switch_pin2_off(self): pass def close(self): self.s_obj.close() if __name__ == '__main__': switch_obj = SerialSwitch(com_id) for i in range(100): print("正在进行第%s次设备异常上电/断电测试" % i) switch_obj.switch_pin1_on() time.sleep(1) switch_obj.switch_pin1_off() time.sleep(1) os.system("pause")
包括:1600C可编程继电器调试控制软件.exe, 可编程继电器串口驱动包,
跳转到官网下载本素材
武散人出品,请放心下载!
3d
以上代码的3种实现形式均可以直接运行,好比保存为switch_onoff_100.py并放在桌面,
建议switch_onoff_100.py运行,固然也能够双击运行。
用220v的灯泡作的示例,每1秒开关一次灯泡,视频效果以下:
【视频上传失败,点我进入官网查看视频】调试
用5v的小米小爱智能音箱示例,每5秒重启一次设备,视频效果以下:
更建议用此类安全电压的测试设备作测试。
因为存在安全风险,再次提醒请切勿随意尝试220v的上下电测试;
如需测试,尽可能选择带电源转换器的低于24v如下安全电压的设备进行测试,
并请详细阅读继电器编程开关的使用说明书,
因为未遵照安全提醒而致使的人身或财产安全,本网站不承担任何责任。
更多更好的原创文章,请访问官方网站:www.zipython.com
自拍教程(自动化测试Python教程,武散人编著)
原文连接:https://www.zipython.com/#/detail?id=a97bdfe6dd5f453fa455b8409a468f47
也可关注“武散人”微信订阅号,随时接受文章推送。