用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
版权声明:本文为teachskyLY原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。