android - 为什么我在通过蓝牙发送 Arduino 数据时在 Android 应用程序的开头看到意外数据?

标签 android bluetooth arduino

我正在开展一个小组项目,我们通过蓝牙将串行数据从 Arduino 发送到 Android。我们都是 Arduino 和 Android 的新手。

使用的硬件包括Arduino Uno R3和HC-05蓝牙模块。

我正在为 3 轴加速度计数据包发送虚拟数据,并成功地从 Android 读取数据包数据。

但是,我们有这个数据 block (通常大约 50 多个字节,最大可达 512 字节)总是在开始时发送到应用程序。它是一个随机大小的字节 block ,我们无法解释它,因为它似乎与我们为数据设置的数据包格式不匹配。我们设法通过检查数据包大小是否足够小来避免查看这个字节 block 。但这会增加很多开销(4 - 5 秒),所以我们想弄清楚这个数据 block 是什么。那么,HC-05 是先发送了一些专有的蓝牙相关数据,还是我的脚本出了什么问题导致发送了意外数据?

这是 Arduino 代码。

#include <SoftwareSerial.h>
SoftwareSerial bluetooth(10,11);

void setup(){
  bluetooth.begin(9600);
}

void loop() {
  int x = random(360);
  int y = random(360);
  int z = random(360);
  formAccelerometerPacket(x, y, z); 
  delay(5000); // wait 5 sec
}

void formAccelerometerPacket(int xVal, int yVal, int zVal) {
  printSensorVal('A', xVal); 
  printSensorVal(':', yVal); 
  printSensorVal(':', zVal); 
}

void printSensorVal(char flag, int sensorVal) {
  bluetooth.print(flag);
  bluetooth.print(sensorVal);
}

我用蓝牙终端应用程序查看过它,但从那里看没有任何问题。它来自应用程序的 LogCat 显示了从应用程序接收到的内容,但我无法像我之前所说的那样解释它,这就是我需要解决的问题。

我尝试查看其他 SO 问题,但没有其他人可以帮助我。

我没有 Android 应用程序的代码,因为它与另一个队友有关,但我知道他们密切关注 BluetoothChat 示例。

我唯一的想法是,由于 Arduino 循环数据,如果应用程序在 Arduino 启动后启动,它可能会从之前串行端口中发生的事情开始读取一些数据。但它并没有解释字节 block 的大小差异。


编辑于太平洋标准时间 08/21/2014 上午 10:33

这是 LogCat 的屏幕截图。我们所做的是先运行 Android 应用程序,然后启动 Arduino 以确保电路板没有旧数据。看着这个让我觉得这可能是有人建议的配对问题。我正在努力尝试修复。

logCat Output

最佳答案

在 Google Play 上尝试蓝牙 SPP,然后连接到 HC-05。检查输出,然后在获得干净数据后重置 arduino,看看会发生什么。这就是我通常检查 HC-05 输出的方式。 HC-05 启动时不会发送任何内容。我无法发表评论,所以不得不发布一个答案,抱歉。

关于android - 为什么我在通过蓝牙发送 Arduino 数据时在 Android 应用程序的开头看到意外数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25414819/

相关文章:

android - Return 语句返回 null 而不是给定值

android - Android 和 iOS 在 Intent 和后台操作方面的差异

c - 函数调用作为其他函数的参数

javascript - 使用 Javascript 和 Arduino 模拟鼠标事件?

android - 后台应用程序会持续接收蓝牙数据包多长时间?

c++ - 在 Arduino 中存储上次读数

android - 如何在旋转屏幕后关闭 dialogfragment

java - 为什么我的 "posts"在 android recyclerview 中以不同的大小加载?

android - 这个 "OnChecksumsReadyListener.onChecksumsReady"AbstractMethodError 背后的原因是什么?

android - 无法发现 BLE 设备