我正在开发一个C#ASP.Net服务,该服务不断读取raspberry pis上的GPIO。这将读取输入端的管脚,并触发输出端的管脚。我的调用可以正常工作,但我的问题是,需要时,我每隔0.5秒调用一次Python脚本。e、 g读取输入将每0.5秒调用一次,但输出仅在需要时触发。我的问题是,每次调用都会启动一个新的Python.exe实例,并且在脚本运行时不会关闭它们。我尝试过python脚本中的各种退出,以及C#eg.process.Kill()中的一些退出,但是没有任何东西可以杀死python exe。附件是显示问题的任务管理器的图像。下面我将添加用于调用python脚本的代码和用于显示调用python脚本的读取输入脚本。我在中留下了一些评论,以便您可以看到我以前尝试过的内容。谢谢
调用Python脚本的代码:
String exePath = SystemSettingDB.GetSettingValue("Python Executbale Path");
string holdPath = SystemSettingDB.GetSettingValue("Door Open Script Path");
var open = new ProcessStartInfo();
open.FileName = exePath;
var controllerIP = _controllerIP;
open.Arguments = $"\"{holdPath}\" \"{controllerIP}\" \"{_pin}\"";
open.UseShellExecute = false;
open.CreateNoWindow = true;
open.RedirectStandardOutput = true;
open.RedirectStandardError = true;
var process = Process.Start(open);
if (process != null)
{
process.Kill();
return true;
}
用于读取输入的Python脚本
import sys
import os
from time import sleep
os.environ["PIGPIO_PORT"] = "8888"
os.environ["GPIOZERO_PIN_FACTORY"] = "pigpio"
from gpiozero import LED
os.environ["PIGPIO_ADDR"] = sys.argv[1]
gpio_pin = sys.argv[2]
door = LED(gpio_pin)
door._read()
print(door.value)
sys.exit(0)
#os._exit(-1)
试试这个: 1.从以下位置下载PSTools:https://docs.microsoft.com/en-us/sysinternals/downloads/pskill 2.编写以下代码:
相关问题 更多 >
编程相关推荐