通过 VSCode RTOS 插件使用 Python 为物联网系统编写程序
RTOS 之类的实时嵌入式操作系统使嵌入式系统的编程更简单
RTOS VSCode
RTOS 之类的实时嵌入式操作系统使嵌入式系统的编程更简单

> 
> RTOS 之类的实时嵌入式操作系统使嵌入式系统的编程更简单
> 
> 
> 


![](/data/attachment/album/202007/29/001132c37u7u5qp284wef2.jpg)


物联网（IoT）无处不在，它意味着几乎所有的产品，从冰箱到口袋手表，都可以连网。为了实现这个目标，每个产品都需要拥有一个嵌入式计算机来运行网络栈，有些产品几乎是小的不可思议。这就是嵌入式软件出现的场景：现代科技打造的非常小的计算机，硬编码到硬件芯片，不需要任何板外处理器、内存或者存储盘。


就传统视角而言，这种场景意味着没有操作系统可用，但是因为种种 [原因](https://opensource.com/article/20/6/open-source-rtos)，开发者发现，类似于 RTOS 之类的实时嵌入式操作系统能让嵌入式系统的编程变得非常简单。


虽然 RT-Thread 嵌入式操作系统致力于鼓励程序员新手进入物联网领域，但并非所有的人都具备使用 C 语言硬编码微芯片的能力。幸运的是，MicroPython 通过让开发者创建运行于嵌入式系统的 Python 代码的方式，逐渐填补了这个鸿沟。为了让整个过程更简单，RT-Thread 有一个可以用于 VSCode 和 [VSCodium](https://opensource.com/article/20/6/open-source-alternatives-vs-code) 的插件，为开发者提供了物联网方面的开发环境。其部分特性包括：


* 方便的连接方式，可以很容易的通过串口、网络或者 USB 连接到开发板（如果你使用过 Arduino，肯定会很熟悉这个流程）。
* 支持上传文件或目录到开发板。
* 支持基于 MicroPython 的代码，而且具有智能的代码补完、语法检查功能。
* 支持 MicroPython REPL 交互式环境。
* 丰富的示例代码和演示程序。
* 完整的工程同步功能。
* 快速运行内存中的程序代码。
* 运行函数的代码片段。
* 支持主流的 MicroPython 开发板。
* 支持 Linux 和 Windows 操作系统，并经过充分测试。


### 准备


在开始之前，如果你使用的是 Windows 操作系统，那么必须保证 VSCode 的默认终端是 [PowerShell](https://opensource.com/article/18/2/powershell-people)。运行 VSCodium，从 “Terminal” 菜单项启动一个终端. 在显示在 VSCodium 窗口底部的终端界面，从下拉菜单顶端选择 “PowerShell”。 不论你是在 [Windows](https://opensource.com/article/19/8/how-install-python-windows) 还是 Linux 系统下工作，必须保证安装了 Python 3（在 Linux 上，它可能已经安装了，否则可以通过软件库安装它）。


还要安装的是微软提供的通用 VSCode Python 插件。安装方法是点击 “File” 菜单，找到 “Preferences” 子菜单，从中打开 “Extensions” 面板。在扩展中，搜索 “Python”，找到来自微软的 Python 插件。


![VSCodium Python plugin](/data/attachment/album/202007/29/001200p669pylwwl2yl991.jpg "VSCodium Python plugin")


当然，在上述操作之前，你要先正确安装 [VSCodium](http://vscodium.com) 或 [VSCode](https://github.com/microsoft/vscode)。


### 安装插件


安装 MicroPython 开发插件的方法与安装 Python 插件一样，点击 “File” 菜单，找到 “Preferences” 子菜单，选择 “Extensions”。


在扩展中，搜索 “MicroPython”，安装 RT-Thread 插件。


![MicroPython plugin for RT-Thread](/data/attachment/album/202007/29/001213ge07s4er31m331zd.jpg "MicroPython plugin for RT-Thread")


### 使用插件


你的开发板必须能访问串口，这需要组策略的允许。你可能需要将自己的账户加入该组，通常在默认情况下你的账户可能并不在该组。首先，确认你的账户不在 “dialout” 组：



```
$ groups
tux users

```

本例中，用户“tux”只是“tux”组和“users”组的成员，所以需要将用户“tux”添加到“dialout”组：



```
$ sudo usermod --append --groups dialout tux

```

退出登录或重启以载入你新的组权限。


### 创建 MicroPython 工程


MicroPython 开发的第一步是创建 MicroPython 工程用来编写和运行代码。使用 MicroPython 插件创建工程的方法是，点击左下方的 “Create MicroPython project” 按钮。


![Create MicroPython project](/data/attachment/album/202007/29/001216igu4wneuf99qeauq.jpg "Create MicroPython project")


之后会有一些提示，让你选择创建空白工程还是包含例程的工程。


### 连接到开发板


点击 VSCodium 左下方的 “Connection” 按钮，进行 VSCodium 与开发板的连接，在弹出的列表中，选择要连接的物理设备。


### 查看例程


MicroPython 插件提供了许多例程和例库，供学习和调用。获取例程的过程是，激活 MicroPython 之后，VSCodium 左侧按钮条会出现“新建”快捷图标，点击该图标就可以了。点击“文档”快捷图标，会显示例程文件列表；点击“文件夹”快捷图标，会显示例库列表。


![MicroPython examples](/data/attachment/album/202007/29/001231iputkobu5fu2mfke.jpg "MicroPython examples")


### 直接在开发板上运行 MicroPython 文件


在 VSCodium 中可以通过在开发板上运行单个程序文件，很方便快捷的进行程序调试。快捷键 `Alt+Q` 会触发一个特定的插件，该插件会将当前的 Python 文件上传到开发板内存中。你还可以在当前 Python 文档界面点击右键，然后选择 “Run the MicroPython file directly on the device” 实现同样的功能。


![Running code on your device](/data/attachment/album/202007/29/001238c2ghhddrhrthyukh.jpg "Running code on your device")


如果你需要以不上传代码的方式检查一组代码，可以使用“代码片段”功能。要运行 MicroPython REPL 环境中的代码片段，在编辑器中选中要运行的片段，右键菜单中点击 “Execute the selected MicroPython code on the device” （也可以使用 `Alt+Q` 快捷键）。


### 加载文件和目录到开发板


如果需要加载文件或目录到开发板，有现成的方法可用：选中工程中要加载到开发板的文件或目录，在选中的对象上右键，点击右键菜单中的 “Download the file/folder to the device”。


注意，如果开发板中已有与要加载的文件或目录同名者，加载操作将导致开发板原有的内容被覆盖。


在 REPL 环境中运行 `os.listdir()` 命令，可以检查文件和目录是否成功加载。当然，也可以通过相应的命令删除 REPL 中的文件或目录。


删除文件的命令如下：



```
os.remove('file_to_delete')

```

删除目录的命令如下：



```
os.rmdir('folder_to_delete')

```

### 工程的同步


点击左下角“同步”按钮可以启动工程同步，该操作将把本地工程中所有的文件和目录同步到开发板的文件系统。建议在完成程序调试之后进行该操作，调试过程中不需要频繁进行同步操作。


工程的同步操作完成后，开发板上的文件列表可以在 “Device Files List” 列看到。


### 放手尝试


RT-Thread 以开源的方式发布 MicroPython 插件，意在为新老开发者提供帮助，它的很多特性，如代码自动补全等，与开源插件之间互有影响和促进。你如果想为嵌入式系统或物联网系统编写软件，这就是最简单的方式，没有之一。




---


via: <https://opensource.com/article/20/7/python-rt-thread>


作者：[Seth Kenlon](https://opensource.com/users/seth) 选题：[lujun9972](https://github.com/lujun9972) 译者：[silentdawn-zz](https://github.com/silentdawn-zz) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

