基于Python代码分别实现PC端和树莓派端的串口数据收发

PC端

import serial

# 打开串口
ser = serial.Serial('COM6', 115200, timeout=1)  # 根据实际情况修改串口号和波特率!!!!

try:
    while True:
        # 读取串口数据
        data = ser.readline().decode().strip()
        if data:
            print(f'Received: {data}')

        # 发送数据到串口
        user_input = input("Enter data to send (Enter to skip): ")
        if user_input:
            ser.write(user_input.encode())
            print(f'Sent: {user_input}')
except KeyboardInterrupt:
    pass
finally:
    # 关闭串口连接
    ser.close()

树莓派端

import serial

# 串口配置
ser = serial.Serial(
    port='/dev/ttyAMA2',  # 串口设备,根据实际情况修改
    baudrate=115200,       # 波特率
    timeout=1            # 超时时间,单位秒
)

# 打开串口
if not ser.is_open:
    ser.open()

try:
    while True:
        # 发送数据
        data_to_send = input("Enter data to send: ")
        ser.write(data_to_send.encode())

        # 读取串口数据
        received_data = ser.readline()
        if received_data:
            print("Received:", received_data.decode().strip())

except KeyboardInterrupt:
    pass

# 关闭串口
ser.close()

在Windows PC树莓派之间建立实时串口通信,通常会使用Python的`pySerial`库,因为它跨平台并且易于使用。以下是简化的示例程序,展示了如何在两边实现这个功能: ### Windows PC (Python) 程序 ```python import serial import time # 定义串口配置 serial_port = 'COM1' # Windows中一般为COMx,树莓派可能为'/dev/ttyUSB0' baud_rate = 9600 try: # 创建串口对象 ser = serial.Serial(serial_port, baud_rate) print("Waiting for Raspberry Pi...") while True: # 从串口接收数据 data = ser.readline().decode('utf-8').strip() if data: print(f"Received from Pi: {data}") # 发送回响应 ser.write(('You said: ' + data).encode()) time.sleep(0.1) # 保持通信间隔 except Exception as e: print(f"Error: {e}") finally: if ser.is_open: ser.close() ``` ### 树莓派 (Python) 程序 ```python import serial import sys # 检查是否连接到正确的串口 if len(sys.argv) < 2 or sys.argv[1] != '/dev/ttyUSB0': print("Usage: python pi_side.py /dev/ttyUSB0") sys.exit(1) # 设置串口配置 port = sys.argv[1] baud_rate = 9600 ser = serial.Serial(port, baud_rate) while True: try: # 发送字符串到PC ser.write(('Hello from Pi').encode()) print("Sent message to PC.") # 接收并打印数据 received_data = ser.read_until(b'\n').decode() print(f"Received from PC: {received_data}") except Exception as e: print(f"Error: {e}") ``` 在这个例子中,Windows PC作为主设备监听来自树莓派数据,而树莓派则不断向PC发送消息,并等待回应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白天数糖晚上数羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值