IT评测·应用市场-qidao123.com

标题: python 实现树莓派打开多串口,获取多串口数据,websocket数据吸收与发送。 [打印本页]

作者: 愛在花開的季節    时间: 2024-12-17 02:55
标题: python 实现树莓派打开多串口,获取多串口数据,websocket数据吸收与发送。
以下是一个利用 Python 在树莓派上实现打开多个串口、连续监测串口数据并在有数据时通过 WebSocket 以用户 A 身份发送,同时监测 WebSocket 毗连并以用户 B 身份吸收数据的示例代码。代码利用了pyserial库来操作串口以及websocket-client库来实现 WebSocket 通讯,运行前请确保已通过pip install pyserial websocket-client安装好相应的库。
  1. import serial
  2. import threading
  3. import time
  4. import websocket
  5. import json
  6. # 串口配置列表,可根据实际连接的串口情况添加更多配置项
  7. serial_configs = [
  8.     {
  9.         "port": "/dev/ttyUSB0",  # 根据实际情况修改串口设备路径
  10.         "baudrate": 9600,
  11.         "timeout": 1
  12.     },
  13.     {
  14.         "port": "/dev/ttyUSB1",
  15.         "baudrate": 9600,
  16.         "timeout": 1
  17.     }
  18. ]
  19. # WebSocket服务器地址,替换为真实的服务器地址和端口
  20. websocket_server_url = "ws://your_server_address:port"
  21. # 存储打开的串口对象列表
  22. serial_ports = []
  23. # 存储用于读取串口数据的线程对象列表
  24. serial_threads = []
  25. # 用于存储WebSocket连接对象
  26. ws = None
  27. # 读取串口数据的函数,持续监测串口是否有数据
  28. def read_serial(ser):
  29.     while True:
  30.         try:
  31.             data = ser.readline().decode('utf-8').strip()
  32.             if data:
  33.                 print(f"从串口 {ser.port} 读取到数据: {data}")
  34.                 # 调用发送数据到服务器的函数,以用户A的身份发送
  35.                 send_data_to_server(data, ser.port, "A")
  36.             else:
  37.                 time.sleep(0.1)  # 短暂休眠,避免空循环占用过多资源
  38.         except serial.SerialException as e:
  39.             print(f"串口 {ser.port} 读取出
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4