python serial串口通信
什么是串口通信
串口通信是一种用于在计算机和外部设备之间传输数据的通信方式。它通过串行传输数据,也就是一位一位地传输数据比特。串口通信常用于控制和监控外部设备,比如与传感器、电机、显示屏等的通信。
串口通信的基本概念
在串口通信中,有两个重要的概念:波特率和数据位。波特率是指在一秒钟内传输的数据位数,通常以bps(比特每秒)为单位表示,常用的波特率有9600、115200等。数据位是指每个数据字节中包含的比特位数,通常为8位。
除了波特率和数据位外,串口通信还有奇偶校验和停止位等参数。奇偶校验用于检查数据传输是否出现错误,而停止位表示每个数据帧结束的位置。
Python中的串口通信
Python标准库中提供了serial
模块,可以轻松实现串口通信操作。下面我们来看看如何在Python中使用串口通信。
首先,需要安装pyserial
库,可以通过以下命令来安装:
pip install pyserial
接下来,我们来看一个简单的串口通信示例代码:
import serial
# 打开串口
ser = serial.Serial('COM3', 9600)
# 发送数据
ser.write(b'Hello, world!')
# 接收数据
data = ser.readline()
print(data)
# 关闭串口
ser.close()
在上面的示例中,我们首先导入serial
模块,然后通过serial.Serial()
函数打开一个串口连接。接着我们使用ser.write()
方法发送数据,并通过ser.readline()
方法接收数据。最后,使用ser.close()
方法关闭串口连接。
串口通信的应用场景
串口通信在很多领域都有广泛的应用,比如嵌入式系统、机器人控制、传感器监测等。下面我们来看一个实际的示例,如何使用Python和串口通信控制Arduino灯的闪烁。
首先,我们需要在Arduino上加载以下代码:
int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
char command = Serial.read();
if (command == '1') {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
}
}
然后,我们可以使用以下Python代码来控制Arduino的灯:
import serial
import time
ser = serial.Serial('COM3', 9600)
while True:
ser.write(b'1')
time.sleep(1)
在这个示例中,我们通过Python发送指令给Arduino,让灯闪烁。
总结
串口通信是一种常用的数据传输方式,Python中有丰富的库可以实现串口通信操作。在实际应用中,我们可以利用串口通信来实现与外部设备的控制和监控。