Witam,
probuje zaimplementowac komunikacje ze skryptem w pythonie, ktory wywoluje w C#.
Sam odczyt standardowego wyjscia dziala, jednak potrzebuje po odczytaniu wyjscia wyslac sygnal "tirgger" do skryptu poprzez standardowe wejscie.
Chcialbym zeby to wygladalo tak:
Odpalam skrypt->czytam wyjscie ze skryptu->skrypt czeka na wcisniecie klawisza->symuluje wcisniecie klawisza przez standardowe wejscie (trigger)->odczytuje wynik po wykonanej operacji.
NIe bardzo wiem jak to zsynchronizowac. Teraz jak zaczynam czytanie to aplikacja zatrzymuje sie w tym miejscu i zaden inny przycisk z UI nie dziala.
Metody Read,Write,Run sa przypisane do buttonow.
Prosze o wskazowki jak to wszystko ladnie ogarnac. Z gory dziekuje.
public void RunPythonScript(string scriptName, string args)
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = @"C:\Python36\python.exe";
start.Arguments = string.Format("{0} {1}", scriptName, args);
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
start.RedirectStandardInput = true;
start.CreateNoWindow = true;
var pythonScript = Process.Start(start);
pythonWriter = pythonScript.StandardInput;
pythonReader = pythonScript.StandardOutput;
// odczyt ponizej dziala, jednak w osobnej funkcji nie.
//using (pythonScript)
//{
// using (StreamReader reader = pythonScript.StandardOutput)
// {
// string result = reader.ReadToEnd();
// Console.Write(result);
// }
//}
}
public void ReadLine()
{
using (pythonReader)
{
string result = pythonReader.ReadLine();
Console.WriteLine(result);
}
}
public void WriteLine()
{
using (pythonWriter)
{
pythonWriter.Flush();
pythonWriter.WriteLine("U");
}
}