使用Python编写串口程序主要涉及以下步骤:
安装pySerial库
确保你的Python环境支持pySerial模块。可以通过命令行输入以下命令进行安装:
```bash
pip install pyserial
```
导入pySerial库
在Python代码中导入pySerial库,以便使用其提供的功能:
```python
import serial
from serial.tools import list_ports
```
列出可用的串口设备
使用`list_ports.comports()`函数获取所有连接的串口设备列表,并打印出每个设备的串口号和描述信息:
```python
ports_list = list(list_ports.comports())
if len(ports_list) == 0:
print("无串口设备。")
else:
print("可用的串口设备如下:")
for comport in ports_list:
print(f"{comport}, {comport}")
```
配置和打开串口
选择一个串口设备并配置其参数,如波特率、数据位、校验位、停止位和超时时间。然后使用`serial.Serial()`函数打开该串口:
```python
ser = serial.Serial(
port='COM3', 串口号,Windows上一般是COM几,Linux上是/dev/ttyUSB几
baudrate=9600, 波特率
bytesize=8, 数据位
parity='N', 校验位(N就是不校验)
stopbits=1, 停止位
timeout=1 超时时间,单位为秒
)
```
发送数据
使用`write()`方法向串口发送数据。注意,需要传入字节类型的数据:
```python
ser.write(b'Hello, Serial Port!')
print("数据已发送!")
```
读取数据
使用`read()`方法从串口读取数据。可以设置读取超时时间:
```python
data = ser.read(5) 读取5个字节
print(f"收到数据: {data.decode()}")
```
关闭串口
完成数据发送和接收后,使用`close()`方法关闭串口:
```python
ser.close()
```
```python
import serial
from serial.tools import list_ports
import time
列出所有可用的串口设备
ports_list = list(list_ports.comports())
if len(ports_list) == 0:
print("无串口设备。")
else:
print("可用的串口设备如下:")
for comport in ports_list:
print(f"{comport}, {comport}")
打开串口
ser = serial.Serial(
port='COM3', 串口号,Windows上一般是COM几,Linux上是/dev/ttyUSB几
baudrate=9600, 波特率
bytesize=8, 数据位
parity='N', 校验位(N就是不校验)
stopbits=1, 停止位
timeout=1 超时时间,单位为秒
)
检查串口是否打开成功
if ser.is_open:
print(f"串口 {ser.port} 已打开")
else:
print(f"无法打开串口 {ser.port}")
发送数据
try:
ser.write(b'Hello, Serial Port!')
print("数据已发送!")
time.sleep(1) 等待1秒,以便数据传输
读取数据
while True:
if ser.in_waiting: 检查是否有数据待读取
data = ser.readline()
print(f"收到数据: {data.decode().strip()}")
time.sleep(0.1) 每隔0.1秒读取一次数据
except KeyboardInterrupt:
if ser is not None:
ser.close()
print("串口已关闭。")
```
请根据你的实际需求和硬件设备调整串口号、波特