2016-07-26 225 views
0

希望你能幫助我。我正在用MonoDevelop編寫Raspberry Pi。啓動後立即停止進程

我想用C#執行一個python腳本並從中讀取它。

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開/關),即使「Process已退出」。但我沒有從redirectOutput獲取任何內容。

爲什麼程序在啓動後立即退出(腳本有一段時間是真的,它不應該停止)?這是執行腳本的正確方法嗎?
如果我從終端執行Python腳本,它工作正常。它不應該是腳本的錯誤。 如果我開始一個過程,例如FileName「libreoffice」,它也可以工作。

該腳本位於「/ bin/Debug /」(文件夾)中的項目文件夾中 執行權限是爲任何人設置的。

感謝,
問候

+1

我認爲問題是因爲s​​udo,試圖運行已經sudo'ed的C#程序,然後使用python作爲文件名,並使用gpio.py作爲參數。但是最後一個推薦,而不是使用Python來直接控制gpio的使用C#,看看這個:https://github.com/gusmanb/BCM2835Managed – Gusman

回答

0

正如@Gusman說,這個問題是sudo的。正如我建議我現在使用DLL來訪問GPIO引腳。即使樹莓派沒有完全支持。