生活中,很多时候我们为了完成一件事,而又不得不去完成相关的其他事,进而步入无穷无尽的坑,学习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-8
import 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.py
print("Hello NetRouter In Python")