python - 从传输不同数量的样本/秒 Rpi python 的 2 个不同设备获取读数
问题描述
我有 2 台设备。一台激光测距仪以 20Hz 串行传输样本,一台 IMU 在激光传输一个样本时传输多个样本。问题是 python 将保持在设备 1 的 readline 直到它获得读数,同时我可以从 IMU 获得几个读数。这是我到目前为止的代码:
#import RPi.GPIO as GPIO
from datetime import datetime
import time
import serial
# Device 1, Laser
ser1=serial.Serial('/dev/ttyUSB0',115200, timeout=0.1)
# Device 2, IMU
ser2=serial.Serial('/dev/ttyUSB1',115200, timeout=0.1)
# Create file
starttime = datetime.now()
filename = starttime.strftime("measurement/%Y%m%d_%H%M%S.dat")
header = "Time[s]\tDistance[cm]\n"
f = open(filename, 'w+')
f.write(header)
while True:
# Get reading from laser
reading = ser1.readline()
now = datetime.now()
t = (now - starttime).total_seconds()
# Get reading from IMU
reading2 = ser1.readline()
now = datetime.now()
t2 = (now - starttime).total_seconds()
# Append data to .dat file
f = open(filename, 'a+')
f.write(str(t)+'\t'+str(reading)+'\n') # Not saving readings from IMU in this example
print(str(t)+'\t'+str(reading))
f.close()
我希望在激光有新读数时从 IMU 获得尽可能多的读数。IMU 是时钟可定制的,但不是激光。我考虑过实现 asyncio 来处理读数。有没有人有异步的经验?我怎样才能确保没有读数被忽略?我还必须为所有读数制作一个共同的时间轴。你有什么建议吗?与 I2C 通信也是一种可能。
解决方案
推荐阅读
- c++ - Boost::iostreams 链接器错误,找不到 zlib
- c++ - 64 位 DLL 中鼠标的 SetWindowsHookEx 影响 32 位应用程序窗口移动
- django - Django TypeError:render() 得到了一个意外的关键字参数“renderer”
- ionic-framework - ngif 无法读取 null 的属性“肩膀”
- python - 在 Python 中进入 for 循环之前的函数分配
- node.js - 在贝宝中进行多供应商付款的方法和方法
- html - 动态内容的水平对齐(特殊情况)
- jenkins - 安全删除/清除日志文件
- jwt - 如何更改 FeathersJS 中的 JWT 过期时间?
- php - PHP 问题。输出有时会在特定回声后停止