听起来您的虚拟串行端口驱动程序卡在某些超时或缓冲区上。IDE 使用特定协议调用 avrdude,以匹配 Arduino 引导加载程序中内置的内容,加载在 AVR 上。还有其他的bootloader(其实很多,不胜枚举),其中一些可能有不同的时序等,但使用它们基本上不再是Arduino。查看可能性。\avrdude.exe -c。
如果您只是想转储串行端口上的内容。我用过Virtual Serial Ports Emulator。它非常通用,因为它的模块化,让您可以构建您想要的东西。
此外,正如其他线程中提到的那样,请注意串行端口上的数据是在STK500 协议之上格式化的。您还在其他线程中提到您不想使用其他工具来获取数据。而为了使用另一个协议,您需要更改源 compiler.java 并重建项目以使用新协议调用 avrdude。因此,您不妨使用其他工具来获取它。见下文,这将重新绑定。
您可以从输入到 avrdude 的内容中获取原始二进制文件。因为它最初可能并不明显。由于 avrdude 得到 ELF 而不是 BIN。Arduino IDE 包含所有 avr-gcc 及其工具。位于 .\Arduino\hardware\tools\avr\bin 中的 avr-objcopy 可以将汇集到 avrdude 的 IDE 输出转换为您可能需要的二进制文件。无需确定串行端口流的范围。
要手动执行此操作,您需要通过启用 IDE 的详细编译打印来找到 IDE 的临时工作目录。并且还可能将 avr-objcopy 放在您的路径中。然后像下面的例子一样简单地调用它,用你的草图的文件名代替我的。
C:\Users\mflaga\AppData\Local\Temp\build6135656488044319492.tmp>avr-objcopy -I ihex FilePlayer.cpp.hex -O binary FilePlayer.cpp.bin
你可以用一个批处理文件替换 avrdude.exe,它调用 avrdude 和 avr-objcopy 来自动化