2016-07-26 2 views
0

희망을 보내 주시면 감사하겠습니다. MonoDevelop가있는 라즈베리 파이를 코딩하고 있습니다.시작 후 즉시 프로세스가 중지됩니다.

나는 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

그러나 내가 볼 수있는 윈도우 작업 관리자에서 를 종료 된 것을 볼 수 있습니다. 또한 스크립트가 gpio 핀을 제어합니다. 그리고 스크립트는 "프로세스가 종료되었습니다"라고해도 핀 (Led on/off)을 제어합니다. 하지만 redirectOutput에서 아무것도 얻지 못합니다.

시작한 후 프로세스가 즉시 종료되는 이유는 무엇입니까? 이것이 스크립트를 실행하는 올바른 방법입니까?
터미널에서 파이썬 스크립트를 실행하면 올바르게 작동합니다. 스크립트에 오류가 없어야합니다. 예 : 프로세스를 시작한 경우 FileName "libreoffice", 그것도 작동합니다.

스크립트는 프로젝트 폴더의 "/ bin/Debug /"(폴더)에 있습니다. 실행 권한은 누구에게나 설정됩니다. @Gusman 말했듯이

감사합니다,
인사

+1

sudo는 이미 sudo'ed를 실행 한 다음 파일 이름으로 python을 사용하고 매개 변수로 gpio.py를 사용하기 때문에 문제라고 생각합니다. 그러나 파이썬을 사용하여 gpio의 사용을 직접 제어하는 ​​대신 C#을 사용하는 대신 파이썬을 사용하는 대신 파이썬을 사용하는 것이 좋습니다. https://github.com/gusmanb/BCM2835Managed – Gusman

답변

0

, 문제는 sudo를했다. 그리고 권장대로 지금 DLL을 사용하여 GPIO 핀에 액세스합니다. 라즈베리 파이가 완벽하게 지원되지 않더라도.

관련 문제