生活中,很多时候我们为了完成一件事,而又不得不去完成相关的其他事,进而步入无穷无尽的坑,学习python也是如此。
Part1:
为了学python,正常步骤是搭建环境,安装系统,还要考虑python版本,好不容易找到一个可以用的例子,复制上去,中文问题,格式问题,各种各样问题让你望而却步。
所以我们有一个大胆想法,用openwrt嵌入式开发板做学习开发板,直接在板子上搭建环境,烧写后可以直接测试代码~~~直奔主题。
Part2:
为啥学习python,先上一个开源的python,简单代码,实现复杂功能:
"""""
来自https://github.com/wwj718/raspberrypi_api/blob/master/led_server.py 例子
"""""""""
#!/usr/bin/env python# encoding: utf-8import RPi.GPIO import time from flask import Flask from flask_cors import CORS, cross_origin app = Flask(__name__) CORS(app)
对硬件的操作参考:http://blog.mangolovecarrot.net/2015/04/20/raspi-study01/ , 感谢 mango 同学
### 指定GPIO口的选定模式为GPIO引脚编号模式(而非主板编号模式) RPi.GPIO.setmode(RPi.GPIO.BCM) ### 指定GPIO14(就是LED长针连接的GPIO针脚)的模式为输出模式 ### 如果上面GPIO口的选定模式指定为主板模式的话,这里就应该指定8号而不是14号。 RPi.GPIO.setup(14, RPi.GPIO.OUT) ### 循环10次 @app.route('/led_up') def led_up(): RPi.GPIO.output(14, True) return 'ok' @app.route('/led_down') def led_down(): RPi.GPIO.output(14, False) return 'ok' ### 闪啊闪 @app.route('/led_up_down') def led_up_down(): for i in range(0, 5): # 让GPIO14输出高电平(LED灯亮) RPi.GPIO.output(14, True) # 持续一段时间 time.sleep(0.5) # 让GPIO14输出低电平(LED灯灭) @app.route('/led_up_down') def led_up_down(): for i in range(0, 5): # 让GPIO14输出高电平(LED灯亮) RPi.GPIO.output(14, True) # 持续一段时间 time.sleep(0.5) # 让GPIO14输出低电平(LED灯灭) RPi.GPIO.output(14, False) # 持续一段时间 time.sleep(0.5) return 'ok' ### 最后清理GPIO口(不做也可以,建议每次程序结束时清理一下,好习惯) #RPi.GPIO.cleanup() if __name__ == '__main__': app.run(host='0.0.0.0',port='5000')
虽然代码有注释,但是看完还是一脸懵逼。其实这段代码实现了一个web服务,可以这样控制树莓派io口
点亮红灯: curl 192.168.0.106/led_up
熄灭红灯: curl 192.168.0.106/led_down
闪啊闪 : curl 192.168.0.106/led_up_down
Part3:
为啥是python
一直以来印象:
Python类似shell脚本
Python可以写个http服务
Python可以很简单发送http请求
Python是万能的像他
Python两句话就能解决c++要捣腾很久的事情。
也许是对C++膜拜,一直在回避,从来没去正式了解,但是。。。 。。。
为了能看懂开源工程,为了驶入开源这条大道上,只能伪装成Python好手
那要怎么开始呢,首先
1.要懂点shell脚本
2.要懂点c++。对类有点感觉
3.懂点网络编程或是你要使用到的应用场景,比如语音,你总得知道语音要处理些啥。
如果我都没有呢,别怕,看看这个教程好吧。老司机开始开车,请滴卡,让我们用“使用思维“”来套用到学习python上
1.怎么执行一个python程序:
和shell脚本一样,不过要带上python NetRouter.py
我们先写一个打印 “Hello NetRouter In Python”python程序,然后运行一下
root@Widora:/# python HelloNetRouter.py Hello NetRouter In Python
查看具体代码,只有一个输出函数调用。。。
root@Widora:/# cat HelloNetRouter.pyprint("Hello NetRouter In Python")
未完待续~~!
0_1497963596909_firmware_20170608_python.zip
pps 系统运行后,将附件上传到widora 的tmp,使用dd命令将镜像烧写到mtdblock3即可