代码上传期间发送到蓝牙TX的Arduino随机字符

时间:2014-11-05 19:23:48

标签: bluetooth arduino

当我将代码上传到我的Arduino而TX和RX引脚连接到我的HC-05模块时,会向TX缓冲区发送一堆随机字符,当我连接到设备时,这些字符被发送并且陷入困境的沟通。有没有办法在上传代码后清除此缓冲区?我上传时只是断开电线,但我想找到一种更简单的方法。谢谢!

2 个答案:

答案 0 :(得分:1)

唯一的另一种方法是每次发送一个可能几个字节的标头来发送消息。另一个程序可以在开始执行命令之前等待这些字符。在从缓冲区中读取这些字符之前,您只需执行Serial.read()循环即可清除垃圾。

另外,如果垃圾字符真的搞砸了你的程序,你可能还想考虑创建某种原始校验和以确认正确的传输。

需要帮助编码?让我知道。

答案 1 :(得分:1)

好吧,如果您使用串口同时发送数据和程序,您当然会在BT的另一端看到它...可能的解决方案:

  • 每次要编程Arduino
  • 时断开BT模块
  • 当您需要编程Arduino
  • 时,关闭其他BT设备(或者只是断开它)
  • 关闭HC-05(或保持其处于复位状态),直到arduino说它正在通信(因此在程序开始时使用GPIO控制复位引脚或晶体管为BT供电)
  • 在HC-05和Arduino串口之间使用3态驱动程序(一个驱动程序用于TX,一个用于RX)并在arduino程序开始时激活其输出。

我不喜欢djUniversal的解决方案,因为你无法控制PC传输的内容;例如,如果您决定使用字节0xAA来表示传输的开始,那么如果PC发送0xAA,则另一个设备认为Arduino正在传输。选择更长的字节序列会有所帮助,因为序列变得不太可能,但是......

此外,您必须在EVERY命令发送它,而不仅仅是在开始时,因为您必须重置arduino以对其进行编程(因此其他设备不知道何时停止考虑数据)。