Надеюсь, вы можете мне помочь. Я кодирую малину Pi с MonoDevelop.Процесс останавливается сразу после старта
Я хочу выполнить скрипт python с C# и прочитать его.
class Program
{
public static void Main(string[] args)
{
Process p = new Process();
p.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
p.StartInfo.FileName = "sudo";
p.StartInfo.Arguments = "python gpio.py";
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
}
private static void OutputHandler(Object sender, DataReceivedEventArgs args)
{
Console.WriteLine(args.Data);
}
}
Во время отладки я могу видеть, что процесс завершился Click for image
Но в TaskManager я могу видеть, что этот процесс все еще работает. Также скрипт управляет контактами gpio. И скрипт управляет контактами (Led on/off), даже если «Процесс вышел». Но я ничего не получаю от redirectOutput.
Почему процесс немедленно завершает работу после запуска (у сценария есть значение true, оно не должно останавливаться)? Это правильный способ выполнить скрипт?
Если я выполняю скрипт Python с терминала, он отлично работает. Это не должно быть ошибкой со сценарием. Если я запускаю процесс, например. FileName «libreoffice», он тоже работает.
Сценарий находится в папке проекта в папке «/ bin/Debug /» (папка) Разрешения для исполнения установлены для всех.
Спасибо,
Привет
Я думаю, проблема в том, что sudo, попробуйте запустить программу C# уже sudo'ed, а затем использовать python в качестве имени файла и gpio.py в качестве параметров. Но окончательная рекомендация, вместо того, чтобы использовать Python для управления использованием gpio непосредственно C#, взгляните на это: https://github.com/gusmanb/BCM2835Managed – Gusman