R rPython 远程计算机的 python

R rPython remote computer's python

我想构建一个 Shiny 应用程序并通过它使用 raspberry pi 的 GPIO 引脚控制一些硬件。 如果我在 pi 本身上安装 R 并使用像

这样的代码
library(rPython)
python.exec("
                import RPi.GPIO as GPIO
                import time
                GPIO.setmode(GPIO.BCM)
                GPIO.setwarnings(False)
                GPIO.setup(18,GPIO.OUT)
                GPIO.output(18,GPIO.HIGH)
            ")

我可以从 raspberry pi 的 R 控制台很好地控制 GPIO 引脚上的输出和输入。但是由于 pi 不能托管 Shiny 服务器,有没有办法可以使用笔记本电脑的 R 会话连接到 pi 的 python 环境并通过 rPython 控制 GPIO 引脚? 或者对该任务还有其他建议吗?

试试 R 的 svSocket 包。这通过 TCP/IP 协议进行通信。使用此软件包,您可以在 pi 上设置服务器。喜欢

require(svSocket)
startSocketServer(port = 9999) # choose your preferred port
while(1)
{
   ... # some code to do
   Sys.Sleep(0.05) # give the system some time to do other things
}

这使您的 pi 可以在 while 语句中做一些事情。同时,您可以向它发送一些代码,这些代码将从 运行 服务器进行评估。

在您计算机上的 R 会话中键入:

require(svSocket)
con <- socketConnection(port = 9999)

evalServer(con, <code to evaluate on your pi>)

这是我在不同计算机上与不同 R 会话交谈的方式。

最好! 马丁