用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

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值