0

我创建了一个 WP8 应用程序。它连接到蓝牙并检测到它。蓝牙模块也连接了。但是数据不是从 Arduino 传到手机的 :(

错误代码

if(btSerial.available()) {
    Serial.println(distance); 
    btSerial.write(distance);
}
else {
    Serial.println("error");   -> always prints this 
}

在代码中,错误部分总是在串行监视器中打印。我已将蓝牙设备中的引脚连接到下面的引脚。

RXD - 11,TXD - 10,GND - GND,VCC - 5v,

请帮助我为什么 btSerial.available() 没有触发?

4

1 回答 1

0

你有倒退的逻辑。available() 测试 Arduino 的接收缓冲区中是否有数据。它不测试连接是否准备好。所以一个串口程序的整体格局

if(someserial.available()) {
  someserial.read... loop to get input
  print stuff received
}

要写,就写。

//no if's just go
someserial.write("my output")

您无需等待。使用两线串行连接,您没有流量控制。换句话说,arduino 和蓝牙收发器之间没有关于就绪或其他状态的信号。因为蓝牙链路的波特率超过了arduino串口链路的波特率,所以不能真正溢出蓝牙传输流。

协商连接的蓝牙方面意味着对 Arduino 是透明的。换句话说,您的程序与使用硬件串行端口的程序相同。如果出于某种原因,您需要连接的详细信息,则可以使用特殊的字节序列与蓝牙硬件进行通信。

于 2013-07-17T18:17:35.530 回答