Python如何接收来自单片机的数据?
时间: 2024-10-28 19:12:53 浏览: 42
Python可以通过多种方式接收来自单片机的数据,这里有几个常用的方法:
1. **串口通信(UART/TCP/IP)**:如果你的单片机通过串口(如RS-232或UART)发送数据,可以使用`pyserial`库在Python中监听串口。例如,你可以创建一个`Serial`对象并设置波特率,然后读取接收到的一字节或字符串。
```python
import serial
ser = serial.Serial('COM1', 9600) # 替换为实际的端口号
while True:
data = ser.readline().decode() # 解码字节串为字符串
if data:
print("Received from MCU:", data)
```
2. **GPIO输入**:若单片机通过GPIO连接到Python的GPIO扩展板(如Raspberry Pi),则可以使用`RPi.GPIO`库监测GPIO状态变化。
```python
import RPi.GPIO as GPIO
# 设置GPIO模式...
data_pin = 17 # 示例,替换为实际GPIO
GPIO.add_event_detect(data_pin, GPIO.BOTH, callback=lambda x: process_data(pin_state)) # 监听事件
def process_data(state):
# 根据pin状态处理单片机的数据
if state == 1:
received_data = "Data from MCU"
```
3. **网络连接**:如果单片机通过网络(如WiFi、蓝牙)向Python应用发送数据,可以借助如`socket`库建立TCP连接,并读取连接的数据流。
```python
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 5000))
server_socket.listen()
client, addr = server_socket.accept()
received_data = client.recv(1024).decode()
print("Received:", received_data)
client.close()
```
阅读全文