2016-07-26 2 views
0

Надеюсь, вы можете мне помочь. Я кодирую малину 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 /» (папка) Разрешения для исполнения установлены для всех.

Спасибо,
Привет

+1

Я думаю, проблема в том, что sudo, попробуйте запустить программу C# уже sudo'ed, а затем использовать python в качестве имени файла и gpio.py в качестве параметров. Но окончательная рекомендация, вместо того, чтобы использовать Python для управления использованием gpio непосредственно C#, взгляните на это: https://github.com/gusmanb/BCM2835Managed – Gusman

ответ

0

Как сказал @Gusman, проблема была Судо. И, как рекомендовано, я использую сейчас DLL для доступа к контактам GPIO. Даже если малина Pi не полностью поддерживается.