Windows上的RPi.GPIO库

时间:2017-08-29 14:43:52

标签: python python-3.x raspberry-pi gpio

我正在使用Raspberry Pi进行一个小项目,但我想在Windows上编程,然后将代码传输到Pi上。有没有办法在Windows上使用RPi.GPIO库?我正在使用Python来编码

3 个答案:

答案 0 :(得分:0)

我用C ++中的覆盆子在VisualStudio2017上远程工作。包括使用GPIO。也可以进行远程调试。 VisualStudio还能够在python中编程。

我认为有人可能已经完成了。然后我找到了这些链接:

https://docs.microsoft.com/en-us/visualstudio/python/debugging-cross-platform-remote

Importing RPi.GPIO into a Python Project within Visual Studio

直到现在它似乎只有在你不使用Pi的时候才有效。

另一个方法可能是通过ssh编辑文件并直接在pi上运行它们。有很多程序可以做到这一点。我使用cyberduck和sublime文本。要运行程序,请使用putty。

答案 1 :(得分:0)

好的....这是一个旧线程,但是最近我在学习python时遇到了这个问题,我想出了一个合理的解决方法。

我有一个与此类似的项目结构;

helloworld
├── main.py
├── common
│   ├── foo.py
│   ├── bar.py
│   └── __init__.py
├── rpi
│   ├── __init__.py
│   └── gpio_proxy.py

我已经创建了自己的rpi软件包,其中包含一个自定义的gpio模块。然后,这个gpio门面会尝试导入RPi.GPIO,如果不能,则退回到默认行为。

(我只列出了所需的方法和道具,您可能需要添加更多内容)

_rpiLoaded = True

try:
    import RPi.GPIO as GPIO
except:
    _rpiLoaded = False

class GPIOProxy():
    BCM = GPIO.BCM if _rpiLoaded else 'BCM'

    HIGH = GPIO.HIGH if _rpiLoaded else 'HIGH'
    LOW = GPIO.LOW if _rpiLoaded else 'LOW'

    IN = GPIO.IN if _rpiLoaded else 'IN'
    OUT = GPIO.OUT if _rpiLoaded else 'OUT'

    FALLING = GPIO.FALLING if _rpiLoaded else 'FALLING'
    RISING = GPIO.RISING if _rpiLoaded else 'RISING'
    BOTH = GPIO.BOTH if _rpiLoaded else 'BOTH'

    PUD_UP = GPIO.PUD_UP if _rpiLoaded else 'PUD_UP'
    PUD_DOWN = GPIO.PUD_DOWN if _rpiLoaded else 'PUD_DOWN'

    def setmode(*args, **kwargs):
        if _rpiLoaded:
            GPIO.setmode(*args, **kwargs)
        else:
            pass

    def setwarnings(*args, **kwargs):
        if _rpiLoaded:
            GPIO.setwarnings(*args, **kwargs)
        else:
            pass

    def setup(*args, **kwargs):
        if _rpiLoaded:
            GPIO.setup(*args, **kwargs)
        else:
            pass

    def output(*args, **kwargs):
        if _rpiLoaded:
            GPIO.output(*args, **kwargs)
        else:
            pass

    def add_event_detect(*args, **kwargs):
        if _rpiLoaded:
            GPIO.add_event_detect(*args, **kwargs)
        else:
            pass

然后在项目的其余部分中,您可以导入外观并正常使用,显然,您不会获得任何GPIO行为。...但是至少它会挂在一起,您可以对其进行单元测试全部。

我没有解释的东西;当代码在RPi上运行但未安装RPi.GPIO库时,此解决方案将像在Windows上运行时一样起作用,并且实际上不执行任何操作。尽管您的项目是否在运行=>

之前安装了所有依赖项,但是不确定是否有问题

答案 2 :(得分:0)

您可以将控制 GPIO 引脚的代码行替换为打印出引脚状态的其他代码行。

但是,我认为最好使用远程开发(如果您使用此代码编辑器,Visual Studio Code 有一个很棒的远程开发扩展)。