用python编写串口测试脚本

用python编写串口测试脚本

最近接到了一个测试硬件的内容,有大概十台左右,给了一个串口测试的文档,让我来测硬件,测试的前两天使用的手工测试,实在有点麻烦,晚上加班写了个脚本来简单的自动执行一下。


import serial.tools.list_ports
import time
import serial
ser = serial.Serial("COM4", 115200, timeout=20)

#   测试adc状态,开关锁,获取开关锁状态,LED灯,
def testStatus():

    if ser.isOpen():
        print("open success")
        for column in range(1, 4):
            for i in range(0, 7):   
            	      
                ca = str(column)              
                ia = str(i)              
                # can't concat str to bytes出现以下错误
                # ia.encode('utf-8')
                ser.write(b'+CH'+ca.encode('utf-8') + ia.encode('utf-8') + b':opendoor:' + b'\n')
                print(ser.readline())
                time.sleep(1)
                ser.write(b'+CH' + ca.encode('utf-8') + ia.encode('utf-8') + b':getlock:' + b'\n')
                print(ser.readline())
                time.sleep(0.5)
                
                ser.write(b'+CH'+ca.encode('utf-8') + ia.encode('utf-8') + b':closedoor:' + b'\n')
                print(ser.readline())
                time.sleep(1)
                ser.write(b'+CH' + ca.encode('utf-8') + ia.encode('utf-8') + b':getlock:' + b'\n')
                ser.write(b'+CH1'+ ia.encode('utf-8') + b':getlock:' + b'\n')
                print(ser.readline())
                time.sleep(0.5)
               
                ser.write(b'+CH' + ca.encode('utf-8') + ia.encode('utf-8') + b':closeluminary:' + b'\n')
                print(ser.readline())
                time.sleep(1)
                ser.write(b'+CH' + ca.encode('utf-8') + ia.encode('utf-8') + b':openluminary:' + b'\n')
                print(ser.readline())
                time.sleep(0.5)
                
    else:
        print("open failed")

    ser.close()
    
if __name__ == "__main__":
    testStatus()

这里涉及一个转换string 转bytes问题

因为串口输入的是需要bytes类型的 ,所以在这里大概介绍几种相互转换的方法

#bytes object 
 by = b'example' 

 #str object  
 st = 'example'

str与bytes进行转换

#str to bytes  
bytes(s, encoding = "utf8")  
 
#bytes to str  
str(b, encoding = "utf-8")  
 
#an alternative method  
#str to bytes  
str.encode(s)  
 
#bytes to str  
bytes.decode(b)  

注1:当你准备运行串口指令时,此时应该关闭/停止串口工具,再运行py,否则会出现如下报错,被拒绝访问,当出现提示:

raise Serialraise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))    
serial.serialutil.SerialException: could not open port 'COM4': PermissionError(13, '拒绝访问。', None, 5)

注2:未连接串口时出现的报错

 raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
 serial.serialutil.SerialException: could not open port 'COM4': FileNotFoundError(2, '系统找不到指定的文件。', None, 2)

参考链接:https://blog.csdn.net/jacke121/article/details/78741572

你可能感兴趣的:(python和测试工具)