Serial port MeetAndroid与软件系列问题

Serial port MeetAndroid与软件系列问题,serial-port,arduino,amarino,Serial Port,Arduino,Amarino,我在这里使用Amarino和SoftwareSerial:但我有一个奇怪的问题。 在MeetAndroid库中似乎有一些奇怪的行为。为了接收事件,我必须进行以下更改: 在一开始我必须改变 ack = 19; uint8_t lastByte; 与 ack = 226; 因为这是我在信息末尾从手机收到的字符 最后我不得不换衣服 ack = 19; uint8_t lastByte; 与 否则 if(lastByte == ack) 永远不会是真的 有人知道我为什么会有这些问题吗

我在这里使用Amarino和SoftwareSerial:但我有一个奇怪的问题。 在MeetAndroid库中似乎有一些奇怪的行为。为了接收事件,我必须进行以下更改:

在一开始我必须改变

ack = 19; 
uint8_t lastByte;

ack = 226; 
因为这是我在信息末尾从手机收到的字符

最后我不得不换衣服

ack = 19; 
uint8_t lastByte;

否则

if(lastByte == ack) 
永远不会是真的

有人知道我为什么会有这些问题吗?为什么我会得到另一个ack字符,为什么if不适用于char ack和uint8 lastByte

这是我的素描:

/*
  Receives Test Events from your phone.
  After it gets a test message the led 13 will blink
  for one second.
*/

#include <MeetAndroid.h>
#include <SoftwareSerial.h>

MeetAndroid meetAndroid(4, 2, 115200);
int onboardLed = 13;

void setup()   
{
  meetAndroid.registerFunction(testEvent, 'A');  

  pinMode(onboardLed, OUTPUT);
  digitalWrite(onboardLed, HIGH);

}

void loop()
{
  meetAndroid.receive(); // you need to keep this in your loop() to receive events
}

void testEvent(byte flag, byte numOfValues)
{  
  flushLed(300);
  flushLed(300);
}

void flushLed(int time)
{
  digitalWrite(onboardLed, LOW);
  delay(time);
  digitalWrite(onboardLed, HIGH);
  delay(time);
}

我发现了这个问题,它与波特率有关。例如,当使用串行软件时,我必须使用较低的波特率9600,否则当一次接收多个字符时,它将无法工作。例如,由于amarino库一次发送多个库来表示消息的开始和结束,因此在较慢的硬件(如我使用的Arduino Uno)上使用串行软件时会出现问题。也许有了更好的硬件,改变波特率是没有必要的

此处提供了更改波特率的示例:

长话短说:

在较慢的硬件上使用SoftwareSerial时,请使用低波特率,如9600。另外,请确保将蓝牙板工作设置为较低的波特率