Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在代码上传过程中发送到Bluetooth TX的Arduino随机字符_Bluetooth_Arduino - Fatal编程技术网

在代码上传过程中发送到Bluetooth TX的Arduino随机字符

在代码上传过程中发送到Bluetooth TX的Arduino随机字符,bluetooth,arduino,Bluetooth,Arduino,当我将代码上传到我的Arduino,同时TX和RX引脚连接到我的HC-05模块时,一堆随机字符被发送到TX缓冲区,当我连接到设备时,这些字符被发送并扰乱通信。上传代码后有没有办法清除这个缓冲区?每次上传时我都会断开连接,但我想找到一个更简单的方法。谢谢 唯一的另一种方法是每次发送一个可能只有几个字节的头来发送消息。另一个程序可以在开始执行命令之前等待这些字符。在从缓冲区读取这些字符之前,您只需执行一个Serial.read()循环来清除垃圾 另外,如果垃圾字符真的会把你的程序搞得一团糟,你可能需

当我将代码上传到我的Arduino,同时TX和RX引脚连接到我的HC-05模块时,一堆随机字符被发送到TX缓冲区,当我连接到设备时,这些字符被发送并扰乱通信。上传代码后有没有办法清除这个缓冲区?每次上传时我都会断开连接,但我想找到一个更简单的方法。谢谢

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

另外,如果垃圾字符真的会把你的程序搞得一团糟,你可能需要考虑创建一些粗略的校验和来确认正确的传输


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

如果您使用串行端口发送数据和程序,当然您会在BT的另一侧看到它。。。可能的解决办法:

  • 每次要对Arduino进行编程时,都要断开BT模块
  • 当您必须对Arduino进行编程时,请关闭另一个BT设备(或断开连接)
  • 关闭HC-05(或将其保持在复位状态),直到arduino显示其正在通信(因此在程序开始时,使用GPIO控制复位引脚或晶体管为BT通电)
  • 在HC-05和Arduino串行端口之间使用一个三态驱动器(一个用于TX,一个用于RX),并在Arduino程序开始时激活其输出
我不喜欢djUniversal的解决方案,因为你无法控制电脑的传输;例如,如果您决定使用字节0xAA来发出传输开始的信号,那么如果PC发送0xAA,则其他设备认为Arduino正在传输。选择更长的字节序列会有所帮助,因为该序列的可能性会降低,但是


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

两个字节的序列通常就足够了。除非他突破了数据传输的极限,否则这应该不会影响他的效率。我建议这样做的原因是因为他说垃圾值有负面影响。如果在常规传输过程中出现一些数据损坏(在正常范围内),该怎么办?头文件和检查将使is代码总体上更加健壮。我目前在每次传输的开头都有1字节的头文件,以确定它是哪种命令。我已经尝试过在程序加载之前不连接,但即使我稍后连接手机,它也会在连接完成后立即接收Arduino发送的字符。此外,垃圾字符的字符串似乎每次都是相同的,因此我可以在Arduino设置上发送一个在字符串中找不到的命令,以表示它已加载。不过现在,我将使用重置引脚。谢谢你的信息!