這是武散人著《自拍教程》(自動化測試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
也可關注「武散人」微信訂閱號,隨時接受文章推送。