python - Python 从 Arduino 读取 IMU 数据并打印
问题描述
我有 Arduino 代码(实际上是 Teensy 3.2)通过串行发送数据
void loop()
{
data1 = roll; // integer
data2 = pitch; // integer
data3 = yaw; // integer
byte buf1[4];
buf1[0] = data1 & 255;
buf1[1] = (data1 >> 8) & 255;
buf1[2] = (data1 >> 16) & 255;
buf1[3] = (data1 >> 24) & 255;
Serial.write(buf1, sizeof(buf1));
byte buf2[4];
buf2[0] = data2 & 255;
buf2[1] = (data2 >> 8) & 255;
buf2[2] = (data2 >> 16) & 255;
buf2[3] = (data2 >> 24) & 255;
Serial.write(buf2, sizeof(buf2));
byte buf3[4];
buf3[0] = data3 & 255;
buf3[1] = (data3 >> 8) & 255;
buf3[2] = (data3 >> 16) & 255;
buf3[3] = (data3 >> 24) & 255;
Serial.write(buf3, sizeof(buf3));
while (micros() - loop_timer < 2500);
loop_timer = micros();
}
我想接收数据并在 python 中打印:
import serial
import time
import csv
import sys
PORT = '/dev/tty.usbserial-AL03QWTA'
BAUD = 115200
ser = serial.Serial(PORT, BAUD)
while True:
data1 = ord(ser.read(1));
data2 = ord(ser.read(1));
data3 = ord(ser.read(1));
data4 = ord(ser.read(1));
roll = (data4*256*256*256 + data3*256*256 + data2*256 + data1);
data5 = ord(ser.read(1));
data6 = ord(ser.read(1));
data7 = ord(ser.read(1));
data8 = ord(ser.read(1));
pitch = (data8*256*256*256 + data7*256*256 + data6*256 + data5);
data9 = ord(ser.read(1));
data10 = ord(ser.read(1));
data11 = ord(ser.read(1));
data12 = ord(ser.read(1));
yaw = (data12*256*256*256 + data11*256*256 + data10*256 + data9);
print(roll + "," + pitch + "," + yaw)
似乎接收到的数据混淆了,没有正确接收。知道 Arduino 每 0.0025 秒更新一次数据,将数据(滚动、俯仰和偏航)从 Arduino 发送到 python 的最佳方式是什么。
解决方案
推荐阅读
- javascript - 如何确定组件是否包含 React 层次结构
- java - 如何在 Maven 中的 Eclipse 中添加球衣原型?
- go - VS Code 在 Go 语法不正确时添加可疑空格
- php - Laravel Passport 密码重置 API 路由
- r - 使用 gsub 或 sub 函数仅获取字符串的一部分?
- javascript - 在 JavaScript 中检查 Array、Object、String 和 Number 等数据类型的空值
- mysql - 选择产品并加入类别分层
- c++ - 读取 C++ 中的所有文件由 . 文件夹
- python - 在从html创建pdf时在一定高度后打破页面内容
- c# - 反序列化仅在一个模型(类)中具有块的 JSON 文件