这状态是,打开项目时,platformio会在vscode左上角创建一些基本任务,如编译构建上传监控之类在PROJECT TASKS栏目中。
鄙人遇到的一种原因是:这些任务依赖对应开发板的环境,因为某些不知名原因,需要重新下载,而国内下载这个环境一直阻塞,一直失败所以会卡住。
vscode只有一个loading tasks我们无法掌控问题发生的细节,可以关掉vscode并使用命令行在项目所在目录执行
pio run -t build
关掉vscode才使得在vscode上的任务退出,而刚才执行的命令才能继续。
鄙人执行情况如下,就是编译的时候发现了esp32环境需要重新下载,然后卡住了。如果这个下载成功了,也许问题就解决了。
若pio命令找不到,说明没有将pio所在路径加入PATH变量中。可以按以下方法执行:
pio路径在
当前用户目录/.platformio/penv/Scripts/
下,在linux终端和powershell可以使用~
代替当前用户目录。powershell
~\.platformio\penv\Scripts\pio run -t build
linux
~/.platformio/penv/Scripts/pio run -t build
windows cmd
C:\Users\这里换成你用户文件夹名称\.platformio\penv\Scripts\pio run -t build
当然把那个目录加入PATH也是可以的
各位大神想必也有自己的方法提高这个速度。鄙人使用了一种把速度提高到2~3MB/S的方法,就是使用手机数据流量,然后开热点给PC。
下载便成功了。
虽然构建因为本地文件什么原因失败了,不过重新打开vscode, 这个项目的PROJECT TASKS里面内容也显示出来了,那loading tasks自然也过去了。
Error: Could not start PIO Home server: Error: timeout
at c:\Users\xxx\.vscode\extensions\platformio.platformio-ide-2.5.1-win32-x64\node_modules\platformio-node-helpers\dist\index.js:1:10013...
此处故技重施,打开项目目录比如在vscode终端执行 explorer .
或者 explorer .\
,再次关掉vscode防止命令冲突。
在项目文件夹打开cmd,执行以下命令
pio home
本人遇到结果如下,又在安装组件这一次是piohome
C:\Users\immor\Documents\PlatformIO\Projects\ServoArm>pio home
___I_
/\-_--\ PlatformIO Home
/ \_-__\
|[]| [] | http://127.0.0.1:8008/
|__|____|________________________
Open PlatformIO Home in your browser by this URL => http://127.0.0.1:8008/
Tool Manager: Installing platformio/contrib-piohome @ ~3.4.2
Downloading...
解决办法同上再用手机流量开个热点供PC连接。下载完毕后这个在浏览器打开了。
重新打开vscode,便正常了
检测到 #include 错误。请更新 includePath。已为此翻译单元
这个编译不报错,但会有红色的波浪线标注,让人看着不爽。但去对应目录搜索该文件,的确是存在的。
那就是vscode include的路径不对,多半是pio自动升级的esp32相关环境,sdkconfig.h
路径发生变化造成的,而老项目之前是旧的路径,重新打开时就会遇到这个问题。
其实是.vscode下面导包的路径需要修改一下就好了。
然后在vscode终端上执行以下命令,就是再初始化一遍 --ide后面就是表示ide的类型
pio init --ide=vscode
最后问题解决。
由于新版的platformio 命令行工具适配了232版的clion。将不在生成cmake文件。所以无法通过在cmake中加库路径,来使得clion找到库位置。即使你回退clion的版本platformio 命令行工具依然不会生成CMakeLists.txt CMakeListsPrivate.txt。所以会出现clion找不到库文件而报红,但是使用platformio run其实是可以build的。
可以通过platformio.ini中加入lib_extra_dirs
来解决。
如果是多人协作项目可以使用环境变量代替当前用户目录,但不同操作系统并不一样,可以设置一个通用的环境变量。
[env:STC89C52RC]
platform = intel_mcs51
board = STC89C52RC
lib_extra_dirs =
C:\Users\用户名文件夹\.platformio\packages\toolchain-sdcc\include
当前用户名目录下.platformio\packages\toolchain-sdcc\include
格式一般是C:\Users\用户名文件夹.platformio\packages\toolchain-sdcc\include
成功后在项目侧边栏External Libraries 里面会出现C:\Users\用户名文件夹.platformio\packages\toolchain-sdcc\include的内容。