我正在使用Raspberry Pi进行一个小项目,但我想在Windows上编程,然后将代码传输到Pi上。有没有办法在Windows上使用RPi.GPIO库?我正在使用Python来编码
答案 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 有一个很棒的远程开发扩展)。