gpt4 book ai didi

android - HC-05 + Android(回声/数据错误)

转载 作者:行者123 更新时间:2023-11-30 03:11:47 28 4
gpt4 key购买 nike

所以我现在面临着一个问题。任何建议都会很好。首先,我使用我的代码从 arduino 接收数据,然后我使用 bluetoothChat 并更改了 uuid,我可以配对,一切都很好,但是如果我将整个字符串从 arduino 发送到 android,我只得到该字符串的一部分。如果我使用来自 google play 的蓝牙终端,一切正常,并且在描述中说它是由蓝牙聊天示例制作的。

代码 Arduino

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 9); //RX,TX

long int i = 0;

void setup(){
mySerial.begin(9600);

}

void loop(){
mySerial.print("This is a message n. ");
mySerial.println(i);
i++;
delay(100);
}

Android 代码:蓝牙聊天示例

在 Android 上收到的消息示例:

要发送的消息!

所以我认为第一条消息正在等待模块配对。因为每次我得到。

is is a message n. 466
This is a message n.467
.
. ( here I get correct messages )
.
This is a message n.470
message n. 495
.
.
and after the first messages I get messages like
ssage n.534
t
essage n.m
essage n.
535

( I neved again get an entire message )

处理程序:

h = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case RECIEVE_MESSAGE: // if receive massage
byte[] readBuf = (byte[]) msg.obj;
String strIncom = new String(readBuf, 0, msg.arg1); // create string from bytes array
sb.append(strIncom); // append string
int endOfLineIndex = sb.indexOf("\r\n"); // determine the end-of-line
if (endOfLineIndex > 0) { // if end-of-line,
String sbprint = sb.substring(0, endOfLineIndex); // extract string
sb.delete(0, sb.length()); // and clear

Log.d("Arduino", "Mesaj:"+ sbprint.toString());



}
Log.d("Arduino", "...Mesaj:"+ sb.toString() + " Byte:" + msg.arg1 + "...");
break;
}
};
};

监听输入流

  public void run() {
byte[] buffer = new byte[256]; // buffer store for the stream
int bytes; // bytes returned from read()

// Keep listening to the InputStream until an exception occurs
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer); // Get number of bytes and message in "buffer"
h.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget(); // Send to message queue Handler


} catch (IOException e) {
break;
}
}

}

最佳答案

请注意,您使用的是串行端口的软件仿真,因此时序不如硬件 UART 好。

很可能是以下两种可能的问题之一或同时存在:

1) 起始位和停止位没有正确定时,导致背靠背字节。设置字符串时会发生这种情况,而不是一次一个地敲入键。解决方案是将每个键隔开。

2) 波特率不符合公差。降低或加快 HC05 和 Arduino 的波特率将更好地匹配时序。

我还建议确保您的库是 SoftwareSerial,声明它是 NewSoftSerial。它修复了许多问题。它已在 Arduino IDE 1.0.+ 核心库中实现,因此如果您有最新的 IDE,您应该拥有它。

关于android - HC-05 + Android(回声/数据错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20829608/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com