简介:串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
历史攻略:
i2c-tools:让硬件通信更简单
IPMI开源库pyghmi基本使用
安装:
pip install pyserial
案例指引:
1、查询当前机器有哪些串口:
ls -al /dev/tty* | grep USB
2、进入串口调试模式
sudo minicom -D /dev/ttyUSB0
3、手工输入和返回尝试
4、pyserial - demo:serial_demo.py
# -*- coding: utf-8 -*-
# time: 2024/4/7 23:31
# file: serial_demo.py
# 公众号: 玩转测试开发
import time
import serial
class SerialTool(object):
def __init__(self, baudrate, bytesize, timeout=0):
self.baudrate = baudrate
self.bytesize = bytesize
self.timeout = timeout
self.ser = serial.Serial(self.baudrate, self.bytesize, timeout=self.timeout)
def get_data(self, size=100, encoding_type=""):
if encoding_type:
data = self.ser.read(size).decode(encoding=encoding_type)
else:
data = self.ser.read(size).decode()
return data
def get_all_data(self, encoding_type=""):
if encoding_type:
data = self.ser.read_all().decode(encoding=encoding_type)
else:
data = self.ser.read_all().decode()
return data
def input_data(self, data):
data = data.encode()
print(f"input data: {str(data)}")
self.ser.write(data)
time.sleep(0.1)
def reset_output_buffer(self):
self.ser.reset_output_buffer()
def test_write_read(self):
self.ser.write(b"\n")
time.sleep(0.1)
data = self.get_data(100, "ascii")
print(f"my test data: {data}")
if __name__ == "__main__":
baudrate = "/dev/ttyUSB0"
bytesize = 115200
timeout = 0
my_ser = SerialTool(baudrate, bytesize, timeout)
data = my_ser.get_data(100, "ascii")
print(f"Before input. Get data:{data}")
# my_ser.input_data("mw 0x0109010C 0x02f24500")
my_ser.test_write_read()
data2 = my_ser.get_data(100, "ascii")
print(f"After input. Get data:{data2}")
运行结果:对比步骤3手工调试可知,
代码运行与手工输入回车都是返回 =>,说明调试成功。
其他参考命令:退出串口调试, ctrl + A 然后松开后按 X 即可实现退出串口调试模式。