博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python gpio
阅读量:5914 次
发布时间:2019-06-19

本文共 2008 字,大约阅读时间需要 6 分钟。

打算用python控制gpio,网上找的都是一些关于树莓派如何操作gpio的文档,只针对树莓派。所以就自己封装一下函数,方便以后使用。在linux上已经生成了和gpio相关的文件,只要对文件进行读取即可。

参考:

在查看这个之前需要对linux文件系统对gpio控制有基本的了解。可以阅读参考文档。

这里封装了简单的函数。

#!/usr/bin/env pythonimport io gpioValue = {'high': 1, 'low': 0}# gpio的几种触发方式NONE    = 'none'RISING  = 'rising'FALLING = 'falling'BOTH    = 'both'# 导出gpio,相当于申请,这样其他程序就不能使用这个gpiodef gpioExport(gpioIndex):    with open('/sys/class/gpio/export', 'wb') as f:        f.write(str(gpioIndex).encode())# 释放gpio,释放之后其他程序才能调用这个gpio口 def gpioUnexport(gpioIndex):    with open('/sys/class/gpio/unexport', 'wb') as f:        f.write(str(gpioIndex).encode())        # 设置输入def setInput(gpioIndex):    with open('/sys/class/gpio/gpio%d/direction' % gpioIndex, 'wb') as f:        f.write('in'.encode())        # 设置输出def setOutput(gpioIndex):    with open('/sys/class/gpio/gpio%d/direction' % gpioIndex, 'wb') as f:        f.write('out'.encode())        # 读取输入值def getInputValue(gpioIndex):    with open('/sys/class/gpio/gpio%d/value' % gpioIndex, 'r+') as f:        return f.read().strip('\n')  # delete the '\n'         # 设置输出的值def setOutputValue(gpioIndex, value):    with open('/sys/class/gpio/gpio%d/value' % gpioIndex, 'wb') as f:        return f.write(str(value).encode())        # 设置gpio触发方式def setEdge(gpioIndex, edge):    with open('/sys/class/gpio/gpio%d/edge' % gpioIndex, 'wb') as f:        f.write(edge.encode())        # 读取gpio的触发方式def getEdge(gpioIndex):    with open('/sys/class/gpio/gpio%d/edge' % gpioIndex, 'r+') as f:        return f.read().strip('\n')        # 读取gpio的值def getGpioValue(gpioIndex):    gpioExport(gpioIndex)    setInput(gpioIndex)    val = getInputValue(gpioIndex)    gpioUnexport(gpioIndex)    return val    # 获取一组GPIO的值,出入的参数是tuple或者list# 返回listdef getGpioValues(gpioTuple):    gpioValues = []    for i in gpioTuple:        gpioExport(i)        setInput(i)        gpioValues.append(getInputValue(i))        gpioUnexport(i)    return gpioValues# 等待gpio触发事件(还未实现)def waitForEdge(gpioIndex):    pass

Tony Liu

2017-6-3, Shenzhen

转载地址:http://wagpx.baihongyu.com/

你可能感兴趣的文章
yum 安装rabbitMQ
查看>>
跟我学《JavaScript高程3》视频教程,下载地址
查看>>
GLSL变量
查看>>
使用nginx—搭建YUM仓库
查看>>
测试人员必学的软件快速测试方法(二)
查看>>
linux下以RPM包安装Oracle 客户端
查看>>
28. PowerShell -- 注册表操作
查看>>
搭建 android sdk环境
查看>>
第14章 grep、sed、awk 正则表达式
查看>>
ant_Jmeter持续集成测试报告优化之添加throughput显示
查看>>
一个=号引发的错误.......
查看>>
CPU显卡内存与3DMAX渲染的关系
查看>>
【Java】方法重载于覆写的区别;This与Super的区别;Final关键字的作用
查看>>
10.2生成器
查看>>
VS2010编辑界面主题美化
查看>>
Linux 常用命令之touch
查看>>
RestTemplate设置通用header
查看>>
TRex 学习(2) ---- stateful (basic)
查看>>
[高并发Java 二] 多线程基础
查看>>
PHP源码目录结构
查看>>