<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>智能创客</title><link>http://www.znck007.com/</link><description>极客空间,智能平台,免费教学,视频教程,创造儿时梦想!</description><item><title>《智能家居DIY》图书介绍、目录</title><link>http://www.znck007.com/?id=67</link><description>&lt;div align=&quot;left&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;智能家居&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY——OpenW&lt;/span&gt;rt+Arduino+Zigbee+3D&lt;span style=&quot;font-family:宋体&quot;&gt;打印&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;手机客户端&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;莫宏貌 梁依立 周国才&lt;span style=&quot;font-family:Times New Roman&quot;&gt; &lt;/span&gt;&amp;nbsp;&amp;nbsp;编著&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;ISBN 978-7-121-22481-2&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;2015年8月出版&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;定价：68.00元&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;280页&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;正16开&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;img id=&quot;aimg_924&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085756_17197.jpg&quot; class=&quot;zoom&quot; width=&quot;588&quot;/&gt;&lt;br/&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;img id=&quot;aimg_925&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085756_20117.jpg&quot; class=&quot;zoom&quot; width=&quot;591&quot;/&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;strong&gt;营销语 &lt;/strong&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;DIY&lt;span style=&quot;font-family:宋体&quot;&gt;自己的智能家居，学习分享创作属于每一个人的科技梦&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;strong&gt;编辑推荐&lt;/strong&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;智能家居，开始慢慢地融入千家万户，本书带给创客、极客、学生、电子爱好者等动手&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;自己的智能家居，学习分享创作属于每一个人的科技梦，带我们实现如同科幻电影里的家。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;strong&gt;内容提要&lt;/strong&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;智能产品、穿戴设备、&lt;span style=&quot;font-family:Times New Roman&quot;&gt;3D&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;打印的出现，整个&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;IT&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;行业又开始了新一轮的冲击，软、硬结合符合现在行业需求。本书通过开源系统&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;OpenWrt&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;和&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Arduino&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;，以及&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;WiFi&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;NRF24I01&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;（&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Zigbee/350/433/&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;蓝牙等）无线模块，实现家居网关、电灯开关、无线插座、远程开门、窗帘开闭、红外摇控、温度调控、空气质量、烟雾火警、水滴检测、安防报警、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;WiFi&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;摄像头、语音控制、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Android&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;客户端、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;3D&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;打印产品的实战演示，任何个人、公司、机构都可以进行二次开发。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;strong&gt;阅读人群&lt;/strong&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;本书适合智能家居、智能硬件开发人员及爱好者阅读。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;background-color:orange&quot;&gt;作者简介&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;周国才、莫宏貌、梁依立&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;2014&lt;span style=&quot;font-family:宋体&quot;&gt;年成立了智能创客。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;莫宏貌负责总体规划和代码编写。梁依立负责硬件和可行性设计。周国才负责产品与&lt;span style=&quot;font-family:Times New Roman&quot;&gt;3D&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;设计。&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;2014-2015&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;年，完成百元智能家居、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Arduino&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;开源智能家居、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;WiFi&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;作品&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;等，综合所有经验编写本书，为中国创客、极客、学生、爱好者贡献一些正能量&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;background-color:orange&quot;&gt;目录&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;智能家居系统&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;1.1&amp;nbsp;&amp;nbsp;OpenWrt&lt;span style=&quot;font-family:黑体&quot;&gt;系统&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;1.2&amp;nbsp;&amp;nbsp;Arduino&lt;span style=&quot;font-family:黑体&quot;&gt;系统&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;1.3&amp;nbsp;&amp;nbsp;NRF24L01&lt;span style=&quot;font-family:黑体&quot;&gt;无线模块&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;1.4&amp;nbsp;&amp;nbsp;Zigbee&lt;span style=&quot;font-family:黑体&quot;&gt;模块&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;1.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;控制器、传感器&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;1.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;智能家居系统流程图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;1.7&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;相关软件介绍&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;1.8&amp;nbsp;&amp;nbsp;Web&lt;span style=&quot;font-family:黑体&quot;&gt;手机控制端&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;家居网关&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 14&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.1&amp;nbsp;&amp;nbsp;WiFi&lt;span style=&quot;font-family:黑体&quot;&gt;核心板&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&amp;nbsp;&amp;nbsp;/ 16&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.2&amp;nbsp;&amp;nbsp;USB&lt;span style=&quot;font-family:黑体&quot;&gt;扩展板&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&amp;nbsp;&amp;nbsp;/ 20&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.3&amp;nbsp;&amp;nbsp;Arduino&lt;span style=&quot;font-family:黑体&quot;&gt;扩展板&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&amp;nbsp;&amp;nbsp;/ 23&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;无线扩展板&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&amp;nbsp;&amp;nbsp;/ 26&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;OpenWrt&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;刷固件&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 28&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;设置中文、时区、修改软件包源&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 31&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.7&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;设置&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;sta+ap&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;模式（上网&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;手机连接）&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 33&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.8&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;使用&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;putty&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;的&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;SSH&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;登录&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;OpenWrt&amp;nbsp;&amp;nbsp;/ 36&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.9&amp;nbsp;&amp;nbsp;TF&lt;span style=&quot;font-family:黑体&quot;&gt;卡挂载&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 39&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.10&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;使用&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;winscp&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;上传文件（上传下载源文件到&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;OpenWrt&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;）&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 40&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.11&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;安装配置&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;php+mysql+uhttpd&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;环境&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 43&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.12&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;安装&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;mysql&amp;nbsp;&amp;nbsp;/ 47&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.13&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;使用&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;NavicatForMysql&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;软件新建&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;mysql&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;表&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 50&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.14&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;安装&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Python&amp;nbsp;&amp;nbsp;/ 53&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.15&amp;nbsp;&amp;nbsp;Arduino&lt;span style=&quot;font-family:黑体&quot;&gt;网关代码编译（&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;NRF24L01/ZIGBEE&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;）&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 65&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;2.16&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;家居网关演示视频&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 76&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;电灯开关&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 77&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;3.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 78&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;3.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 79&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;3.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;继电器介绍&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 81&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;3.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码实例&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 82&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;3.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 95&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;3.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见的问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 109&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;无线插座&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 111&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;4.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 112&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;4.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;智能开关&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 112&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;4.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 113&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;4.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 120&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;远程开门&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 121&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;5.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 122&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;5.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 122&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;5.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;电子门锁&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 124&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;5.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码实例&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 124&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;5.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 135&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;5.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 139&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;6&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;窗帘开关&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 140&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;6.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 141&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;6.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 141&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;6.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;无线遥控窗帘&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 143&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;6.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码实例&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 144&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;6.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 145&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;6.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 147&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;红外遥控&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 148&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;7.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 149&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;7.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 149&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;7.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;红外原理&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 151&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;7.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码实例&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 151&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;7.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 167&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;7.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;市面上的空调、电视解码&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 171&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;7.7&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 172&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;温湿监控&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 173&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;8.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 174&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;8.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 174&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;8.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;温度&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;湿度传感器说明&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 176&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;8.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码实例&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 177&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;8.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 185&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;8.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 187&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;空气质量&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 188&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;9.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 189&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;9.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 189&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;9.3&amp;nbsp;&amp;nbsp;PM2.5&lt;span style=&quot;font-family:黑体&quot;&gt;介绍&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 191&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;9.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码实例&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 192&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;9.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 197&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;9.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 199&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;烟雾火警&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 200&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;10.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 201&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;10.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 201&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;10.3&amp;nbsp;&amp;nbsp;MQ-2&lt;span style=&quot;font-family:黑体&quot;&gt;说明&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 203&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;10.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码实例&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 204&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;10.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 207&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;10.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 210&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;水滴检测&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 211&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;11.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 212&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;11.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 212&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;11.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;水滴传感器说明&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 214&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;11.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码实例&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 214&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;11.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 218&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;11.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 221&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;12&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;人体红外探测器&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 222&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;12.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 223&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;12.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 223&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;12.3&amp;nbsp;&amp;nbsp;HC-SR501&lt;span style=&quot;font-family:黑体&quot;&gt;传感器&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 225&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;12.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码实例&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 225&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;12.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 229&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;12.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 231&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;13&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;WiFi&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;摄像头&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 232&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;13.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 233&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;13.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 233&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;13.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;配置摄像头&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 233&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;13.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;开机自动启动&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 235&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;13.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;端口映射&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 236&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;13.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;网页和手机访问&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 239&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;13.7&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 241&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;14&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;语音控制&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 242&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;14.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 242&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;14.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;材料列表、原理图&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 242&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;14.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;语音识别技术&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 243&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;14.4&amp;nbsp;&amp;nbsp;Android&lt;span style=&quot;font-family:黑体&quot;&gt;代码讲解&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 243&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;14.5&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示视频&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 248&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;14.6&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 248&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;15&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Android&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;客户端&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 249&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;15.1&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;用途&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 249&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;15.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;代码讲解&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 249&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;15.3&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;实战演示视频&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 256&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;15.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 257&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;第&lt;span style=&quot;font-family:Times New Roman&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;章&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;3D&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;打印模型&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 258&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;16.1&amp;nbsp;&amp;nbsp;3D&lt;span style=&quot;font-family:黑体&quot;&gt;打印的作用&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 258&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;16.2&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;如何&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;3D&lt;/span&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;打印&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 258&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;16.3&amp;nbsp;&amp;nbsp;3D&lt;span style=&quot;font-family:黑体&quot;&gt;模型源文件下载&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 259&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:黑体&quot;&gt;&lt;span style=&quot;font-size:12pt&quot;&gt;16.4&amp;nbsp;&amp;nbsp;&lt;span style=&quot;font-family:黑体&quot;&gt;常见问题及注意事项&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;/ 267&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;strong&gt;前言&lt;/strong&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;随着越来越火热的智能产品、穿戴设备、&lt;span style=&quot;font-family:Times New Roman&quot;&gt;3D&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;打印的出现，整个科技行业又开始了新一轮的冲击，软、硬结合成了新潮流。&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;各大&lt;span style=&quot;font-family:Times New Roman&quot;&gt;IT&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;老大们开始进入智能家居的准备，小米、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;360&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;、百度等研究团队都在争分夺秒地占据市场，时机成熟后，路由器、机顶盒都有可能成为家居控制中心（本书简称为家居网关）。&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;身为学生、技术、创客、极客的我们能在这场革命中获得什么呢？我们智能创客团队编写出了这本《智能家居&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;》，个人就可以&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;自己的智能家居。家居网关主要采用开源系统&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;OpenWrt&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;和&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Arduino&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;，涉及&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;WiFi&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;NRF24L01&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;（&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Zigbee/350/433&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;）等无线模块。写作本书的目的是为了学习、分享、创业等，为中国的创客精神奉献一些微薄之力，任何个人、公司、机构都可以进行二次开发。&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;本书提供了配件清单、原理图、源代码、软件下载、制作流程，如果不具备做板能力，也可以登录智能创客网站&lt;span style=&quot;font-family:Times New Roman&quot;&gt;www.znck007.com&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;直接购买。&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;同时，我们还扩展使用&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Android&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;功能制作语音控制&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;APP&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;，&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;3D&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;打印模型外壳、源代码也全部奉献给大家。阅读本书可以实现家居网关、电灯开关、无线插座、远程开门、窗帘开闭、红外摇控、温度监控、空气质量、烟雾火警、水滴检测、人体红外探测器、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;WiFi&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;摄像头、语音控制、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;Android&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;客户端、&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;3D&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;打印模型等的&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;。&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;由于本书是以实战&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;教程为主，因此大多采用图文并茂，没有太多的理论知识，读者只需按本书的步骤实践，就能&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;出智能家居。&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;采用市场上使用最多的芯片、传感器、控制器等&lt;span style=&quot;font-family:Times New Roman&quot;&gt;DIY&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;下来的成本只有&lt;/span&gt;&lt;span style=&quot;font-family:Times New Roman&quot;&gt;1000&lt;/span&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;多元，也就是说，用这个对于家居来说是个极小的数目就能打造自己智能的家。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-family:宋体&quot;&gt;&lt;span style=&quot;font-size:10.5pt&quot;&gt;编著者&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:57:20 +0800</pubDate></item><item><title>《智能家居DIY》新手视频教程和书的暧昧关系</title><link>http://www.znck007.com/?id=66</link><description>&lt;p&gt;8月底出版以后，我们的《智能家居DIY》图书在各大电商的环境下，销量突飞猛进，对比同类型书籍，我们变成了畅销书。&lt;br/&gt;&lt;img id=&quot;aimg_1113&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085701_64056.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;但评价褒贬不一，有些读者说我们的是小人书（插图和代码）、有些说只适合新手入门（全按步聚做就行）、有些说不够专业（全是图对原理讲的不深入）、有些太难（又是linux，又是c，又是单片机，又是协议的）等等，因为每个人的环境角度，知识面，角度的不同，所以有了不同的说法。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1114&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085701_15392.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;针对于这种现象，我们官方觉得：新手按步聚流程做就好，有基础的改改代码变成自己的，高手请过边（绕过的意思）。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1115&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085701_73321.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;我们书的副标题是OpenWRT/Arduino/Zigbee/Nrf24l01/手机客户端/3D打印，官方用的是703N硬件的改造刷入OpenWrt形成了智能网关。&lt;br/&gt;通过与Arduino的通信，Ardunio与zigbee、nrf24l01通信，发送接收各个终端（控制器或传感器），手机连入openwrt或云端整套的思路和解决方案。&lt;br/&gt;&lt;br/&gt;但这样问题又来了，很多创友看着书DIY经常会出错。&lt;br/&gt;也许是一个小数点，也许是硬件线路没插对，都来跟我们抱怨，那么现在怎么办？&lt;br/&gt;&lt;br/&gt;当然有办法，我们这里出了视频教程了，虽然不专业，但不是技术宅们最直接最俗搞定的办法吗？&lt;br/&gt;&lt;img id=&quot;aimg_1116&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085701_90258.jpg&quot; class=&quot;zoom&quot; width=&quot;547&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;又有人问，我都有书了，还要看视频做什么，书不是最好的吗？&lt;br/&gt;我们现在回到学校，我们买了书本，然后就没有然后吗？当然不可能，我们要拿着课本听老师讲，对吧。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1117&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085701_70764.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;所以视频的作用等于老师，他教你要注意什么，接哪里，还要讲一些容易出错的地方，非常的好。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1118&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085702_49014.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;视频对着书和论坛，一步一步教大家怎么做哦。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;分享一个创友做的插座，秀秀。&lt;br/&gt;&lt;img id=&quot;aimg_1119&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085702_99430.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;（千万提醒，220v没有电工基础的同学不能碰，后果自负的）&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;视频已经上专到了网盘，请大家点击这里下载：&lt;br/&gt;链接: &lt;a href=&quot;http://pan.baidu.com/s/1i376XUH&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;http://pan.baidu.com/s/1i376XUH&lt;/a&gt; 密码: pfez&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;智能创客（2群）&lt;span style=&quot;color:#000&quot;&gt;&lt;span style=&quot;background-color:#F0F0F0&quot;&gt;&lt;span style=&quot;font-family:微软雅黑, 宋体&quot;&gt;&lt;span style=&quot;font-size:12px&quot;&gt;519184230（任何爱好者可加）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;智能创客（vip群）&lt;span style=&quot;background-color:#F0F0F0&quot;&gt;&lt;span style=&quot;font-family:微软雅黑, 宋体&quot;&gt;&lt;span style=&quot;color:#000000&quot;&gt;517095393（只限购买书或硬件的创友）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;智能创客（Team群）&lt;span style=&quot;background-color:#F0F0F0&quot;&gt;&lt;span style=&quot;font-family:微软雅黑, 宋体&quot;&gt;&lt;span style=&quot;color:#000000&quot;&gt;516855187（只限会写教程或DIY或做板的人一起做中国的有名的创客）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;background-color:#F0F0F0&quot;&gt;&lt;span style=&quot;font-family:微软雅黑, 宋体&quot;&gt;&lt;span style=&quot;color:#000000&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;background-color:#F0F0F0&quot;&gt;&lt;span style=&quot;font-family:微软雅黑, 宋体&quot;&gt;&lt;span style=&quot;color:#000000&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#000&quot;&gt;请&lt;/span&gt;&lt;span style=&quot;color:#000&quot;&gt;&lt;span style=&quot;color:#000&quot;&gt;&lt;span style=&quot;color:#000&quot;&gt;&lt;span style=&quot;color:#000&quot;&gt;&lt;span style=&quot;color:#000&quot;&gt;关注&lt;span style=&quot;background-color:#FF00FF&quot;&gt;@智能创客&lt;/span&gt;&lt;span style=&quot;color:#333333&quot;&gt;&amp;nbsp;&amp;nbsp;微信：znck007&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color:#000&quot;&gt;（打造DIY创客平台）&lt;/span&gt;&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:56:39 +0800</pubDate></item><item><title>智能家居DIY》图书已经出版了，感谢众多创友们的支持</title><link>http://www.znck007.com/?id=65</link><description>&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;&lt;img id=&quot;aimg_844&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085620_97588.jpg&quot; class=&quot;zoom&quot; width=&quot;532&quot;/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;经过了几个月的努力，我们与电子工业出版社合作的《智能家居DIY》书籍面市了。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;当时接到出版社的邀请，我们3个创客兴奋不已，因为2年创客历程终于体现出一点价值，我们坚信认真了就会好运的理念驱动着。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;&lt;img id=&quot;aimg_845&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085620_34801.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;随着越来越火热的智能产品、穿戴设着、3D打印的出现，软硬结合成了新主流。创办人阿貌，在同城遇到了硬件达人大神依郎，3D设计师阿才，然后创建了智能创客，从最简单的arduino开始DIY并分享在平台，随后增加了zigbee，最后容入了wifi未来主流。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;本书共有16章，从系统-网关-传感器-终端-云端-手机客户端-3D打印技术，充分的体现了创客一点一滴的积累，并打造DIY出个人智能家居概念。&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;&lt;img id=&quot;aimg_846&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085620_63390.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;全书可以实现家居网关、电灯开关、无线插座、远程开门、窗帘开闭、红外摇控、温度监控、空气质量、烟雾火警、水滴检测、人体红外探测器、wifi摄像头、语音控制、android客户端、3D打印模型。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;作为学生、技术、创客、极客的我们通过本书能学到开源系统OpenWRT和Arduino，涉及到WIFI、NRF24L01（ZIGBEE/350/433等）无线模块，主要是作用是为了学习、分享、创业等，为中国的创客精神奉献一些微薄之力，任何个人、公司、机构都可以进行二次开发。&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;一起加油吧创友们。&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#3E3E3E&quot;&gt;&lt;br/&gt;创客、极客，转发给你的朋友圈吧！&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:55:55 +0800</pubDate></item><item><title>《智能家居DIY》智能路由器+网关+控制端解决方案（全开源）</title><link>http://www.znck007.com/?id=64</link><description>&lt;p&gt;在智能设备、3D打印、物联网IOT很热门，智能家居协议还未形成统一，小米路由器、TP-LINK、极路由、360路由器等已经进入了智能时代，猜猜他们想干什么？成为路由器+家居控制中心，路由器是一天24小时都在运行，具备有成为家居控制中心的条件。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_938&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085522_52792.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;2013年底，基于对创客的爱好，我们成立了&amp;quot;智能创客网”&lt;a href=&quot;http://www.znck007.com&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;www.znck007.com&lt;/a&gt;，开始研究硬件+软件+手机客户端的智能方案，每个人都有一个家，因此从家开始，以让我们技术宅拯救世界为理念，开始了智能家居DIY。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_939&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085522_60378.jpg&quot; class=&quot;zoom&quot; width=&quot;497&quot;/&gt;&lt;br/&gt;经过了二年的研究，从第一系列（arduino 
mini+enc28j60+nrf24l01）和第二系列（arduino+zigbee），到第三系列（openwrt(wifi)+arduino+zigbee/nrf24l01/ble），同时受到电子工业出版社邀请写了一本《智能家居DIY》的书籍。书中介绍第三系列的具体实现方案，采用的openwrt是一个路由器系统（小米路由器就是基于这个系统深度开发的），全天稳定运行，不仅可以当路由器使用，也可以实现家居控制中心。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;font-size:48px&quot;&gt;一、选择硬件板&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;img id=&quot;aimg_940&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085522_34122.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;在市面上有很多硬件板，如上图703n、RT5350、&lt;span style=&quot;font-size:13px&quot;&gt;Raspberry（树莓派）、bananapi（香蕉派）&lt;/span&gt;，我们要满足可以刷openwrt（具有Wifi的STA+AP、USB接口）。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_942&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085522_52756.jpg&quot; class=&quot;zoom&quot; width=&quot;582&quot;/&gt;&lt;br/&gt;经过研究，采用了性价比比较高的703n，改造成flash16M，内存64M，然后刷入openwrt系统。（采用其它板也可以，openwrt软件部分类式）&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;font-size:48px&quot;&gt;二、刷入openwrt系统&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_943&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085522_98007.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;703n使用flash刷写器刷入openwrt固件（各种硬件开发板，刷入openwrt的方式不同）&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_944&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085522_20331.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;使网页登陆openwrt（luci），如上图很像路由器系统网页设置，我们也可以修改成自定义的页面。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;font-size:48px&quot;&gt;三、接上arduino+zigbee+nrf24l01&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_945&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085522_54162.jpg&quot; class=&quot;zoom&quot; width=&quot;449&quot;/&gt;&lt;br/&gt;使用连usb连接（或如我们做成pcb板，直接插入openwrt板）&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_946&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085522_74778.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;安装ch340、ftdi驱动（openwrt一条命令就可以安装）&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_948&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085523_63620.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;这时openwrt可以和arduino串口通信（像电脑开发arduino一样简单）&lt;br/&gt;编写串口通信代码可以使用lua、python、C代码编译、ipk编译（根据自己懂的语言开发）&lt;br/&gt;&lt;br/&gt;如下python脚本：&lt;span style=&quot;color:#008000&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#008000&quot;&gt;print &amp;quot;ttyUSB0 ready...&amp;quot;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#008000&quot;&gt;ser = serial.Serial(&amp;#39;/dev/ttyUSB0&amp;#39;, 115200, timeout=1) #打开串口通信&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#008000&quot;&gt;#ser.write(&amp;quot;lABC&amp;quot;) #向串口发送字符&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#008000&quot;&gt;while True:&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#008000&quot;&gt;&amp;nbsp; &amp;nbsp; data=ser.readline() #读取一行 读取1个字符read(1)&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#008000&quot;&gt;&amp;nbsp; &amp;nbsp; print &amp;quot;serial data &amp;lt;&amp;lt;&amp;lt;&amp;quot;+data&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#008000&quot;&gt;&amp;nbsp; &amp;nbsp; time.sleep(1)&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#008000&quot;&gt;ser.close()&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_949&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085523_42417.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;br/&gt;然后再开发arduino+zigbee（串口通信，也兼容ble等）+nrf24l01（spi通信）代码，arduino开源有很多代码可以参考，zigbee自组网代码（可以跟我们联系要）。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;font-size:48px&quot;&gt;四、云端服务器（手机端外网控制）&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;img id=&quot;aimg_950&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085523_51500.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;云端服务器可以使用java,aspx,php等语言，加上mysql,mssql,oracle等数据库&lt;br/&gt;使用您善长的语言+数据库开发，API控制和保存数据记录。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_951&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085523_89814.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;云端主要实现与openwrt通信（可采用http、tcp、udp等）&lt;br/&gt;http协议简单，但会有延时和耗cpu/ram资源，tcp长连接耗服务器资源，udp转发适合方案（但比较专业和深入）&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;font-size:48px&quot;&gt;五、终端&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;img id=&quot;aimg_952&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085523_14644.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;终端基础硬件，采用zigbee或arduino+nrf24(可含zigbee/ble等)做为与openwrt网关通信。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;font-size:48px&quot;&gt;六、传感器，控制器&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;img id=&quot;aimg_954&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085524_15652.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;传感器上传数据到云端，供用户电脑手机查看分析报警等，如温度、湿度、pm2.5、气压、门磁、下雨、人体红外等。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_955&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085524_89235.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;控制器收到用户命令实现开关，控制家电类操作，如开灯、开门、开窗、电视、冰箱、空调等。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_953&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085524_75274.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;传感器数据流程：传感器-》终端无线-》网关无线-》云端服务器-》保存传感数据-》用户查看。&lt;br/&gt;控制器数据流程：手机操作-》云端服务器-》网关-》网关无线-》终端无线-》开关命令。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;font-size:48px&quot;&gt;七、微信/小米/360硬件平台研究&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;img id=&quot;aimg_957&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085524_73777.jpg&quot; class=&quot;zoom&quot; width=&quot;575&quot;/&gt;当前微信、QQ、360、小米、OneNET等互联网公司都开发了硬件平台，微信有自己的Airsync/Airkiss协议，小米有了智能模组、360生产物联芯片模块等。&lt;br/&gt;他们以云端+芯片模块（含协议）的模式与各大厂商、公司合作，希望有大量的厂家接入并生产给消费者。&lt;br/&gt;&lt;br/&gt;未来局势很明显，他们提供强大的云端和芯片模块（有些免费送的），物联网IOT就是这些大互联网公司的天下，那跟我们也就没什么关系了吗？&lt;br/&gt;智能创客网&lt;a href=&quot;http://www.znck007.com&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;www.znck007.com&lt;/a&gt;汇集了群多创客，免费智能硬件教学（图书+源码+论坛+云端+视频等），教如何连接这些硬件平台，站在巨人的肩膀上做自己的产品。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;font-size:48px&quot;&gt;八、关于我们&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;img id=&quot;aimg_956&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085524_18809.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:54:34 +0800</pubDate></item><item><title>《OpenWRT》04：luci和lua介绍与实例应用</title><link>http://www.znck007.com/?id=63</link><description>&lt;p&gt;Lua是一个小巧的脚本语言，很容易嵌入其它语言。轻量级 
LUA语言的官方版本只包括一个精简的核心和最基本的库。这使得LUA体积小、启动速度快，从而适合嵌入在别的程序里。UCI是OpenWrt中为实现所有系统配置的一个统一接口，英文名Unified
 Configuration Interface，即统一配置接口。LuCI,即是这两个项目的合体，目的是为OpenWrt固件从 
Whiterussian 到 Kamikaze实现快速配置接口，可以实现路由的网页配置界面。&lt;br/&gt;&lt;br/&gt;从上面可以知道，在openwrt我们使用luci实现使用网页就可以配置，这极大的方便了初学的开发人员。&lt;br/&gt;&lt;br/&gt;首页html代码&lt;br/&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br/&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;&lt;br/&gt;&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;gt;&lt;br/&gt;&amp;lt;head&amp;gt;&lt;br/&gt;&amp;lt;meta http-equiv=&amp;quot;refresh&amp;quot; content=&amp;quot;0; URL=/cgi-bin/luci&amp;quot; /&amp;gt;&lt;br/&gt;&amp;lt;/head&amp;gt;&lt;br/&gt;&amp;lt;body style=&amp;quot;background-color: black&amp;quot;&amp;gt;&lt;br/&gt;&amp;lt;a style=&amp;quot;color: white; text-decoration: none&amp;quot; href=&amp;quot;/cgi-bin/luci&amp;quot;&amp;gt;LuCI - Lua Configuration Interface&amp;lt;/a&amp;gt;&lt;br/&gt;&amp;lt;/body&amp;gt;&lt;br/&gt;&amp;lt;/html&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;跳转执行luci&lt;br/&gt;#!/usr/bin/lua&lt;br/&gt;require &amp;quot;luci.cacheloader&amp;quot;&lt;br/&gt;require &amp;quot;luci.sgi.cgi&amp;quot;&lt;br/&gt;luci.dispatcher.indexcache = &amp;quot;/tmp/luci-indexcache&amp;quot;&lt;br/&gt;luci.sgi.cgi.run()&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;run方法的主要任务就是在安全的环境中打开开始页面（登录页面），在run中，最主要的功能还是在dispatch.lua中完成。&lt;br/&gt;运行luci之后，就会出现登录界面：&lt;br/&gt;&lt;br/&gt;winscp图&lt;br/&gt;&lt;br/&gt;luci的精华所在，/usr/lib/lua/luci/下有三个目录model、view、controller，它们对应M、V、C。下面简单介绍生成界面的方法。&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;Call()方法会调用controller里的函数，主要通过openwrt系统的uci、network、inconfig等工具对系统进行设置，如果需要还会生成新界面。动态生成界面的方法有两种，一是通过cbi()/form()方法，它们利用model中定义的模板map，生成html文件；另一种是通过template()方法，利用view中定义的htm（一种类似html的文件），直接生成界面。&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;img id=&quot;aimg_Z1lj0&quot; class=&quot;zoom&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085410_60496.png&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;这套系统是很复杂的，但只要定义好了，使用起来就非常方便，增加页面，修改页面某个内容等操作都非常简单。&lt;/div&gt;&lt;p&gt;启动：/etc/init.d/uhttpd start开机自启动：/etc/init.d/uhttpd enable&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;未完待续...&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:53:46 +0800</pubDate></item><item><title>《OpenWRT》03：python安装与脚本编写</title><link>http://www.znck007.com/?id=62</link><description>&lt;p&gt;在OpenWRT里，我们使用到python源言，具有丰富和强大的类库，能够把用其他语言制作的各种模块（尤其是C）很轻松地联结在一起。&lt;br/&gt;我们编写python脚本，可以直接运行，不需要再编译成可执行文件，因此他也成为一门易读、易维护，并且被大量用户所欢迎的、用途广泛的语言。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_926&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085329_66111.jpg&quot; class=&quot;zoom&quot; width=&quot;286&quot;/&gt;&lt;img id=&quot;aimg_927&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085329_84105.jpg&quot; class=&quot;zoom&quot; width=&quot;255&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Microsoft YaHei, SimHei, Verdana&quot;&gt;&lt;span style=&quot;color:#000000&quot;&gt;&lt;span style=&quot;font-size:22px&quot;&gt;OpenWRT版&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;img id=&quot;aimg_H8V4o&quot; class=&quot;zoom&quot; src=&quot;http://www.znck007.com/data/attachment/forum/201410/13/201251pi7htqif7fo8lff0.jpg&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;br/&gt;&lt;span style=&quot;color:#008000&quot;&gt;opkg update&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:microsoft yahei&quot;&gt;&lt;span style=&quot;color:#696969&quot;&gt;&lt;span style=&quot;color:#008000&quot;&gt;opkg install &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family:microsoft yahei&quot;&gt;&lt;span style=&quot;color:#696969&quot;&gt;&lt;span style=&quot;color:#008000&quot;&gt;python&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Microsoft YaHei, SimHei, Verdana&quot;&gt;&lt;span style=&quot;color:#000000&quot;&gt;&lt;span style=&quot;font-size:22px&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;提示：编写python脚本后，然后python 脚本路径就可以执行了（《智能家居diy》图书在网关部份有介绍脚本编写）。&lt;br/&gt;&lt;br/&gt;这里我们也详细的介绍，python脚本的几个实用的功能。&lt;br/&gt;&lt;span style=&quot;font-size:18px&quot;&gt;&lt;strong&gt;一、接收get或post参数，然后实行openwrt(linux命令)&lt;/strong&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;div style=&quot;padding:15px 0;&quot;&gt;&lt;br/&gt;&lt;div&gt;&lt;div id=&quot;highlighter_664503&quot; class=&quot;syntaxhighlighter notranslate python&quot;&gt;&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;01&lt;/div&gt;&lt;div class=&quot;line number2 index1 alt1&quot;&gt;02&lt;/div&gt;&lt;div class=&quot;line number3 index2 alt2&quot;&gt;03&lt;/div&gt;&lt;div class=&quot;line number4 index3 alt1&quot;&gt;04&lt;/div&gt;&lt;div class=&quot;line number5 index4 alt2&quot;&gt;05&lt;/div&gt;&lt;div class=&quot;line number6 index5 alt1&quot;&gt;06&lt;/div&gt;&lt;div class=&quot;line number7 index6 alt2&quot;&gt;07&lt;/div&gt;&lt;div class=&quot;line number8 index7 alt1&quot;&gt;08&lt;/div&gt;&lt;div class=&quot;line number9 index8 alt2&quot;&gt;09&lt;/div&gt;&lt;div class=&quot;line number10 index9 alt1&quot;&gt;10&lt;/div&gt;&lt;div class=&quot;line number11 index10 alt2&quot;&gt;11&lt;/div&gt;&lt;div class=&quot;line number12 index11 alt1&quot;&gt;12&lt;/div&gt;&lt;div class=&quot;line number13 index12 alt2&quot;&gt;13&lt;/div&gt;&lt;div class=&quot;line number14 index13 alt1&quot;&gt;14&lt;/div&gt;&lt;div class=&quot;line number15 index14 alt2&quot;&gt;15&lt;/div&gt;&lt;div class=&quot;line number16 index15 alt1&quot;&gt;16&lt;/div&gt;&lt;div class=&quot;line number17 index16 alt2&quot;&gt;17&lt;/div&gt;&lt;div class=&quot;line number18 index17 alt1&quot;&gt;18&lt;/div&gt;&lt;div class=&quot;line number19 index18 alt2&quot;&gt;19&lt;/div&gt;&lt;div class=&quot;line number20 index19 alt1&quot;&gt;20&lt;/div&gt;&lt;div class=&quot;line number21 index20 alt2&quot;&gt;21&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;div class=&quot;container&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#!/usr/bin/python&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number2 index1 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number3 index2 alt2&quot;&gt;&lt;code class=&quot;python keyword&quot;&gt;import&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;cgi, os&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number4 index3 alt1&quot;&gt;&lt;code class=&quot;python keyword&quot;&gt;import&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;commands&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number5 index4 alt2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number6 index5 alt1&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#设置输出格式为网页&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number7 index6 alt2&quot;&gt;&lt;code class=&quot;python functions&quot;&gt;print&lt;/code&gt; &lt;code class=&quot;python comments&quot;&gt;&amp;quot;&amp;quot;&amp;quot;\&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number8 index7 alt1&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;Content-Type: text/html\n&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number9 index8 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number10 index9 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number11 index10 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#读取get或post参数&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number12 index11 alt1&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;form &lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;cgi.FieldStorage()&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number13 index12 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;# Get cmd string here.&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number14 index13 alt1&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;cmdstring&amp;nbsp; &lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;form[&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;cmd&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;]&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number15 index14 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#print cmdstring.value&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number16 index15 alt1&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#form.has_key(&amp;quot;cmd&amp;quot;)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number17 index16 alt2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number18 index17 alt1&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#实行openwrt(linux命令)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number19 index18 alt2&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;(status, output) &lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;commands.getstatusoutput(cmdstring.value)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number20 index19 alt1&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#print status&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number21 index20 alt2&quot;&gt;&lt;code class=&quot;python functions&quot;&gt;print&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;output&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;二、GET网络的天气预报&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;div style=&quot;padding:15px 0;&quot;&gt;&lt;br/&gt;&lt;div&gt;&lt;div id=&quot;highlighter_87901&quot; class=&quot;syntaxhighlighter notranslate python&quot;&gt;&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;01&lt;/div&gt;&lt;div class=&quot;line number2 index1 alt1&quot;&gt;02&lt;/div&gt;&lt;div class=&quot;line number3 index2 alt2&quot;&gt;03&lt;/div&gt;&lt;div class=&quot;line number4 index3 alt1&quot;&gt;04&lt;/div&gt;&lt;div class=&quot;line number5 index4 alt2&quot;&gt;05&lt;/div&gt;&lt;div class=&quot;line number6 index5 alt1&quot;&gt;06&lt;/div&gt;&lt;div class=&quot;line number7 index6 alt2&quot;&gt;07&lt;/div&gt;&lt;div class=&quot;line number8 index7 alt1&quot;&gt;08&lt;/div&gt;&lt;div class=&quot;line number9 index8 alt2&quot;&gt;09&lt;/div&gt;&lt;div class=&quot;line number10 index9 alt1&quot;&gt;10&lt;/div&gt;&lt;div class=&quot;line number11 index10 alt2&quot;&gt;11&lt;/div&gt;&lt;div class=&quot;line number12 index11 alt1&quot;&gt;12&lt;/div&gt;&lt;div class=&quot;line number13 index12 alt2&quot;&gt;13&lt;/div&gt;&lt;div class=&quot;line number14 index13 alt1&quot;&gt;14&lt;/div&gt;&lt;div class=&quot;line number15 index14 alt2&quot;&gt;15&lt;/div&gt;&lt;div class=&quot;line number16 index15 alt1&quot;&gt;16&lt;/div&gt;&lt;div class=&quot;line number17 index16 alt2&quot;&gt;17&lt;/div&gt;&lt;div class=&quot;line number18 index17 alt1&quot;&gt;18&lt;/div&gt;&lt;div class=&quot;line number19 index18 alt2&quot;&gt;19&lt;/div&gt;&lt;div class=&quot;line number20 index19 alt1&quot;&gt;20&lt;/div&gt;&lt;div class=&quot;line number21 index20 alt2&quot;&gt;21&lt;/div&gt;&lt;div class=&quot;line number22 index21 alt1&quot;&gt;22&lt;/div&gt;&lt;div class=&quot;line number23 index22 alt2&quot;&gt;23&lt;/div&gt;&lt;div class=&quot;line number24 index23 alt1&quot;&gt;24&lt;/div&gt;&lt;div class=&quot;line number25 index24 alt2&quot;&gt;25&lt;/div&gt;&lt;div class=&quot;line number26 index25 alt1&quot;&gt;26&lt;/div&gt;&lt;div class=&quot;line number27 index26 alt2&quot;&gt;27&lt;/div&gt;&lt;div class=&quot;line number28 index27 alt1&quot;&gt;28&lt;/div&gt;&lt;div class=&quot;line number29 index28 alt2&quot;&gt;29&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;div class=&quot;container&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#!/usr/bin/python&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number2 index1 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number3 index2 alt2&quot;&gt;&lt;code class=&quot;python keyword&quot;&gt;import&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;cgi, os&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number4 index3 alt1&quot;&gt;&lt;code class=&quot;python keyword&quot;&gt;import&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;urllib&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number5 index4 alt2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number6 index5 alt1&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#生成数据&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number7 index6 alt2&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;data &lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;{}&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number8 index7 alt1&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;data[&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;date&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;]&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;2012-04-15&amp;#39;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number9 index8 alt2&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;url_values&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;urllib.urlencode(data)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number10 index9 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number11 index10 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#设置天气网址&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number12 index11 alt1&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;url&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;http://qdqx.qingdao.gov.cn/zdz/data.aspx&amp;#39;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number13 index12 alt2&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;full_url&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;url&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;+&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;?&amp;#39;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;+&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;url_values&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number14 index13 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number15 index14 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#Get请求&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number16 index15 alt1&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;response&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;urllib.urlopen(full_url)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number17 index16 alt2&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;result&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;response.read()&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number18 index17 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number19 index18 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#写入到文本&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number20 index19 alt1&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;f &lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt; &lt;code class=&quot;python functions&quot;&gt;open&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;quot;text.txt&amp;quot;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;wb&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number21 index20 alt2&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;f.write(result)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number22 index21 alt1&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;f.close()&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number23 index22 alt2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number24 index23 alt1&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#设置输出格式为网页&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number25 index24 alt2&quot;&gt;&lt;code class=&quot;python functions&quot;&gt;print&lt;/code&gt; &lt;code class=&quot;python comments&quot;&gt;&amp;quot;&amp;quot;&amp;quot;\&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number26 index25 alt1&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;Content-Type: text/html\n&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number27 index26 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number28 index27 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number29 index28 alt2&quot;&gt;&lt;code class=&quot;python functions&quot;&gt;print&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;result&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;三、读写mysql函数&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;div style=&quot;padding:15px 0;&quot;&gt;&lt;br/&gt;&lt;div&gt;&lt;div id=&quot;highlighter_258754&quot; class=&quot;syntaxhighlighter notranslate python&quot;&gt;&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;01&lt;/div&gt;&lt;div class=&quot;line number2 index1 alt1&quot;&gt;02&lt;/div&gt;&lt;div class=&quot;line number3 index2 alt2&quot;&gt;03&lt;/div&gt;&lt;div class=&quot;line number4 index3 alt1&quot;&gt;04&lt;/div&gt;&lt;div class=&quot;line number5 index4 alt2&quot;&gt;05&lt;/div&gt;&lt;div class=&quot;line number6 index5 alt1&quot;&gt;06&lt;/div&gt;&lt;div class=&quot;line number7 index6 alt2&quot;&gt;07&lt;/div&gt;&lt;div class=&quot;line number8 index7 alt1&quot;&gt;08&lt;/div&gt;&lt;div class=&quot;line number9 index8 alt2&quot;&gt;09&lt;/div&gt;&lt;div class=&quot;line number10 index9 alt1&quot;&gt;10&lt;/div&gt;&lt;div class=&quot;line number11 index10 alt2&quot;&gt;11&lt;/div&gt;&lt;div class=&quot;line number12 index11 alt1&quot;&gt;12&lt;/div&gt;&lt;div class=&quot;line number13 index12 alt2&quot;&gt;13&lt;/div&gt;&lt;div class=&quot;line number14 index13 alt1&quot;&gt;14&lt;/div&gt;&lt;div class=&quot;line number15 index14 alt2&quot;&gt;15&lt;/div&gt;&lt;div class=&quot;line number16 index15 alt1&quot;&gt;16&lt;/div&gt;&lt;div class=&quot;line number17 index16 alt2&quot;&gt;17&lt;/div&gt;&lt;div class=&quot;line number18 index17 alt1&quot;&gt;18&lt;/div&gt;&lt;div class=&quot;line number19 index18 alt2&quot;&gt;19&lt;/div&gt;&lt;div class=&quot;line number20 index19 alt1&quot;&gt;20&lt;/div&gt;&lt;div class=&quot;line number21 index20 alt2&quot;&gt;21&lt;/div&gt;&lt;div class=&quot;line number22 index21 alt1&quot;&gt;22&lt;/div&gt;&lt;div class=&quot;line number23 index22 alt2&quot;&gt;23&lt;/div&gt;&lt;div class=&quot;line number24 index23 alt1&quot;&gt;24&lt;/div&gt;&lt;div class=&quot;line number25 index24 alt2&quot;&gt;25&lt;/div&gt;&lt;div class=&quot;line number26 index25 alt1&quot;&gt;26&lt;/div&gt;&lt;div class=&quot;line number27 index26 alt2&quot;&gt;27&lt;/div&gt;&lt;div class=&quot;line number28 index27 alt1&quot;&gt;28&lt;/div&gt;&lt;div class=&quot;line number29 index28 alt2&quot;&gt;29&lt;/div&gt;&lt;div class=&quot;line number30 index29 alt1&quot;&gt;30&lt;/div&gt;&lt;div class=&quot;line number31 index30 alt2&quot;&gt;31&lt;/div&gt;&lt;div class=&quot;line number32 index31 alt1&quot;&gt;32&lt;/div&gt;&lt;div class=&quot;line number33 index32 alt2&quot;&gt;33&lt;/div&gt;&lt;div class=&quot;line number34 index33 alt1&quot;&gt;34&lt;/div&gt;&lt;div class=&quot;line number35 index34 alt2&quot;&gt;35&lt;/div&gt;&lt;div class=&quot;line number36 index35 alt1&quot;&gt;36&lt;/div&gt;&lt;div class=&quot;line number37 index36 alt2&quot;&gt;37&lt;/div&gt;&lt;div class=&quot;line number38 index37 alt1&quot;&gt;38&lt;/div&gt;&lt;div class=&quot;line number39 index38 alt2&quot;&gt;39&lt;/div&gt;&lt;div class=&quot;line number40 index39 alt1&quot;&gt;40&lt;/div&gt;&lt;div class=&quot;line number41 index40 alt2&quot;&gt;41&lt;/div&gt;&lt;div class=&quot;line number42 index41 alt1&quot;&gt;42&lt;/div&gt;&lt;div class=&quot;line number43 index42 alt2&quot;&gt;43&lt;/div&gt;&lt;div class=&quot;line number44 index43 alt1&quot;&gt;44&lt;/div&gt;&lt;div class=&quot;line number45 index44 alt2&quot;&gt;45&lt;/div&gt;&lt;div class=&quot;line number46 index45 alt1&quot;&gt;46&lt;/div&gt;&lt;div class=&quot;line number47 index46 alt2&quot;&gt;47&lt;/div&gt;&lt;div class=&quot;line number48 index47 alt1&quot;&gt;48&lt;/div&gt;&lt;div class=&quot;line number49 index48 alt2&quot;&gt;49&lt;/div&gt;&lt;div class=&quot;line number50 index49 alt1&quot;&gt;50&lt;/div&gt;&lt;div class=&quot;line number51 index50 alt2&quot;&gt;51&lt;/div&gt;&lt;div class=&quot;line number52 index51 alt1&quot;&gt;52&lt;/div&gt;&lt;div class=&quot;line number53 index52 alt2&quot;&gt;53&lt;/div&gt;&lt;div class=&quot;line number54 index53 alt1&quot;&gt;54&lt;/div&gt;&lt;div class=&quot;line number55 index54 alt2&quot;&gt;55&lt;/div&gt;&lt;div class=&quot;line number56 index55 alt1&quot;&gt;56&lt;/div&gt;&lt;div class=&quot;line number57 index56 alt2&quot;&gt;57&lt;/div&gt;&lt;div class=&quot;line number58 index57 alt1&quot;&gt;58&lt;/div&gt;&lt;div class=&quot;line number59 index58 alt2&quot;&gt;59&lt;/div&gt;&lt;div class=&quot;line number60 index59 alt1&quot;&gt;60&lt;/div&gt;&lt;div class=&quot;line number61 index60 alt2&quot;&gt;61&lt;/div&gt;&lt;div class=&quot;line number62 index61 alt1&quot;&gt;62&lt;/div&gt;&lt;div class=&quot;line number63 index62 alt2&quot;&gt;63&lt;/div&gt;&lt;div class=&quot;line number64 index63 alt1&quot;&gt;64&lt;/div&gt;&lt;div class=&quot;line number65 index64 alt2&quot;&gt;65&lt;/div&gt;&lt;div class=&quot;line number66 index65 alt1&quot;&gt;66&lt;/div&gt;&lt;div class=&quot;line number67 index66 alt2&quot;&gt;67&lt;/div&gt;&lt;div class=&quot;line number68 index67 alt1&quot;&gt;68&lt;/div&gt;&lt;div class=&quot;line number69 index68 alt2&quot;&gt;69&lt;/div&gt;&lt;div class=&quot;line number70 index69 alt1&quot;&gt;70&lt;/div&gt;&lt;div class=&quot;line number71 index70 alt2&quot;&gt;71&lt;/div&gt;&lt;div class=&quot;line number72 index71 alt1&quot;&gt;72&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;div class=&quot;container&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#获取mysql数据&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number2 index1 alt1&quot;&gt;&lt;code class=&quot;python keyword&quot;&gt;def&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;SelectWorklist():&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number3 index2 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;try&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;:&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number4 index3 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#连接数据库&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number5 index4 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;MySQLdb.connect(host&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;192.168.1.1&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,user&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;root&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,passwd&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;znck007&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,port&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;3306&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number6 index5 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn.cursor()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number7 index6 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number8 index7 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn.select_db(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;znckapi&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;)&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#选择数据库名&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number9 index8 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number10 index9 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;count&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur.execute(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;SELECT * FROM api_worklist WHERE status=0 ORDER BY id DESC LIMIT 0,1&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;) &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#最后1条&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number11 index10 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#print &amp;quot;count=&amp;quot;+str(count)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number12 index11 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number13 index12 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;repost&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number14 index13 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;results&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur.fetchall()&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number15 index14 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;if&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;results :&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number16 index15 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;for&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;r &lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;in&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;results:&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number17 index16 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#print str(r[0])+str(r[1])+str(r[2])+str(r[3])+str(r[4])+str(r[5])+str(r[6])&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number18 index17 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;value0&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;quot;%03d&amp;quot;&lt;/code&gt; &lt;code class=&quot;python keyword&quot;&gt;%&lt;/code&gt; &lt;code class=&quot;python functions&quot;&gt;int&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;(r[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;3&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;].strip()) &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#转成00x格式&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number19 index18 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;value1&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;quot;%03d&amp;quot;&lt;/code&gt; &lt;code class=&quot;python keyword&quot;&gt;%&lt;/code&gt; &lt;code class=&quot;python functions&quot;&gt;int&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;(r[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;4&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;].strip()) &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#转成00x格式&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number20 index19 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number21 index20 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#更新调用次数，用来判断设备是否&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number22 index21 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur.execute(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;UPDATE api_worklist SET num=num+1 where sid=%s and nid=%s and status=0&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,snvalue) &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number23 index22 alt2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number24 index23 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn.commit()&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#提交&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number25 index24 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur.close()&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#关闭&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number26 index25 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn.close()&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#关闭&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number27 index26 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number28 index27 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;return&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;repost&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number29 index28 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number30 index29 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;except&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;MySQLdb.Error,e:&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number31 index30 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python functions&quot;&gt;print&lt;/code&gt; &lt;code class=&quot;python string&quot;&gt;&amp;quot;Mysql Error %d: %s&amp;quot;&lt;/code&gt; &lt;code class=&quot;python keyword&quot;&gt;%&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;(e.args[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;0&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;], e.args[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;1&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;])&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number32 index31 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;except&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;:&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number33 index32 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python functions&quot;&gt;print&lt;/code&gt; &lt;code class=&quot;python string&quot;&gt;&amp;quot;SelectWorklist except...&amp;quot;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number34 index33 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;return&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number35 index34 alt2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number36 index35 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number37 index36 alt2&quot;&gt;&lt;code class=&quot;python comments&quot;&gt;#添加数据到mysql&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number38 index37 alt1&quot;&gt;&lt;code class=&quot;python keyword&quot;&gt;def&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;InsertWorklist(value):&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number39 index38 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;try&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;:&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number40 index39 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number41 index40 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#连接数据库&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number42 index41 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;MySQLdb.connect(host&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;192.168.1.1&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,user&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;root&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,passwd&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;znck007&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,port&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;3306&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number43 index42 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn.cursor()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number44 index43 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number45 index44 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn.select_db(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;znckapi&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;)&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#选择数据库名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number46 index45 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number47 index46 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;now&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;time.strftime(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;%Y-%m-%d %H:%M:%S&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;)&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#当前时间&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number48 index47 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number49 index48 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;value0&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;quot;%03d&amp;quot;&lt;/code&gt; &lt;code class=&quot;python keyword&quot;&gt;%&lt;/code&gt; &lt;code class=&quot;python functions&quot;&gt;int&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;(value[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;0&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;].strip()) &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#转成00x格式&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number50 index49 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;value1&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;quot;%03d&amp;quot;&lt;/code&gt; &lt;code class=&quot;python keyword&quot;&gt;%&lt;/code&gt; &lt;code class=&quot;python functions&quot;&gt;int&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;(value[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;1&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;].strip()) &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#转成00x格式&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number51 index50 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;snvalue&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;[value0,value1]&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number52 index51 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur.execute(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;DELETE FROM api_worklist where type=2 and sid=%s and nid=%s and status&amp;gt;0&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,snvalue) &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#删除相同数据&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number53 index52 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number54 index53 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;invalue&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;2&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;0&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,value0,value1,value[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;2&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;],&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;quot;upload data&amp;quot;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;1&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,now,&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;quot;192.168.1.1&amp;quot;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;0&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;]&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number55 index54 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur.execute(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;INSERT INTO api_worklist(type,uid,sid,nid,data,note,status,time,ip,num)&amp;nbsp; VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,invalue) &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#插入数据&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number56 index55 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number57 index56 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#更新执行成功{ck00x00xupdate}格式&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number58 index57 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;if&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;( value[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;2&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;]&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;update&amp;#39;&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;):&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number59 index58 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur.execute(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;UPDATE api_worklist SET status=1 where sid=%s and nid=%s&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;,snvalue) &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number60 index59 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number61 index60 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn.commit()&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#提交&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number62 index61 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;cur.close()&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#关闭&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number63 index62 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;conn.close()&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#关闭&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number64 index63 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number65 index64 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;except&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;MySQLdb.Error,e:&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number66 index65 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python functions&quot;&gt;print&lt;/code&gt; &lt;code class=&quot;python string&quot;&gt;&amp;quot;Mysql Error %d: %s&amp;quot;&lt;/code&gt; &lt;code class=&quot;python keyword&quot;&gt;%&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;(e.args[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;0&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;], e.args[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;1&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;])&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number67 index66 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;WriteLog(logpath,&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;quot;Mysql Error %d: %s&amp;quot;&lt;/code&gt; &lt;code class=&quot;python keyword&quot;&gt;%&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;(e.args[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;0&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;], e.args[&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;1&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;])) &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#写日志&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number68 index67 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number69 index68 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;except&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;:&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number70 index69 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python functions&quot;&gt;print&lt;/code&gt; &lt;code class=&quot;python string&quot;&gt;&amp;quot;InsertWorklist except...&amp;quot;&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number71 index70 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number72 index71 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;return&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;四、操作串口通信&lt;/strong&gt;&lt;br/&gt;&lt;/p&gt;&lt;div style=&quot;padding:15px 0;&quot;&gt;&lt;br/&gt;&lt;div&gt;&lt;div id=&quot;highlighter_17158&quot; class=&quot;syntaxhighlighter notranslate python&quot;&gt;&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;firstRow&quot;&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;01&lt;/div&gt;&lt;div class=&quot;line number2 index1 alt1&quot;&gt;02&lt;/div&gt;&lt;div class=&quot;line number3 index2 alt2&quot;&gt;03&lt;/div&gt;&lt;div class=&quot;line number4 index3 alt1&quot;&gt;04&lt;/div&gt;&lt;div class=&quot;line number5 index4 alt2&quot;&gt;05&lt;/div&gt;&lt;div class=&quot;line number6 index5 alt1&quot;&gt;06&lt;/div&gt;&lt;div class=&quot;line number7 index6 alt2&quot;&gt;07&lt;/div&gt;&lt;div class=&quot;line number8 index7 alt1&quot;&gt;08&lt;/div&gt;&lt;div class=&quot;line number9 index8 alt2&quot;&gt;09&lt;/div&gt;&lt;div class=&quot;line number10 index9 alt1&quot;&gt;10&lt;/div&gt;&lt;div class=&quot;line number11 index10 alt2&quot;&gt;11&lt;/div&gt;&lt;div class=&quot;line number12 index11 alt1&quot;&gt;12&lt;/div&gt;&lt;div class=&quot;line number13 index12 alt2&quot;&gt;13&lt;/div&gt;&lt;div class=&quot;line number14 index13 alt1&quot;&gt;14&lt;/div&gt;&lt;div class=&quot;line number15 index14 alt2&quot;&gt;15&lt;/div&gt;&lt;div class=&quot;line number16 index15 alt1&quot;&gt;16&lt;/div&gt;&lt;div class=&quot;line number17 index16 alt2&quot;&gt;17&lt;/div&gt;&lt;div class=&quot;line number18 index17 alt1&quot;&gt;18&lt;/div&gt;&lt;div class=&quot;line number19 index18 alt2&quot;&gt;19&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;div class=&quot;container&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;ser &lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;serial.Serial(&lt;/code&gt;&lt;code class=&quot;python string&quot;&gt;&amp;#39;/dev/ttyUSB0&amp;#39;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;, &lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;115200&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;, timeout&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;1&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;) &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#打开串口通信&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number2 index1 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#ser.write(&amp;quot;lABC&amp;quot;) #向串口发送字符&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number3 index2 alt2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number4 index3 alt1&quot;&gt;&lt;code class=&quot;python keyword&quot;&gt;while&lt;/code&gt; &lt;code class=&quot;python color1&quot;&gt;True&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;:&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number5 index4 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;try&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number6 index5 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number7 index6 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;data&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;ser.readline() &lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#读取一行 读取1个字符read(1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number8 index7 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number9 index8 alt2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number10 index9 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;if&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;data!&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;&amp;quot;&amp;quot; :&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number11 index10 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python comments&quot;&gt;#print &amp;quot;serial data &amp;lt;&amp;lt;&amp;lt;&amp;quot;+data&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number12 index11 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;continue&lt;/code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number13 index12 alt2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number14 index13 alt1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number15 index14 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python keyword&quot;&gt;except&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;Exception,e: &lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number16 index15 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python functions&quot;&gt;print&lt;/code&gt; &lt;code class=&quot;python string&quot;&gt;&amp;quot;except Error %s&amp;quot;&lt;/code&gt; &lt;code class=&quot;python keyword&quot;&gt;%&lt;/code&gt; &lt;code class=&quot;python plain&quot;&gt;(e)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number17 index16 alt2&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;time.sleep(&lt;/code&gt;&lt;code class=&quot;python value&quot;&gt;1&lt;/code&gt;&lt;code class=&quot;python plain&quot;&gt;)&lt;/code&gt;&lt;/div&gt;&lt;div class=&quot;line number18 index17 alt1&quot;&gt;&lt;code class=&quot;python spaces&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;line number19 index18 alt2&quot;&gt;&lt;code class=&quot;python plain&quot;&gt;ser.close()&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Microsoft YaHei, SimHei, Verdana&quot;&gt;&lt;span style=&quot;color:#000000&quot;&gt;&lt;span style=&quot;font-size:22px&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#000&quot;&gt;Windows版下载&lt;/span&gt;&lt;br/&gt;&lt;a href=&quot;https://www.python.org/downloads/&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;https://www.python.org/downloads/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;提示：本篇文章以下为windows版环境测试代码。&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color:#000&quot;&gt;基本语法&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字，让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句，也不像它们的语法那样经常有特殊情况和惊喜。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;缩进&lt;/strong&gt;&lt;br/&gt;Python开发者有意让违反了缩进规则的程序不能通过编译，以此来强制程序员养成良好的编程习惯。并且Python语言利用缩进表示语句块的开始和退出（Off-side规则），而非使用花括号或者某种关键字。增加缩进表示语句块的开始，而减少缩进则表示语句块的退出。缩进成为了语法的一部分。例如if语句：&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;if age&amp;lt;21:&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;&amp;nbsp; &amp;nbsp; print(&amp;quot;你不能买酒。&amp;quot;)&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;&amp;nbsp; &amp;nbsp; print(&amp;quot;不过你能买口香糖。&amp;quot;)&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;print(&amp;quot;这句话处於if语句块的外面。&amp;quot;)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;根据PEP的规定，必须使用&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;4个空格&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;来表示每级缩进（不清楚4个空格的规定如何，在实际编写中可以自定义空格数，但是要满足每级缩进间空格数相等）。使用Tab字符和其它数目的空格虽然都可以编译通过，但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为兼容很旧的的Python程序和某些有问题的编辑程序。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;控制语句&lt;/strong&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;if语句，当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;for语句，遍历列表、字符串、字典、集合等&lt;span style=&quot;color:#136ec2&quot;&gt;&lt;a href=&quot;http://baike.baidu.com/view/925158.htm&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;迭代器&lt;/a&gt;&lt;/span&gt;，依次处理迭代器中的每个元素。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;while语句，当条件为真时，循环运行语句块。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;try语句。与except,finally配合使用处理在程序运行中出现的异常情况。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;class语句。用于定义&lt;span style=&quot;color:#136ec2&quot;&gt;&lt;a href=&quot;http://baike.baidu.com/subview/738155/10948439.htm&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;类型&lt;/a&gt;&lt;/span&gt;。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;def语句。用于定义函数和类型的方法。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;pass语句。表示此行为空，不运行任何操作。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;assert语句。用于程序调适阶段时测试运行条件是否满足。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;with语句。Python2.6以后定义的语法，在一个场景中运行语句块。比如，运行语句块前加密，然后在语句块运行退出后解密。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;yield语句。在迭代器函数内使用，用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;raise语句。制造一个错误。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;import语句。导入一个模块或包。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;from import语句。从包导入模块或从模块导入某个对象。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;import as语句。将导入的对象赋值给一个变量。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;in语句。判断一个对象是否在一个字符串/列表/元组里。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;表达式&lt;/strong&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python的表达式写法与C/C++类似。只是在某些写法有所差别。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;主要的算术运算符与C/C++类似。+,
 -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取模。&amp;gt;&amp;gt;, 
&amp;lt;&amp;lt;表示右移和左移。&amp;amp;, |, ^表示二进制的AND, OR, XOR运算。&amp;gt;, &amp;lt;, ==, !=, 
&amp;lt;=, &amp;gt;=用于比较两个表达式的值，分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面，~, |, ^, 
&amp;amp;, &amp;lt;&amp;lt;, &amp;gt;&amp;gt;必须应用于整数。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python使用and, or, not表示逻辑运算。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;is, is not用于比较两个变量是否是同一个对象。in, not in用于判断一个对象是否属于另外一个对象。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python支持“列表推导式”（list comprehension），比如计算0-9的平方和:&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;gt;&amp;gt;&amp;gt; sum(x * x for x in range(10))&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;285&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python使用lambda表示匿名函数。匿名函数体只能是表达式。比如：&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;gt;&amp;gt;&amp;gt; add=lambda x, y : x + y&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;gt;&amp;gt;&amp;gt; add(3,2)&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;5&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python使用y if cond else x表示条件表达式。意思是当cond为真时，表达式的值为y，否则表达式的值为x。相当于C++和Java里的cond?y:x。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python区分列表(list)和元组(tuple)两种类型。list的写法是[1,2,3]，而tuple的写法是(1,2,3)。可以改变list中的元素，而不能改变tuple。在某些情况下，tuple的括号可以省略。tuple对于赋值语句有特殊的处理。因此，可以同时赋值给多个变量，比如：&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;gt;&amp;gt;&amp;gt; x, y=1,2#同时给x,y赋值，最终结果：x=1, y=2&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;特别地，可以使用以下这种形式来交换两个变量的值：&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;gt;&amp;gt;&amp;gt; x, y=y, x #最终结果：y=1, x=2&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python使用&amp;#39;(单引号)和&amp;quot;(双引号)来表示字符串。与Perl、Unix
 
Shell语言或者Ruby、Groovy等语言不一样，两种符号作用相同。一般地，如果字符串中出现了双引号，就使用单引号来表示字符串;反之则使用双引号。如果都没有出现，就依个人喜好选择。出现在字符串中的\(反斜杠)被解释为特殊字符，比如\n表示换行符。表达式前加r指示Python不解释字符串中出现的\。这种写法通常用于编写正则表达式或者Windows文件路径。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python支持列表切割(list
 slices)，可以取得完整列表的一部分。支持切割操作的类型有str, bytes, list, 
tuple等。它的语法是...[left:right]或者...[left:right:stride]。假定nums变量的值是[1, 3, 5,
 7, 8, 13, 20]，那么下面几个语句为真：&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;nums[2:5] == [5, 7, 8] 从下标为2的元素切割到下标为5的元素，但不包含下标为5的元素。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最后一个元素。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;nums[:-3] == [1, 3, 5, 7] 从最开始的元素一直切割到倒数第3个元素。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改变新的列表不会影响到nums。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;nums[1:5:2] == [3, 5] 从下标为1的元素切割到下标为5的元素但不包含下标为5的元素，且步长为2。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;函数&lt;/strong&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python的函数支持递归、默认参数值、可变参数，但不支持函数重载。为了增强代码的可读性，可以在函数后书写“文档字符串”(Documentation
 
Strings，或者简称docstrings)，用于解释函数的作用、参数的类型与意义、返回值类型与取值范围等。可以使用内置函数help()打印出函数的使用帮助。比如：&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;gt;&amp;gt;&amp;gt; def randint(a, b):&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;... &amp;quot;Return random integer in range [a, b], including both end points.&amp;quot;...&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;gt;&amp;gt;&amp;gt; help(randint)&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Help on function randint in module __main__:&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;randint(a, b)&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Return random integer inrange[a, b], including both end points.&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;对象的方法&lt;/strong&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;对象的方法是指绑定到对象的函数。调用对象方法的语法是instance.method(arguments)。它等价于调用Class.method(instance,
 
arguments)。当定义对象方法时，必须显式地定义第一个参数，一般该参数名都使用self，用于访问对象的内部数据。这里的self相当于C++,
 Java里面的this变量，但是我们还可以使用任何其它合法的参数名，比如this 和 mine 
等，self与C++,Java里面的this不完全一样，它可以被看作是一个习惯性的用法，我们传入任何其它的合法名称都行，比如：&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;class Fish:&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;&amp;nbsp; &amp;nbsp; def eat(self,food):&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;if food is not None:&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;self.hungry=False&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;class User:&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;&amp;nbsp; &amp;nbsp; def__init__(myself,name):&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;myself.name=name&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;#构造Fish的实例：&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;f=Fish()&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;#以下两种调用形式是等价的：&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;Fish.eat(f,&amp;quot;earthworm&amp;quot;)&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;f.eat(&amp;quot;earthworm&amp;quot;)&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;u=User(&amp;#39;username&amp;#39;)&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;font-family:Consolas,&quot;&gt;print(u.name)&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python认识一些以“__”开始并以“__”结束的特殊方法名，它们用于实现运算符重载和实现多种特殊功能。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;类型&lt;/strong&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python采用动态类型系统。在编译的时候，Python不会检查对象是否拥有被调用的方法或者属性，而是直至运行时，才做出检查。所以操作对象时可能会抛出异常。不过，虽然Python采用动态类型系统，它同时也是强类型的。Python禁止没有明确定义的操作，比如数字加字符串。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;与其它面向对象语言一样，Python允许程序员定义类型。构造一个对象只需要像函数一样调用类型即可，比如，对于前面定义的Fish类型，使用Fish()。类型本身也是特殊类型type的对象(type类型本身也是type对象)，这种特殊的设计允许对类型进行反射编程。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python内置丰富的数据类型。与Java、C++相比，这些数据类型有效地减少代码的长度。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; 除了各种数据类型，Python语言还用类型来表示函数、模块、类型本身、对象的方法、编译后的Python代码、运行时信息等等。因此，Python具备很强的动态性。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;strong&gt;数学运算&lt;/strong&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python使用与C、Java类似的运算符，支持整数与浮点数的数学运算。同时还支持复数运算与无穷位数（实际受限于计算机的能力）的整数运算。除了求绝对值函数abs()外，大多数数学函数处于math和cmath模块内。前者用于实数运算，而后者用于复数运算。使用时需要先导入它们，比如：&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;gt;&amp;gt;&amp;gt; import math&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&amp;gt;&amp;gt;&amp;gt; print(math.sin(math.pi/2))&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;1.0&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;fractions模块用于支持分数运算；decimal模块用于支持高精度的浮点数运算。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python定义求余运行a %
 b的值处于开区间[0, b)内，如果b是负数，开区间变为(b, 0]。这是一个很常见的定义方式。不过其实它依赖于整除的定义。为了让方程式：b *
 (a // b) + a % b = a恒真，整除运行需要向负无穷小方向取值。比如7 // 3的结果是2，而(-7) // 
3的结果却是-3。这个算法与其它很多编程语言不一样，需要注意，它们的整除运算会向0的方向取值。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;Python允许像数学的常用写法那样连着写两个比较运行符。比如a
 &amp;lt; b &amp;lt; c与a &amp;lt; b and b &amp;lt; c等价。C++的结果与Python不一样，首先它会先计算a &amp;lt; 
b，根据两者的大小获得0或者1两个值之一，然后再与c进行比较。&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#333333&quot;&gt;&lt;span style=&quot;font-family:arial, 宋体, sans-serif&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color:#000&quot;&gt;请&lt;/span&gt;&lt;span style=&quot;color:#000&quot;&gt;&lt;span style=&quot;color:#000&quot;&gt;&lt;span style=&quot;color:#000&quot;&gt;&lt;span style=&quot;color:#000&quot;&gt;&lt;span style=&quot;color:#000&quot;&gt;关注&lt;span style=&quot;background-color:#FF00FF&quot;&gt;@智能创客&lt;/span&gt;&lt;span style=&quot;color:#333333&quot;&gt;&amp;nbsp;&amp;nbsp;微信：znck007&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color:#000&quot;&gt;（打造DIY创客平台）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:52:36 +0800</pubDate></item><item><title>《OpenWRT》02：基本命令操作</title><link>http://www.znck007.com/?id=61</link><description>&lt;p&gt;在SSH连上OpenWRT后，通常我们要使用命令下载、安装、设配某些文件。这篇介绍经常用到的相关操作命令，以便快速进去操作状态。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_850&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085218_78478.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;br/&gt;ps //显示所有运行程序，如上图，输入ps 回车&lt;br/&gt;&lt;br/&gt;相关命令：&lt;br/&gt;kill PID //可以关闭某个程序&lt;br/&gt;killall -9 Name //关闭某个程序，如killall -9 python关闭python程序。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_851&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085218_47514.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;br/&gt;top //显示系统运行状态，如上图，上面有内存，CPU使用情况，一般要看Load average:如果第一项超过1了，那么系统就开始卡了。&lt;br/&gt;&lt;br/&gt;按Ctrl+C可以中断，并返回到输入命令状态。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;find / -name mysqld //查找顶级/目录和子目录是否存在mysqld文件&lt;br/&gt;cd /mnt //进入mnt目录&lt;br/&gt;&lt;br/&gt;reboot //系统重启&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;ls /dev //查看硬件驱动等&lt;br/&gt;&lt;br/&gt;lsusb //查看usb设备列表&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;//vi 编辑文件常用的方命令&lt;br/&gt;vi /var/log //编辑log文件&lt;br/&gt;vi +行数 文件名 //只是+到最后&lt;br/&gt;:/输入查找内容 n则查找下一个&lt;br/&gt;:w //保存文件&lt;br/&gt;:x //保存退出&lt;br/&gt;:q! //不保存退出&lt;br/&gt;:.,$d //清空全文，冒号+一个点+一个逗号+一个$+一个d再回车&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;cat index.html //查看文件&lt;br/&gt;more index.html //查看内容&lt;br/&gt;echo &amp;quot;hello&amp;quot;&amp;gt;index.html //写入文本到文件&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;chmod -R 777 data //设置data目录和子目录的所有文件777权限&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;mkdir /mnt/sda1 //在/mnt/目录下建立一个文件夹&lt;br/&gt;mount /dev/sda1 /mnt/sda1 //将硬盘挂载过去&lt;br/&gt;df -h //查看磁盘使用空间df -lh&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;opkg update //更新OpenWRT软件包&lt;br/&gt;opkg install 包名 //安装软件包名&lt;br/&gt;opkg remove 包名 //删除包名&lt;br/&gt;/etc/init.d/network start //启动网络&lt;br/&gt;/etc/init.d/network stop //停止网络&lt;br/&gt;/etc/init.d/network restart //重启网络&lt;br/&gt;/etc/init.d/network enable //开机启动&lt;br/&gt;/etc/init.d/network disable //开机不启动&lt;br/&gt;&lt;br/&gt;wget &lt;a href=&quot;http://www.openwrt.com/openwrt/xxxxx.ipk&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;http://www.openwrt.com/openwrt/xxxxx.ipk&lt;/a&gt; //下载文件到当前目录opkg install xxxxx.ipk //安装指定ipk&lt;br/&gt;&lt;br/&gt;curl --request POST &lt;a href=&quot;http://api.znck007.com&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;http://api.znck007.com&lt;/a&gt; --data &amp;quot;{ck001000000000}&amp;quot; --header &amp;quot;apikey:your apikey&amp;quot; //Post数据到智能创客云端&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;mjpg_streamer -b -i &amp;quot;input_uvc.so /dev/video0 -r 640x480 &amp;quot; -o &amp;quot;output_http.so -p 8080 -w /www/webcam&amp;quot; //启动摄像头&lt;br/&gt;&lt;br/&gt;sysupgrade -i -v /tmp/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin //刷固件&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;color:#696969&quot;&gt;&lt;span style=&quot;color:#696969&quot;&gt;&lt;span style=&quot;color:#3e3e3e&quot;&gt;创客、极客，转发给你的朋友圈吧！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:51:45 +0800</pubDate></item><item><title>《OpenWRT》01：OpenWRT系统介绍</title><link>http://www.znck007.com/?id=60</link><description>&lt;p&gt;在智能路由器（或智能家居网关）中，不能不提的就是开源系统OpenWRT。&lt;br/&gt;简单的理解他就是路由器的操作系统，是基于linux系统，和android、ios、wp（用于手机系统）一样，OpenWRT用于路由器系统。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;为什么我们使用OpenWRT系统，主要的原因是新手容易学习，因为开源所以网上的资料非常多，并市面上的智能路由器很多也是使用OpenWRT系统开发的。&lt;br/&gt;新手一般使用网页、PUTTY、WINSCP等软件就可以设置、操作、运行、开发等众多功能。但绝大多数都是已经开发好，新手只需要一条命令安装就可以使用，比如FTDI串口驱动、CH340驱动、摄像头驱动、python脚本、PHP网站服务器等等。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_847&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085132_45880.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;使用浏览器登陆Openwrt系统，设置WIFI，设置密码等（跟平台设置路由器上网一样一样的）。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_848&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085132_12038.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;使用PUTTY软件登陆OpenWrt，如果用过linux系统的同学就很面熟了，也与windows的dos界面类式，主要使用代码操作。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_849&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085132_97812.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;br/&gt;使用WINSCP软件管理OpenWRT文件，是不是像极了FTP界面，对的只需托过来托过去就可以实现与OpenWRT文件的传输。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;看到这里，很多同学开始担心，OpenWRT就是linux咧，好像很难的样子。&lt;br/&gt;linux很高深，但基础和实现我们想要的功能，并没有那么难，我们会一点一点的学习OpenWRT的基础。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;如何学习OpenWRT，我们需要一个&lt;a href=&quot;https://item.taobao.com/item.htm?id=576067599077&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;703N路由器&lt;/a&gt;（我们已经刷好OpenWRT系统）&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;background-color:#FFC0CB&quot;&gt;以下为百度官方关于OpenWRT的介绍：&lt;/span&gt;&lt;br/&gt;OpenWrt 可以被描述为一个嵌入式的 Linux 发行版，（主流路由器固件有 
dd-wrt,tomato,openwrt三类）而不是试图建立一个单一的、静态的系统。OpenWrt的包管理提供了一个完全可写的文件系统，从应用程序供应商提供的选择和配置，并允许您自定义的设备，以适应任何应用程序。&lt;br/&gt;对于开发人员，OpenWrt 是使用框架来构建应用程序，而无需建立一个完整的固件来支持；对于用户来说，这意味着其拥有完全定制的能力，可以用前所未有的方式使用该设备。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统，拥有强大的网络组件和扩展性，常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。
 同时，它还提供了100多个已编译好的软件，而且数量还在不断增加，而 OpenWrt SDK 更简化了开发软件的工序。&lt;br/&gt;OpenWRT不同于其他许多用于路由器的发行版，它是一个从零开始编写的、功能齐全的、容易修改的路由器操作系统。实际上，这意味着您能够使用您想要的功能而不加进其他的累赘，而支持这些功能工作的linux kernel又远比绝大多数发行版来得新。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;优势&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;如果对 Linux 系统有一定的认识, 并想学习或接触嵌入式 Linux 的话, OpenWRT很适合。 
而且OpenWRT支持各种处理器架构，无论是对ARM，X86，PowerPC或者MIPS都有很好的支持。 
其多达3000多种软件包，囊括从工具链(toolchain)，到内核(linux 
kernel)，到软件包(packages)，再到根文件系统(rootfs)整个体系，使得用户只需简单的一个make命令即可方便快速地定制一个具有特定功能的嵌入式系统来制作固件。&lt;br/&gt;一般嵌入式 Linux 的开发过程, 无论是 ARM, PowerPC 或 MIPS 的处理器, 都必需经过以下的开发过程：&lt;br/&gt;1、 创建 Linux 交叉编译环境；&lt;br/&gt;2、建立 Bootloader；&lt;br/&gt;3、移植 Linux 内核；&lt;br/&gt;4、建立 Rootfs (根文件系统)；&lt;br/&gt;5、安装驱动程序；&lt;br/&gt;6、安装软件；&lt;br/&gt;&lt;br/&gt;熟悉这些嵚入式 Linux 的基本开发流程后，不再局限于 MIPS 处理器和无线路由器, 可以尝试在其它处理器, 或者非无线路由器的系统移植嵌入式 Linux, 定制合适自己的应用软件, 并建立一个完整的嵌入式产品。&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:51:03 +0800</pubDate></item><item><title>《TCP转发方案》03：网关、终端搭建教程</title><link>http://www.znck007.com/?id=59</link><description>&lt;p&gt;上篇我们使用网络调试助手模拟终端，这个教程我们采用《智能创客DIY》里的网关，运行python脚本实现TCP的转发。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;一、下载TCP网关的python脚本&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;脚本下载：&lt;a href=&quot;http://pan.baidu.com/s/1o6ELNuU&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;http://pan.baidu.com/s/1o6ELNuU&lt;/a&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1106&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085021_79590.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;分为二个文件 ，一个是放到cgi-bin目录下，一个是自动启动文件。&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;二、关闭之前python网关脚本&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1103&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085021_74694.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;因为之前znckbgrun脚本会占有用串口读写，所以将znckbgrun、znckdog删除，则否会有冲突。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1104&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085021_72047.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;拖longtcp到cgi-bin目录里。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1105&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085021_28390.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;右击属性，并设置777权限。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;&lt;strong&gt;三、修改脚本的服务器IP地址&lt;/strong&gt;&lt;/span&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1107&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085021_13154.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;修改成自己注册的apikey和服务器ip，如果是本地，一定要在同一个局域网。&lt;br/&gt;如果是服务器（一定要确保打开8080端口，本地也一样，不行可以关防火墙试试等）&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1108&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085021_74440.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;代码关键运行部分。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1109&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085021_93965.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;远行putty，输入python /mnt/sda1/www/cgi-bin/longtcp&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1110&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085021_85639.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;回车，发现有usb ready、bind ok，说明运行正常了。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1111&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085021_91638.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;服务器会收到new client和bind的请求。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;四、实现兼容《智能家居DIY》书的教程&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1112&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507085022_16728.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;在这里，原来上传到m.znck007.com的数据，都会到这里，正真的属于自己控制的家居DIY了。&lt;br/&gt;&lt;br/&gt;如果要实现外网访问，映射或买个vps，云端等。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;TCP转发教程就到这里了，大家要加群一起分享新东西，&lt;br/&gt;这篇只是一个小小的开始，终端不只是网关，还可以是单独的wifi开关，wifi电灯等等，知道我们准备做什么了吧？&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:49:50 +0800</pubDate></item><item><title>《TCP转发方案》02：服务端、手机端搭建教程</title><link>http://www.znck007.com/?id=58</link><description>&lt;p&gt;这一篇来教创友们如何在windows搭建服务端（php环境），所谓的云端也是个服务器而以。&lt;br/&gt;只要会php+mysql+apache搭建的同学，这一篇可以忽略，不在windows搭建的也是一样的原理，也可以租个服务器，一年几百元（如阿里云、vps等）。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;一、安装phpStudy搭建php+mysql+apache环境。&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;phpStudy软件：&lt;a href=&quot;http://pan.baidu.com/s/1o6jDFlw&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;http://pan.baidu.com/s/1o6jDFlw&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1067&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084937_40335.jpg&quot; class=&quot;zoom&quot; width=&quot;300&quot;/&gt;&lt;br/&gt;点击确定安装。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1068&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084937_87376.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;安装完成点击是。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1069&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084937_93947.jpg&quot; class=&quot;zoom&quot; width=&quot;393&quot;/&gt;&lt;br/&gt;运行桌面的图标就成功运行了服务端。&lt;br/&gt;&lt;br/&gt;这样，php+mysql+apache环境在windows就已经搭建好了。&lt;br/&gt;如果你是iis环境，那么你需要百度一下如何安装php+mysql，如果你是linux系统下载php、mysql、apache安装即可，服务器搭建网上很多教程的哦，因为每个系统不一样，所以安装的方法是不同的。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;二、WEB手机控制端源文件（含TCP转发方案）下载&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;网盘下载：&lt;a href=&quot;http://pan.baidu.com/s/1o6F1Lu6&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;http://pan.baidu.com/s/1o6F1Lu6&lt;/a&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1070&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084937_13732.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;下载后解压目录文件。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1071&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084937_82127.jpg&quot; class=&quot;zoom&quot; width=&quot;448&quot;/&gt;&lt;br/&gt;右击phpStudy图标，点击网站根目录。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1072&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084937_61939.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;复制所有文件进去，如上图。&lt;br/&gt;再&lt;a href=&quot;http://localhost/&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;http://localhost/&lt;/a&gt;查看的服务端。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;三、建立mysql数据库&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1073&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084937_96609.jpg&quot; class=&quot;zoom&quot; width=&quot;502&quot;/&gt;&lt;br/&gt;右击phpStudy图标，点击PhpMyAdmin。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1075&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084937_90320.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;输入默认的用户root，密码root&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1076&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084937_16119.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;就登陆了mysql数据库界面，点击查sql&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1077&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084938_62686.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;点击导入。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1078&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084938_69948.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;选择mysqlznckapi.sql文件，点击执行&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1079&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084938_70086.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;成功就会自动建立mysqlznckapi数据库&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1080&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084938_79246.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;最后点击数据库，看到已经生成了很多数据表，mysql就建立成功了。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;四、php配置连接mysql&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1081&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084939_77262.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;主要是配置服务器连接文件ckconn.php，默认不需要更改，&lt;br/&gt;但如果您有自己的服务器，则需要修改成您设置的用户和密码等，需能正常连接mysql。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1082&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084939_73089.jpg&quot; class=&quot;zoom&quot; width=&quot;322&quot;/&gt;&lt;br/&gt;api目录的ckconn.php文件，自己的服务器也需要更改。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1083&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084939_72650.jpg&quot; class=&quot;zoom&quot; width=&quot;360&quot;/&gt;&lt;br/&gt;tcp目录的ckconn.php文件，自己的服务器也需要更改。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1084&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084939_15729.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;连上数据库后，再次登陆服务器首页，点击用户。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1085&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084939_20014.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;点击注册。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1086&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084939_60131.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;输入账号和密码，提交注册&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1087&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084939_46281.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;成功前往用户中心。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1088&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084939_83334.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;这里会看到你的apikey，记住它，后面我们会用到它。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;五、运行TCP服务器&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;在windows运行服务器，要调用cmd运行，linux在当前目录直接php tcpserver.php就可以了。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1089&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084939_33086.jpg&quot; class=&quot;zoom&quot; width=&quot;542&quot;/&gt;&lt;br/&gt;右击编辑tcpserver.php和tcpclient.php文件里的ip。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1090&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084940_78326.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;windows查看ip的方法 ，在cmd里输入ipconfig。&lt;br/&gt;然后修改ip就可以，如果是外网服务器，需要输入外网的ip，并需打开8080端口哦。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1091&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084940_12527.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;记得tcpclient.php也要修改ip，否则html5按钮控制会不成功。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1092&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084940_93387.jpg&quot; class=&quot;zoom&quot; width=&quot;438&quot;/&gt;&lt;br/&gt;然后使用phpstudy，打开php程序位置&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1093&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084941_11637.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;将php.exe拖到cmd里面。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1094&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084941_34410.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;打个空格，再拖tcpserver.php到cmd里。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1095&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084941_94314.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;回车运行，如果没有任何错误提示，那么tcp服务器运行了，记得默认是8080端口&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;span style=&quot;color:#ff00ff&quot;&gt;六、网络调试助手测试服务端&lt;/span&gt;&lt;/strong&gt;&lt;br/&gt;软件下载：&lt;a href=&quot;http://pan.baidu.com/s/1sjoru9J&quot; target=&quot;_blank&quot; class=&quot;gj_safe_a&quot;&gt;http://pan.baidu.com/s/1sjoru9J&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1096&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084941_53529.jpg&quot; class=&quot;zoom&quot; width=&quot;592&quot;/&gt;&lt;br/&gt;选择TCP Client，然后输入服务端ip，端口号。&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1097&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084941_56617.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;br/&gt;点击连接，这时服务端，会打印出有new client连入。&lt;br/&gt;发送绑定字符，就与服务器apikey一样的用户绑定上了。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1098&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084941_96731.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;打开服务器页面（一定要火狐、chrome谷歌浏览器才行，支持html5），点击电灯开关，添加一个。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1099&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084941_83865.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;添加完成，点击名称，进入控制页面。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;img id=&quot;aimg_1101&quot; src=&quot;http://www.znck007.com/zb_users/upload/2019/05/20190507084942_43994.jpg&quot; class=&quot;zoom&quot; width=&quot;600&quot;/&gt;&lt;br/&gt;&lt;br/&gt;这里点击开订，绑定的网络调试助手就收到了（因为他们的apikey一样）。&lt;br/&gt;这里如果将网络调试助手换成，我们的终端、网关，那么就可以实现tcp转发功能。&lt;br/&gt;tcp转发代码，大家可以自己研究tcpserver.php。&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;教程结束了，来一起交流吧。&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 07 May 2019 08:48:54 +0800</pubDate></item></channel></rss><!--21.54 ms , 5 query , 2120kb memory , 0 error-->