用python编写arduino风格的草图

sketches的Python项目详细描述


素描
========

用python编写arduino风格的草图

关于
----

草图允许用户用python编写简单的“草图”来执行日常的简单计算,而不必担心典型python脚本需要的大量“样板”代码。名称草图取自ArduinoIDE所遵从的短C程序,并上载到Arduino设备。Arduino草图的格式是固定的:一个“setup()”函数只运行一次,一个“loop()”函数则永远重复运行。这种格式使得开始编写简单的程序来控制设备变得很容易。

草图使用相同的格式,允许您编写简单的程序来执行日常任务,例如控制一个树莓pi的gpio,几乎没有样板代码。

功能
--

***编写低开销的草图文件:**对于一个正常工作的草图,您只需定义解释器,然后在“setup()”、“loop()”或“cleanup()”中的一个位置编写代码。
***自动导入:**草图将在运行时自动导入所选的常用库,这意味着您不必担心导入语句。
***参数准备:**运行代码之前,草图将检查输入参数,以确保将正确数量的参数传递给脚本,因此不必编写代码来检查它们是否都在。只需将所需参数定义为“setup()”函数的参数。
**clean crashing:*当您的代码被用户中断而停止,或者运行crashing`cleanup()',这样您就有机会安全地结束程序。
***错误报告:**您的代码抛出的错误将打印回终端,以便您可以看到它在哪里断开。

示例
--

证明这一点的最佳方法可能是举一个例子。请阅读注释进行解释:

…代码::python

/usr/bin/pysketch格式

blinky.py-在RPI上闪烁LED的草图
此脚本假定您有一个从引脚12连接到GND的LED。(通过一个电阻器PLZ)

def setup(argv):草图开始时自动执行此代码。
gpio.setmode(gpio.bcm)会自动加载rpi.gpio库。
gpio.设置(18,gpio.out)
< BR/> DEF环():这个代码运行在一个循环中,直到它调用EXIT()或崩溃,或KEYBOARD中断事件被触发。
GPIO.输出(18,1-GPIO.输入(18))
time.sleep(1)时间自动加载。

DEFCuffUp():这是在结尾调用的,不管它是如何退出的,即使它崩溃了。
gpio.cleanup()


现在看看类似的香草Python:

…代码::python

/USR/垃圾桶/Python3

blinky.py-rpi上指示灯闪烁的脚本
此脚本假定您有一个从引脚12连接到GND的LED。(通过一个电阻器PLZ)

导入时间
将rpi.gpio导入为gpio

gpio.setmode(gpio.bcm)模式
gpio.设置(18,gpio.out)

试试
如果为真:
GPIO.输出(18,1-GPIO.输入(18))
睡眠时间(1)
除了键盘中断: >打印(键盘中断:退出)
除了:
提高
最后:
gpio.cleanup()

(忽略注释和空白)普通的python脚本是15行代码,草图只有9行。这些程序中有5行函数代码,这意味着在草图中只有4行样板代码,在简单的blink程序中有10*。

*讽刺的是,要消除这10行,解释器的长度超过120行。

安装:
----

草图在PYPI打包(python包索引),因此使用“pip3”安装它。此包仅为Python3提供(3.4官方支持)

安装:
```猛击
PIP3安装示意图
```

用法
----

添加`!/usr/bin/pysketch`在文件顶部,然后运行`./<;filename>;[args]`。

或运行“pysketch”<;filename>;[参数]`

为什么?
---

在我的日常工作中,我发现自己在树莓皮上写了大量的脚本,其格式惊人地相似:
-设置变量
-如果是真的,做点什么
-键盘异常:清理资源。

我想知道是否有一个框架可以自动化掉许多样板文件。当我没有找到一个时,我写了一个模板python文件。随着时间的推移,我开始写草图。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
爪哇太阳报。安全验证器。ValidatorException:PKIX路径生成失败   java理解为什么在onDispatchTouchEvent()返回True后仍调用onClick()   java如何在资源包中使用JSF标记/如何在资源包中重写URL?   java什么是流控制异常的替代方案?   java使用Spring数据JPA/MongoDB交叉存储,一个查询可以跨越两个数据库吗?   Apache Sling/felix中的java OSGi slf4j日志记录   为什么当我们想要水平/垂直旋转矩阵时,我们要把这个项除以2?   尝试从外部网页接收JSON字符串时出现安卓 Java NullPointerException   java执行异常:从Callable调用方法时   java在jetty上以调试模式运行webapp,使用maven jetty插件在intellij中构建成功(应用程序应在调试模式下启动)   带有内存数据库的linux Java应用程序的构建时间太长   基于java的随机数单元测试算法   java类型javax。摆动JComponent无法解析   Google日历API和UI小部件Java   java tomcat没有突然和任意地响应   java无法使用jsoup在html中获取图像src   我无法让Java接受键盘输入字符串   java如何开始使用Bambol而不让部署永远继续?   java如何使用另一个类的actionPerformed方法删除一个类/组件中的按钮?   java JSON反序列化brakets{}中的一系列对象