零落 发表于 2021-1-25 10:14:26

两种硬件编程的风格:离线下载和在线交互

本帖最后由 零落 于 2021-1-25 11:52 编辑 <br /><br /><p style="margin-bottom: 15px; margin-top: 15px;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 10px; color: rgb(165, 165, 165);">文章来源:乐聚机器人王松博士的《两种硬件编程的风格:离线下载和在线交互》</span></p><p style="margin-bottom: 15px; margin-top: 15px;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 10px; color: rgb(165, 165, 165);"><br/></span></p><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(51, 51, 51); font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif; letter-spacing: 0.54px; text-align: justify; white-space: normal; overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; box-sizing: border-box !important; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; color: rgb(95, 156, 239); box-sizing: border-box !important; overflow-wrap: break-word !important;">少儿编程教育</span></strong><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">+</strong><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; color: rgb(95, 156, 239); box-sizing: border-box !important; overflow-wrap: break-word !important;">智能硬件</span></strong>似乎是天生的一对,二者的结合很容易产生<strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; box-sizing: border-box !important; overflow-wrap: break-word !important;">1 + 1 &gt; 2&nbsp;</span></strong>的双赢局面。不管是在线编程教育企业,还是智能硬件企业,在接下来的发展中,都纷纷把目光聚焦在教育领域。</span></p><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-align: left; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; box-sizing: border-box !important; overflow-wrap: break-word !important;">针对硬件编程的模式,在文杰的这篇<strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; color: rgb(95, 156, 239); box-sizing: border-box !important; overflow-wrap: break-word !important;">《两种硬件编程的风格》</span></strong>(https://blog.just4fun.site/Hardware-Programming-style.html)中提到了&nbsp;<span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">交互式</strong></span>与<strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; color: rgb(95, 156, 239); text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; box-sizing: border-box !important; overflow-wrap: break-word !important;">灌入式</span></strong>两种硬件编程风格,并且详细分析了二者之间的优劣。</span></p><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-align: left; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; box-sizing: border-box !important; overflow-wrap: break-word !important;"><br/></span></p></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; text-align: left;"><section style="margin: 0px; padding: 0px 0px 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; display: inline-block; vertical-align: middle;"><section style="margin: 0px 0px -9px -6px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-left: 2px solid rgb(160, 160, 160); border-top: 2px solid rgb(160, 160, 160); height: 16px; width: 16px; border-right-color: rgb(160, 160, 160); border-bottom-color: rgb(160, 160, 160);"></section><section style="margin: 0px; padding: 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; background-color: rgb(95, 156, 239); font-size: 17px; color: rgb(255, 255, 255);"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">离线下载运行</strong></p></section></section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">离线下载运行,使用一个 IDE 或者代码生成器生成一份代码(可能需要编译器编译),然后烧写到硬件设备上运行这一段生成的代码。</span></strong></span></p><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; line-height: 1.75em;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; color: rgb(95, 156, 239);"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></span></strong></section><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;">生成代码的方式多种多样,这其中有文本编辑器编辑,或者少儿编程以积木块形式“拼搭”出一份代码。再通过拷贝、烧录等方式把代码下载到硬件 ROM、SD 卡或者其他存储介质中。硬件中的解释器根据下载的代码进行地址跳转,转译一行程序就立刻运行,然后再转译下一行,如此不停地进行下去。</span></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;"><img class="rich_pages " data-backh="319" data-backw="519" data-before-oversubscription-url="https://mmbiz.qlogo.cn/mmbiz_png/ujIIpBiauu2qrGKqaQRmQicgCGYGtsVuib0SEveXEHoRsagVETBc6UzXCzR595chKibv7OoJutStGfSAMv1147B7VQ/0?wx_fmt=png" data-ratio="0.6146435452793835" data-s="300,640" src="https://bbs.lejurobot.com/plugin.php?id=wcn_editor:wx_img&url=https://mmbiz.qpic.cn/mmbiz_png/ujIIpBiauu2qrGKqaQRmQicgCGYGtsVuib0SEveXEHoRsagVETBc6UzXCzR595chKibv7OoJutStGfSAMv1147B7VQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" data-type="png" data-w="519" _width="100%" crossorigin="anonymous" alt="图片" data-fail="0" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; height: auto !important; width: 677px; visibility: visible !important;"/></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;">目前图形化项目生成代码的项目比较多,大多数采用了 Google 的 Blockly 方案,这里列举部分</span></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: left; background-color: rgb(255, 255, 255);"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: right; background-color: rgb(255, 255, 255);"><section style="margin: 0px 0px 0px auto; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; clear: both;"></section><section style="margin: -12px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-width: 1px; border-style: dotted; border-color: rgb(210, 210, 210);"><section powered-by="xiumi.us" style="margin: 0px; padding: 10px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px;"><p style="padding: 0px; max-width: 100%; box-sizing: border-box; clear: none; min-height: 1em; text-align: left; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">micro:bit MakeCode Editor</span></strong>(https://microbit.org/code/)</span></p><p style="padding: 0px; max-width: 100%; box-sizing: border-box; clear: none; min-height: 1em; text-align: left; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">PiBakery: The easiest way to setup a Raspberry Pi</span></strong>(https://www.pibakery.org/)</span></p><p style="padding: 0px; max-width: 100%; box-sizing: border-box; clear: none; min-height: 1em; text-align: left; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">BlocklyDuino is a web-based visual programming editor for arduino.</span></strong>(https://github.com/BlocklyDuino/BlocklyDuino)</span></p><p style="padding: 0px; max-width: 100%; box-sizing: border-box; clear: none; min-height: 1em; text-align: left; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;">还有市面上大多数的带教育属性的编程硬件产品;</span></p></section></section></section></section><section style="margin: 0px; padding: 5px 0px 0px 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: left; background-color: rgb(255, 255, 255);"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 5px 1px 0px 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: right; background-color: rgb(255, 255, 255);"><section style="margin: 0px 0px 0px auto; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; clear: both;"></section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; overflow-wrap: break-word !important;">如果使用过上面这些工具的话,会发现有一个共同点,那就是 UI 界面上一定会有个大大醒目的</span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;">&nbsp;<span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">下载(上传)</span></strong></span></span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">&nbsp;</strong></span>按钮,时刻提醒用户程序必须下载到硬件中,才能成功运行。</span></span></p><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; overflow-wrap: break-word !important;"><br/></span></span></p><p style="margin: 5px 0px 15px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; overflow-wrap: break-word !important;">这种离线下载再运行的硬件编程风格也许是微控制器时代的产物,出于成本和功耗的考虑,从最经典的 C51 单片机到 ARM Cortex-M 系列的芯片的智能硬件产品,如果一个嵌入式工程师看到这套可能再熟悉不过了。在如 Keil、IAR、Arudino IDE 中编辑程序,语法检查和编译没有问题之后,烧录到单片机 ROM 当中。</span></p><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><br/></p><p style="margin: 5px 0px 15px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-size: 14px;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; font-size: 15px; overflow-wrap: break-word !important;">那么基于微控制器开发出的可编程硬件产品自然而然就会遵循这样的</span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; font-size: 15px; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">传统</span></strong></span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; font-size: 15px; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">。</span></strong></span></span><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; font-size: 15px; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-size: 14px; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;"></span></strong></span></span><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px; text-shadow: rgba(205, 205, 205, 0.780392) 1px 0px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"></strong><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 17px; color: rgb(95, 156, 239);"></span></strong></span></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; text-align: left;"><section style="margin: 0px; padding: 0px 0px 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; display: inline-block; vertical-align: middle;"><section style="margin: 0px 0px -9px -6px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-left: 2px solid rgb(160, 160, 160); border-top: 2px solid rgb(160, 160, 160); height: 16px; width: 16px; border-right-color: rgb(160, 160, 160); border-bottom-color: rgb(160, 160, 160);"></section><section style="margin: 0px; padding: 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; background-color: rgb(95, 156, 239); font-size: 17px; color: rgb(255, 255, 255);"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">在线交互运行</strong></span></p></section></section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;">在线运行式的硬件编程,代码解释器运行在单独的环境中,硬件提供 API 接口供解释器运行代码时调用。没有代码下载这个过程。<strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">代码运行在 PC、Pad 或者手机上,程序运行过程中硬件始终需要与解释器保持连接(蓝牙、Wi-Fi 等),随时准备响应解释器的请求。</span></strong></span></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; color: rgb(95, 156, 239);"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></span></strong></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;"><img class="rich_pages " data-backh="320" data-backw="519" data-before-oversubscription-url="https://mmbiz.qlogo.cn/mmbiz_png/ujIIpBiauu2qrGKqaQRmQicgCGYGtsVuib0uv31BjqF9nMSDGia7j1DQjmO0KHnFn1uQEicqRica8FGJicwzE2gGXCzbw/0?wx_fmt=png" data-ratio="0.6165703275529865" data-s="300,640" src="https://bbs.lejurobot.com/plugin.php?id=wcn_editor:wx_img&url=https://mmbiz.qpic.cn/mmbiz_png/ujIIpBiauu2qrGKqaQRmQicgCGYGtsVuib0uv31BjqF9nMSDGia7j1DQjmO0KHnFn1uQEicqRica8FGJicwzE2gGXCzbw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" data-type="png" data-w="519" _width="100%" crossorigin="anonymous" alt="图片" data-fail="0" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; height: auto !important; width: 677px; visibility: visible !important;"/></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; box-sizing: border-box !important; overflow-wrap: break-word !important;">在线运行图形化的项目有许多</span></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: left; background-color: rgb(255, 255, 255);"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: right; background-color: rgb(255, 255, 255);"><section style="margin: 0px 0px 0px auto; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; clear: both;"></section><section style="margin: -12px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-width: 1px; border-style: dotted; border-color: rgb(210, 210, 210);"><section powered-by="xiumi.us" style="margin: 0px; padding: 10px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; text-align: left; font-size: 15px;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: none; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">Etoys</span></strong>(http://www.squeakland.org/)</span></p><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: none; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">Scratch3</span></strong>(https://scratch.mit.edu/)</span></p><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: none; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">codelab-scratch3</span></strong>(https://scratch3.codelab.club/)</span></p><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: none; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">codelab-adapter</span></strong>(https://codelab-adapter-docs.codelab.club/)</span></p></section></section></section></section><section style="margin: 0px; padding: 5px 0px 0px 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: left; background-color: rgb(255, 255, 255);"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 5px 1px 0px 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: right; background-color: rgb(255, 255, 255);"><section style="margin: 0px 0px 0px auto; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; clear: both;"></section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;">在交互式环境中,每个设备都是一个独立的插件,彼此之间互不干扰,需要设计好每个插件的消息格式。在类似 Scratch 的环境中彼此相遇组合,程序在 Scratch 里运行时动态获取或者控制每个插件设备的状态。以一种比较有趣且优雅的方式实现万物互联。</span></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;"><img class="rich_pages " data-backh="251" data-backw="574" data-before-oversubscription-url="https://mmbiz.qlogo.cn/mmbiz_png/ujIIpBiauu2qrGKqaQRmQicgCGYGtsVuib0IVicyG2a3EOp20mbBwIic9HeNCNicNvlMEfLrjkAqyiakqwOcUwdQ6nBhA/0?wx_fmt=png" data-ratio="0.4375" data-s="300,640" src="https://bbs.lejurobot.com/plugin.php?id=wcn_editor:wx_img&url=https://mmbiz.qpic.cn/mmbiz_png/ujIIpBiauu2qrGKqaQRmQicgCGYGtsVuib0IVicyG2a3EOp20mbBwIic9HeNCNicNvlMEfLrjkAqyiakqwOcUwdQ6nBhA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" data-type="png" data-w="1280" _width="100%" crossorigin="anonymous" alt="图片" data-fail="0" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; height: auto !important; width: 677px; visibility: visible !important;"/></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; text-align: left;"><section style="margin: 0px; padding: 0px 0px 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; display: inline-block; vertical-align: middle;"><section style="margin: 0px 0px -9px -6px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-left: 2px solid rgb(160, 160, 160); border-top: 2px solid rgb(160, 160, 160); height: 16px; width: 16px; border-right-color: rgb(160, 160, 160); border-bottom-color: rgb(160, 160, 160);"></section><section style="margin: 0px; padding: 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; background-color: rgb(95, 156, 239); font-size: 17px; color: rgb(255, 255, 255);"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">二者对比</strong></span></p></section></section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; text-align: left; font-size: 15px;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;">关于二者的对比,在<strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">两种硬件编程风格的比较</span></strong>(https://blog.just4fun.site/Hardware-Programming-style.html)中已经有非常详细的对比。引用如下</span></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><br/></p><section style="margin: 0px; padding: 10px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; display: inline-block; width: 677px; border-width: 2px; border-style: dashed; border-color: rgb(192, 200, 209); background-color: rgb(239, 239, 239); border-radius: 0.7em;"><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; box-sizing: border-box !important; overflow-wrap: break-word !important;">1. 灌入式可以离线运行,只需要将代码烧入进去,即可脱离编程工具</span></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; box-sizing: border-box !important; overflow-wrap: break-word !important;">2. 灌入式将带来优于交互式的实时性</span></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; box-sizing: border-box !important; overflow-wrap: break-word !important;">3. 灌入式因为需要 Generate 代码,学生可以查看代码</span></p></section></section><p><br/></p><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">作者站在</span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">编程教育是否真的需要离线运行?</span></strong></span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;"></span></strong><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;"></span></strong></span>角度来看待离线</span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); text-shadow: rgba(205, 205, 205, 0.78) 0px 0px; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">离线烧录</strong></span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">,同时交互式也可以做好实时性与代码生成。</span></span></p><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></span></section><p style="margin: 5px 0px 15px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">离线下载编程与在线交互运行相比,代码运行在 MCU 上,这是优点也是缺点。首先这带来的好处就是</span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">轻量</span></strong></span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">,程序运行时没有额外的依赖。但是缺点也很明显,那就是功能很单一,做不了复杂的运算。</span></span></p><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></span></section><p style="margin: 5px 0px 15px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">举个例子, 现在有一个 Robot,程序脱机离线运行,它可以唱、跳、RAP和篮球,那如果想为机器人增加视觉能力怎么办?在 ARM Cortex-M 系列芯片上做图像处理目前实在是太勉强,因为</span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">它光是跑起来一个代码解释器都已经捉襟见肘</span></strong></span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">。为了弥补这种缺憾,那就是再外接一块类似 Raspberry Pi 的板子或者 ESP8266 Wi-Fi 板用于简单的图像处理或请求云端 API。对价格敏感的硬件产品来说,这无疑又增加了不少时间和物料成本。</span></span></p><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></span></section><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">如果换一种思路,程序如果运行在 PC 上,所有与待编程设备之间的通信都是消息 (Message),PC 的性能相较于 MCU,可以做任何复杂的任务和逻辑。这样其实让 MCU 的肩上的担子轻了很多,MCU 只需要做好外围控制,暴露接口即可。以 Scratch3 为例,如果 Robot 想获得视觉能力怎么办呢?非常简单,只需要提交一个视觉积木插件即可,代码检查,不同程序块之间的兼容性统统不需要考虑。在这样的交互式环境中,硬件设备可以轻松获取各种扩展能力。</span></section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; text-align: left;"><section style="margin: 0px; padding: 0px 0px 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; display: inline-block; vertical-align: middle;"><section style="margin: 0px 0px -9px -6px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-left: 2px solid rgb(160, 160, 160); border-top: 2px solid rgb(160, 160, 160); height: 16px; width: 16px; border-right-color: rgb(160, 160, 160); border-bottom-color: rgb(160, 160, 160);"></section><section style="margin: 0px; padding: 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; background-color: rgb(95, 156, 239); font-size: 17px; color: rgb(255, 255, 255);"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">兼顾?<span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"></span></strong></p></section></section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px;"><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;">那么有没有可以同时兼顾在线交互和离线下载的解决方案呢?似乎是可以做到的。</span></p><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></section><p style="margin: 15px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;">程序仍然是<span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;">离线运行在 Robot 上,参考交互式的消息机制,只不过消息的发起方由 PC 转至 Robot,当 Robot 程序运行时,如果需要做图像识别,Robot 向 PC 发送请求,PC 将识别结果再返回给 Robot。这种方式看起来能够解决离线下载运行的痛点,将 PC 看做 Robot 的</span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">扩展外设</strong></span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">。</strong><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; overflow-wrap: break-word !important;"></span></strong></span></span></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; color: rgb(95, 156, 239); text-shadow: rgba(205, 205, 205, 0.780392) 1px 0px;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 17px;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></span></strong></span></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;"></p><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></p><p style="margin-top: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; line-height: 1.75em; margin-bottom: 15px; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; letter-spacing: 0.54px; box-sizing: border-box !important; overflow-wrap: break-word !important;">但是如果 PC 上的消息接收进程被关闭,Robot 里的程序就无法正常运行。就会对用户出现一个困扰,</span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; letter-spacing: 0.54px; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; letter-spacing: 0.54px; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">PC 开启与否,会让同样的 Robot 程序呈现了不同的运行结果</span></strong></span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; letter-spacing: 0.54px; box-sizing: border-box !important; overflow-wrap: break-word !important;">。当然作为弥补,可以跟用户解释这背后的逻辑……</span></span><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; text-align: left;"><section style="margin: 0px; padding: 0px 0px 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; display: inline-block; vertical-align: middle;"><section style="margin: 0px 0px -9px -6px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-left: 2px solid rgb(160, 160, 160); border-top: 2px solid rgb(160, 160, 160); height: 16px; width: 16px; border-right-color: rgb(160, 160, 160); border-bottom-color: rgb(160, 160, 160);"></section><section style="margin: 0px; padding: 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; background-color: rgb(95, 156, 239); font-size: 17px; color: rgb(255, 255, 255);"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">结语</strong></span></p></section></section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px;"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; line-height: 1.75em; overflow-wrap: break-word !important;">离线式受限于性能和成本,没有办法像在线式这么灵活和扩展,如果为了同时满足<span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-shadow: rgba(205, 205, 205, 0.78) 1px 0px; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">程序可以脱机运行</span></strong></span>又要扩展丰富,又要做不少的妥协。但是</section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"></span><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: left; background-color: rgb(255, 255, 255);"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: right; background-color: rgb(255, 255, 255);"><section style="margin: 0px 0px 0px auto; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></section></section><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; clear: both;"></section><section style="margin: -12px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-width: 1px; border-style: dotted; border-color: rgb(210, 210, 210);"><section powered-by="xiumi.us" style="margin: 0px; padding: 10px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><ul class=" list-paddingleft-2" style="padding: 0px 0px 0px 2.2em; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"><li><p style="padding: 0px; max-width: 100%; clear: both; min-height: 1em; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; box-sizing: border-box !important; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; background-color: rgb(214, 214, 214); box-sizing: border-box !important; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); font-size: 16px; letter-spacing: 0.54px; background-color: rgb(255, 255, 255); overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; background-color: rgb(214, 214, 214); overflow-wrap: break-word !important;">编程教育是否真的需要离线运行?</span></strong></span><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); font-size: 16px; letter-spacing: 0.54px; background-color: rgb(255, 255, 255); overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; overflow-wrap: break-word !important;"></span></strong></span><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></span></p></li><li><p style="padding: 0px; max-width: 100%; clear: both; min-height: 1em; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; box-sizing: border-box !important; overflow-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); background-color: rgb(214, 214, 214); font-family: 微软雅黑, Microsoft YaHei; font-size: 16px; overflow-wrap: break-word !important;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">就算脱机运行,真的就离得开 PC 吗?</strong></span><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; color: rgb(95, 156, 239);"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 17px;"></span></strong></span></p></li></ul><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: none; line-height: 1.75em; overflow-wrap: break-word !important;"></section></section></section></section></section><section style="margin: 0px; padding: 5px 0px 0px 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: left; background-color: rgb(255, 255, 255);"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 5px 1px 0px 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: right; background-color: rgb(255, 255, 255);"><section style="margin: 0px 0px 0px auto; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; clear: both;"></section></section><section powered-by="xiumi.us" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/></p></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; text-align: left;"><section style="margin: 0px; padding: 0px 0px 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; display: inline-block; vertical-align: middle;"><section style="margin: 0px 0px -9px -6px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-left: 2px solid rgb(160, 160, 160); border-top: 2px solid rgb(160, 160, 160); height: 16px; width: 16px; border-right-color: rgb(160, 160, 160); border-bottom-color: rgb(160, 160, 160);"></section><section style="margin: 0px; padding: 0px 6px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; background-color: rgb(95, 156, 239); font-size: 17px; color: rgb(255, 255, 255);"><p style="margin-top: 0px; margin-bottom: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; clear: both; min-height: 1em; overflow-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;">参考链接</strong></span></p></section></section></section><section powered-by="xiumi.us" style="margin: 10px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: left; background-color: rgb(255, 255, 255);"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: right; background-color: rgb(255, 255, 255);"><section style="margin: 0px 0px 0px auto; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"><br style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"/></section></section><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; clear: both;"></section><section style="margin: -12px 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; border-width: 1px; border-style: dotted; border-color: rgb(210, 210, 210);"><section powered-by="xiumi.us" style="margin: 0px; padding: 10px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; font-size: 15px;"><ul class=" list-paddingleft-2" style="padding: 0px 0px 0px 2.2em; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"><li><p style="padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: left; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; box-sizing: border-box !important; overflow-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-size: 14px; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">两种硬件编程风格的比较.</span></strong>(https://blog.just4fun.site/Hardware-Programming-style.html)</span></p></li></ul><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-align: left; clear: none; line-height: 1.75em; overflow-wrap: break-word !important;"></section><ul class=" list-paddingleft-2" style="padding: 0px 0px 0px 2.2em; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"><li><p style="padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: left; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; box-sizing: border-box !important; overflow-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">A JavaScript library for building visual programming editors: Try Blockly</span></strong>(https://developers.google.com/blockly/)</span></p></li></ul><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-align: left; clear: none; line-height: 1.75em; overflow-wrap: break-word !important;"></section><ul class=" list-paddingleft-2" style="padding: 0px 0px 0px 2.2em; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;"><li><p style="padding: 0px; max-width: 100%; clear: both; min-height: 1em; text-align: left; line-height: 1.75em; margin-bottom: 15px; margin-top: 15px; box-sizing: border-box !important; overflow-wrap: break-word !important;"><span style="font-size: 14px; font-family: 微软雅黑, Microsoft YaHei;"><strong style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><span style="font-family: 微软雅黑, Microsoft YaHei; font-size: 14px; margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; color: rgb(95, 156, 239); overflow-wrap: break-word !important;">Arduino IDE</span></strong>(https://www.arduino.cc/en/Main/Software)</span></p></li></ul><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; text-align: left; clear: none; line-height: 1.75em; overflow-wrap: break-word !important;"></section></section></section></section></section><section style="margin: 0px; padding: 5px 0px 0px 1px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: left; background-color: rgb(255, 255, 255);"><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 5px 1px 0px 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 12px; height: 12px; float: right; background-color: rgb(255, 255, 255);"><section style="margin: 0px 0px 0px auto; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; width: 6px; height: 6px; border-width: 1px; border-style: solid; border-color: rgb(95, 156, 239); border-radius: 50%;"></section></section><section style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box; word-wrap: break-word !important; clear: both;"></section></section></section><p><br/></p><p><br/></p><link rel="stylesheet" href="//bbs.lejurobot.com/source/plugin/wcn_editor/public/wcn_editor_fit.css?v134_iSW" id="wcn_editor_css"/>
页: [1]
查看完整版本: 两种硬件编程的风格:离线下载和在线交互