迁移到 Arduino IDE 2.0:踩坑
作为国内最正经的Arduino社区竟然还没有IDE 2.0的相关讨论实在是有失水准。IDE 2.0下载页面:https://www.arduino.cc/en/software该软件目前处于beta测试阶段,截至发帖最新版是2.0.0-beta.12。
坑#1:beta.12版本找不到串口
第一个坑就是,不要在官网页面下载最新的beta.12版本,因为它存在严重bug,无法识别你设备的COM口,自然也就无法上传任何代码。
https://user-images.githubusercontent.com/33191697/141663267-46bc99ce-35e2-4e6f-8153-ee350fa9db61.png
你需要前往GitHub Release页面:https://github.com/arduino/arduino-ide/releases,安装beta.11版本。如果你上不去GitHub,也可以从我的OneDrive分享下载:https://lamiaceae-my.sharepoint.cn/:u:/g/personal/homosapiens_lamiaceae_partner_onmschina_cn/EVNZpctndFVOntPlp-U8GYsBAm2GYbbtQKpbZc6xs747LQ?e=2Gp10a
我之前一直用 1.8。4, 直到今天刚用 1.8.16 因为我发现最新的 esp32 arduino 和老的不兼容。
正常情况下没必要当小白鼠而已。 安装好beta.11后,我们试图启动它。如果你运气好,这一步不会出什么问题。但是运气不好的话,你将会永远卡死在启动界面:
坑#2:50051被端口占用会阻止Arduino IDE启动,且没有任何错误提示
如果IDE启动界面卡死超过1分钟都没有任何进展,你可以尝试看一下启动日志:%APPDATA%\Arduino IDE,每个文件对应一天的日志。找到对应今天的日志文件,拉到最下面,就可以看到启动卡死的原因。最常见的原因就是端口占用,日志类似这样:
daemon INFO Using config file: /Users/tom/.arduinoIDE/arduino-cli.yaml
daemon INFO arduino-cli version 0.17.0
daemon INFO Setting up Prometheus metrics on :9090/metrics
daemon INFO Starting daemon on TCP address 127.0.0.1:50051
daemon ERROR Failed to listen on TCP port: 50051. Address already in use.
daemon INFO Failed to start the daemon.
daemon ERROR Error: Failed to listen on TCP port. Address already in use.
at new DaemonError (/Applications/Arduino IDE.app/Contents/Resources/app/node_modules/arduino-ide-extension/lib/node/arduino-daemon-impl.js:370:28)
at Function.parse (/Applications/Arduino IDE.app/Contents/Resources/app/node_modules/arduino-ide-extension/lib/node/arduino-daemon-impl.js:388:24)
at Socket.<anonymous> (/Applications/Arduino IDE.app/Contents/Resources/app/node_modules/arduino-ide-extension/lib/node/arduino-daemon-impl.js:281:57)
at Socket.emit (events.js:223:5)
at addChunk (_stream_readable.js:309:12)
at readableAddChunk (_stream_readable.js:290:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at Pipe.onStreamRead (internal/stream_base_commons.js:181:23)
daemon INFO Restarting daemon in 5 seconds...
daemon INFO Failed to listen on TCP port: 50051. Address already in use.
daemon INFO Daemon exited with exit code: 5.
daemon INFO Restarting daemon in 4 seconds...
daemon INFO Restarting daemon in 3 seconds...
daemon INFO Restarting daemon in 2 seconds...
daemon INFO Restarting daemon in 1 seconds...
daemon INFO Restarting daemon now...要解决这个问题,需要修改IDE启动配置文件,位于%USERPROFILE%\.arduinoIDE\arduino-cli.yaml:
board_manager:
additional_urls: []
daemon:
port: "50051"
directories:
data: C:\Users\vhtmf\AppData\Local\Arduino15
downloads: C:\Users\vhtmf\AppData\Local\Arduino15\staging
user: C:\Users\vhtmf\Documents\Arduino
library:
enable_unsafe_install: false
logging:
file: ""
format: text
level: info
metrics:
addr: :9090
enabled: true
sketch:
always_export_binaries: false
将port: "50051"改成其它空闲端口即可。
论坛的帖子大小限制太坑了,基本发不了什么截屏:L随便一个截屏就超50K了好吧……运营方这么穷的吗……
终于打开了程序,但是现在你还不能立即上传代码。你需要点开左边的开发板管理器,安装对应的编译器。最常用的就是这个Arduino AVR Boards。但如果你购买的不是官方硬件设备,可能需要寻找适合你硬件的编译器。然后选择你的开发板的具体型号。还要选择端口。如果你PC上连接了设备,就能在这里选择对应的端口。
好了,下面找到我们的项目文件夹,双击打开.ino主文件。我的项目比较复杂,代码文件较多。你的代码至少也应该有个.ino文件。打开以后:???
坑#3:IDE 2.0不支持双击打开项目。你打开的永远只能是你上次退出时打开的项目。
想要打开特定的项目,你只能在File\Open里选择.ino文件。如果你最近打开过你的项目,也可以在Open Recent或Sketchbook里找到。
坑#4:默认不支持C++17,但可以手动改为支持
Arduino AVR Boards默认支持C++11标准。但是C++17引入了新特性:变量模板
template <uint8_t TimerCode>
volatile uint32_t SR;像这样的写法在C++11中是不允许的。即使你的代码中没有变量模板,也难保会引用到其他人写的含有变量模板的库,这时如果还使用C++11编译器就会报各种奇怪bug。为了支持C++17,你需要修改%LOCALAPPDATA%\Arduino15\packages\arduino\hardware\avr\1.8.3\platform.txt。将其中的-std=gnu++11改为-std=gnu++17,保存,重新启动IDE,就可以正确编译C++17新特性了。
话说回来,最新版的beta.12已经是默认暗黑主题了,而且界面和代码的配色风格简直跟 VS Code 如出一辙,简直就是Arduino定制版 VS Code ,而且同样采用Electron技术,应用界面变得跟网页一样……当然我还是选择用VS Code编码,只在上传的时候用一下IDE……
因为问题多,根本不推荐用我们都用vscode+arduino插件
页:
[1]