下面是 Python 串口通信实现的攻略:
简介
串口通信是计算机与外部设备(如传感器、控制器等)进行数据交换的一种常见方式。Python 作为一种广泛使用的编程语言,有着丰富的库来支持串口通信。Python 的 serial
库是其中一种常用的库,它能够轻松地实现串口通信,并支持 Windows、Linux、Mac OS 等多种操作系统。
安装
安装 serial
库可以直接使用 pip
命令:
pip install pyserial
基本用法
- 导入库:
import serial
- 打开串口:
ser = serial.Serial(port='COM1', baudrate=9600, timeout=1)
上述代码打开了一个串口连接,其中:
port
: 串口号,可以是 Windows 系统下的 "COM1"、"COM2" 等,Linux 系统下的 "/dev/ttyS0"、"/dev/ttyUSB0" 等,串口号根据实际情况做相应修改;baudrate
: 波特率,通信双方需要协商一致的波特率;-
timeout
: 超时时间,单位为秒,如果在超时时间内没有读取到数据,read()
函数将返回空。 -
读写数据:
# 读取一行数据
line = ser.readline().decode('utf-8')
print(line)
# 写入数据
ser.write('hello world\n'.encode('utf-8'))
上述代码中:
readline()
: 按行读取数据,decode()
将字节串转换成字符串;-
write()
: 写入数据,encode()
将字符串转换成字节串。 -
关闭串口:
ser.close()
示例说明
示例一
在 Windows 系统下读取 Arduino 开发板的串口数据。
- 连接 Arduino 开发板并上传以下代码:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Hello, world!");
delay(1000);
}
- 在 Windows 系统下编写 Python 代码:
import serial
# 打开串口
ser = serial.Serial(port='COM3', baudrate=9600, timeout=1)
while True:
try:
# 读取一行数据
line = ser.readline().decode('utf-8')
print(line.strip()) # 输出去掉末尾换行符的数据
except KeyboardInterrupt:
break
# 关闭串口
ser.close()
上述代码中,ser.readline()
函数读取到来自 Arduino 的数据,并 print()
函数将其打印到控制台上。
- 运行 Python 代码,控制台输出以下内容:
Hello, world!
Hello, world!
Hello, world!
...
示例二
在 Linux 系统下写入数据到某个串口。
-
在 Linux 系统下连接串口设备,例如 "/dev/ttyUSB0"。
-
编写 Python 代码:
import serial
# 打开串口
ser = serial.Serial(port='/dev/ttyUSB0', baudrate=9600, timeout=1)
# 写入数据
ser.write('hello world\n'.encode('utf-8'))
# 关闭串口
ser.close()
上述代码中,ser.write()
函数向设备写入 "hello world" 字符串,\n
表示换行符。
- 运行 Python 代码,数据将被写入设备中。
结论
通过 serial
库可以方便地实现 Python 的串口通信,可以在多种操作系统下使用。在实际的项目中,我们可以根据具体的应用场景使用串口通信来实现数据的采集、控制等功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 串口通信的实现 - Python技术站