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
Arduino 如何从一开始就防止串行垃圾_Arduino_Serial Port_Esp32 - Fatal编程技术网

Arduino 如何从一开始就防止串行垃圾

Arduino 如何从一开始就防止串行垃圾,arduino,serial-port,esp32,Arduino,Serial Port,Esp32,每当我使用pio设备监视器连接到我的ESP32时在我的程序接管之前,我首先会收到一堆垃圾数据,从那以后一切正常: $ pio device monitor --- Miniterm on /dev/cu.wchusbserial1450 500000,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- x��xxxx�x�␀�␀�␀����␀�x����␀�␀�␀�����������

每当我使用
pio设备监视器连接到我的ESP32时
在我的程序接管之前,我首先会收到一堆垃圾数据,从那以后一切正常:

$ pio device monitor
--- Miniterm on /dev/cu.wchusbserial1450  500000,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

x��xxxx�x�␀�␀�␀����␀�x����␀�␀�␀�������������x�����x␀�xx␀�x��x�x�x��␀�␀x␀�␀�␀x␀x��xxxxx�x��x�xx��xx␀x�xx␀xxx�x␀x�␀x�x�x�x��␀�␀x␀����␀�␀x��x␀xx�xx�␀x␀x�x␀xxx�␀x�x␀x�x␀�xx�␀x�x�xxx�xx␀�x�␀x�x�x�x��x�x�x��xx��␀�␀�␀x␀���x␀xx�xxxx���␀�␀xxxxx�␀�x�␀x�xxxx␀�x�x�x��␀�␀x�␀�␀xxxx␀�x�x�x��␀�␀x�␀�␀x␀�xx␀�x�x�x��␀�␀x�␀�␀x�␀x�x��x␀�x�x�x��␀�␀x�␀�␀x␀�x�xx␀�x�x�x��␀�␀x�␀�␀x��xxx␀�x�x�x��␀�␀x�␀�x␀�xx�x�x�xxx��␀␀x��x�xx␀��␀x�x�x␀xxx�␀�x��x�x�����x␀�x␀�x�x␀x�x��␀�␀x����x�x�x�␀�x�␀�␀x␀�xxx�x��␀��x␀�x␀�x�x␀x�x��␀�␀x����x�x�x�␀�x��␀xx␀�xxx�x��x�␀�␀��␀��x␀�x␀�x�x␀x�x��␀�␀x��␀�␀����␀�␀�␀�␀�␀x␀�xxx�x��␀�␀�x����x␀�x␀�x�x␀x�x��␀�␀x��␀�␀�␀�␀�␀��␀�␀�␀x␀�xxx�x��x��␀����␀�x␀�xx�x�x�x�x�x�␀�␀x��␀�␀�␀�␀����xx␀x�␀�x�
Locating devices… 0 found.
在网上搜索的结果大多是“确保波特率匹配”,而且确实如此。他们都是50万:

[env:nodemcu-32s]
platform = espressif32
board = nodemcu-32s
framework = arduino
upload_port = /dev/cu.wchusbserial1450
upload_speed = 500000
monitor_speed = 500000
monitor_port = /dev/cu.wchusbserial1450
lib_deps = 
    OneWire
    DallasTemperature
使用波特率9600只会在开始时更改垃圾量。虽然少了很多,但还没有完全消失

这里有一个hextump(摘录):


有什么线索吗?我的理论是串行监视器在ESP32上的程序实际运行之前连接。使用Arduino IDE中的串行监视器,我得到了完全相同的行为。我用的是macOS Catalina。该模块是一个ESP32 Lolin32 Lite,使用CH340芯片进行串行通信:

我遇到了一个类似的问题,在连接时似乎收到了垃圾,这导致使用
ampy
处理电路板上的文件时出现问题。它原来是引导加载程序的“消息”,对于这个特定的板显然是打印在每次复位。(我刚刚在connect上捕获了它的最后一部分。)在我的例子中,我使用ampy上提供的-d延迟开关解决了这个问题,只需等待一秒钟,直到它通过/稳定。

它应该是1152200波特的引导日志,尝试添加
while(Serial.available())
序列。开始(500000)
@hcheung Serial.available()只返回可读取的字节数。它不消耗输入。我看不出这对这里有什么帮助。请解释。@Juraj这确实会把垃圾变成很多”␀␀␀␀␀" 最终以“一个”结尾�“,或十六进制:efbfbd,然后重复e29080,最后再次以efbfbd结尾。这是为什么?@hcheung我确实尝试了你的建议,但正如预期的那样,它没有明显的效果。对我来说,这表明没有可供阅读的数据。如果有,这将是一个无休止的循环。
void setup() {
  Serial.begin(500000);
  Serial.println();
  // …
00000000: 78ef bfbd 78ef bfbd 78ef bfbd 78ef bfbd  x...x...x...x...
00000010: efbf bd78 7878 78ef bfbd 78ef bfbd e290  ...xxxx...x.....
00000020: 80ef bfbd e290 80ef bfbd e290 80ef bfbd  ................
00000030: efbf bdef bfbd efbf bde2 9080 efbf bd78  ...............x
00000040: efbf bdef bfbd efbf bdef bfbd e290 80ef  ................
00000050: bfbd e290 80ef bfbd e290 80ef bfbd efbf  ................