這是武散人著《自拍教程》(自動化測試Python教程)系列第60篇文章。 重要提醒: 本案例涉及220v危險電壓上電下電測試,存在安全風險,請切勿隨意嘗試!!! 案例故事 很多移動終端都不帶電池,都是直接電源插頭供電, 比如Android電視機(220v),小米小愛同學智能音箱(220v轉5v的電源 ...
這是武散人著《自拍教程》(自動化測試Python教程)系列第60篇文章。
重要提醒:
本案例涉及220v危險電壓上電下電測試,存在安全風險,請切勿隨意嘗試!!!
案例故事 很多移動終端都不帶電池,都是直接電源插頭供電,
比如Android電視機(220v),小米小愛同學智能音箱(220v轉5v的電源轉換器),智能後視鏡(12v)等智能終端設備,Android家庭信息機平板(5v),
還有電飯煲,微波爐,空調,台式電腦主機等220v的家用電器也是如此。
這些電子電器設備,肯定需要涉及異常斷電測試,
如果手工模擬上電下電測試,人工拔插電源插頭費時費力,
其實Python + 可編程繼電器,可實現“電源開關”的上電下電功能。
可編程繼電器開關介紹
其實是一臺支持串口通訊的繼電器開關設備,
其可編程,主要是支持串口命令輸入。
可考慮用這款聚英 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 |
準備階段
- 可編程繼電器是串口設備,需要pip install pyserial安裝該模塊
- 可編程繼電器需要供電,及USB數據控制,及在PIN1開關口進行接線操作。
- 可編程繼電器串口設備,需要先安裝windows驅動,可以去本素材下載。
驅動成功後,可以在我的電腦設備管理器裡邊看到如下COM口:
- 可編程繼電器DAM1600C的配套的調試,可以查看操作系的具體的串口信號輸入輸出,可以去本素材下載。
Python批處理腳本形式
記住批處理腳本的精髓:批量順序執行語句,
由於是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")
Python面向過程函數形式
面向過程函數的編程思維應該是這樣的:
你需要多少個功能(函數),才能做成這個事。
最好把功能(函數)都儘量封裝好,只暴露一些的參數介面即可。
# 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")
Python面向對象類形式
面向對象類的編程思維應該是這樣的:
如果給你一個空白的世界,在這個世界里你需要哪些種類的事物,
這些種類的事物都具備哪些共有的屬性與方法,
這些種類(類)的事物(對象),和其他種類(其他類)的事物(其他對象)有什麼關係。
儘量把這些類封裝好,只暴露對外的屬性(變數)和方法(函數)即可。
# 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, 可編程繼電器串口驅動包,
跳轉到官網下載本素材
武散人出品,請放心下載!
運行方式與效果
以上代碼的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
也可關註“武散人”微信訂閱號,隨時接受文章推送。