Serial port MeetAndroid与软件系列问题
我在这里使用Amarino和SoftwareSerial:但我有一个奇怪的问题。 在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) 永远不会是真的 有人知道我为什么会有这些问题吗
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。另外,请确保将蓝牙板工作设置为较低的波特率