当不使用rpi或单元测试时,有一堆假接口用于开发

fake-rpi的Python项目详细描述


https://raw.githubusercontent.com/MomsFriendlyRobotCompany/fake_rpi/master/pics/pi-python.jpg

假覆盆子皮

Latest VersionLicenseTravis-ciPython Versions

为什么??

我在PowerBook上做了很多开发,我厌倦了不断地创建 我的笔记本电脑上的dev和travis.ci上的测试的假接口。

  • 2017年4月2日:beta质量
  • 2017年4月8日:初始python3支持…这是一个痛苦

那么,这是否模拟了覆盆子皮上的一切?不!现在它模拟 我用的和需要的。随着时间的推移,还会有更多的人加入。我们也欢迎您 提交对我尚未添加的内容的请求。

AdafruitLSM303(accelerometer)
GPIOgpio pins
picameracamera
RPiPWM
smbusi2c
serialnot done yet

安装

安装的首选方法是:

pip install fake_rpi

发展

提交请求并进行开发:

git clone
cd fake_rpi
pip install -e .

使用量

要伪造rpi.gpiosmbus,必须在应用程序之前执行以下代码:

# Replace libraries by fake onesimportsysimportfake_rpisys.modules['RPi']=fake_rpi.RPi# Fake RPi (GPIO)sys.modules['smbus']=fake_rpi.smbus# Fake smbus (I2C)

然后您可以在应用程序中保留常用的导入:

importRPi.GPIOasGPIOimportsmbusGPIO.setmode(io.BCM)# now use the fake GPIOb=GPIO.input(21)sm=smbus.SMBus(1)# now use the fake smbusb=sm.read_byte_data(0x21,0x32)# read in a byte

打开/关闭假呼叫记录:

fromfake_rpiimporttoggle_print# by default it prints everything to std.errortoggle_print(False)# turn on/off printing

但是我需要smbus来返回单元测试的特定字节!好,然后创建我的smbus的子级,如下所示 只修改需要更改的方法:

fromfake_rpiimportsmbusfromfake_rpiimportprintfclassMyBus(smbus.SMBus):@printfdefread_byte_data(self,i2c_addr,register):ret=0xffifi2c_addr==0x21:ret=0x55elifi2c_addr==0x25:ret=0x11returnretsm=MyBus()b=sm.read_byte_data(0x21,0x32)# read in a byte

打印打开或关闭

以下是打印完成后gitrepo中example.py的输出 打开或关闭:

kevin@Logan fake_rpi $ ./example.py
<<< WARNING: using fake raspberry pi interfaces >>>
kevin@Logan fake_rpi $ ./example.py
<<< WARNING: using fake raspberry pi interfaces >>>
fake_rpi.RPi.PWM.__init__()
fake_rpi.RPi.PWM.start(5,)
fake_rpi.smbus.SMBus.__init__(1,)
fake_rpi.smbus.SMBus.write_byte_data(1, 2, 3)
fake_rpi.smbus.SMBus.read_byte_data(1, 2): 21
fake_rpi.smbus.SMBus.close()
__main__.MyBus.__init__()
__main__.MyBus.read_byte_data(1, 2): 72
__main__.MyBus.read_i2c_block_data(1, 2, 3): [90, 90, 90]

更改日志

2019-03-290.6.1bug fix with randint range
2017-11-300.6.0bug fix with printing
2017-10-230.5.3bug fix with randint
2017-09-050.5.1flushing out interfaces
2017-07-070.3.0fixed bugs, print statement, and reduced dups
2017-04-080.1.0initial python3 setup and support
2017-04-020.0.2pushed to pypi with landscape.io fixes
2017-04-010.0.1created

麻省理工学院执照

版权所有(c)2017 Kevin J.Walchko

兹免费准许任何人取得 本软件和相关文档文件(“软件”),用于处理 不受限制的软件,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或销售副本 以及允许向其提供软件的人员 因此,必须满足以下条件:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性、适用性的保证 为了特殊目的和不侵权。在任何情况下,作者或 版权持有人应对任何索赔、损害或其他责任负责,无论 在合同诉讼、侵权诉讼或其他诉讼中,由 与软件的连接或软件的使用或其他交易。

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

推荐PyPI第三方库


热门话题
java Android使用两个后台服务错误   解压缩HTTPInputStream时,java GZIPInputStream过早关闭   javax和javax的区别是什么。网ssl。密钥库和服务器。ssl。为SpringBoot应用程序指定密钥库时的密钥库属性   java生成两个JPanel,而我只需要一个   java深度链接从play store安装应用程序时获取数据   java 安卓应用程序在退出时未正确释放蓝牙   java正确使用setCellValueFactory   java开放JdbcTemplate连接处于只读模式?   使用Spring MVC创建服务时发生java错误   JavaFX获取安装在计算机中的特定应用程序的版本   SecureRandom的安全问题:PRNG在java 1.5中不一致   windows我可以创建一个独立的。带Inno设置的Java应用程序的exe安装程序?   如何使用JavaServlet下载csv文件?   java从生成的缓冲图像中添加图像作为jasper中的数据记录?   java日期和时间解析