1 van 1

C# process, pipe

Geplaatst: ma 10 mar 2008, 16:58
door jhnbk
Ik zou een schaakcomputer (winboard engine) moeten sturen vanuit C# door gebruik te maken van de Process class.

Code: Selecteer alles

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Diagnostics;



namespace testWB

{

	class Program

	{

		static void Main(string[] args)

		{

			Process Crafty = new Process();



			Crafty.StartInfo.FileName = "D:\\simon.exe";

			Crafty.StartInfo.UseShellExecute = false;

			Crafty.StartInfo.RedirectStandardOutput = true;

			Crafty.Start();

		}

	}

}


Nu geraak ik echter niet verder dan deze regels code. Ik zou nu dus invoer naar het proces moeten kunnen geven, en hiervan terug uitlezen. Weet er iemand hoe het verder moet, of waar ik iets kan vinden op het internet?

Re: C# process, pipe

Geplaatst: ma 10 mar 2008, 19:58
door Bart

Re: C# process, pipe

Geplaatst: ma 10 mar 2008, 20:02
door jhnbk
Bedankt Bart. Tot nu toe lukt het al wel.

Ik heb uiteraard ineens een volgende vraag :D

Hoe kan ik weten of mijn pipe klaar is voor een nieuwe invoer?

Ik zie niet echt een functie die hier voor kan dienen

Re: C# process, pipe

Geplaatst: ma 10 mar 2008, 20:11
door Bart
Misschien dit? http://www.developerfusion.co.uk/show/4519/2/

Sorry dat ik je niet meer kan helpen, maar ik heb maar beperkte ervaring in C#

Re: C# process, pipe

Geplaatst: ma 10 mar 2008, 20:20
door jhnbk
toch bedankt. De laatste link die je gaf was niet verduidelijkend

Code: Selecteer alles


{

s = reader.ReadLine();

Console.WriteLine("{0}", s);

} while (s != null);
Iets in deze stijl heb ik toegevoegd, maar het probleem is dat (althans zo denk ik) dat reader.Readline blijft wachten op een nieuwe lijn, die er helaas niet komt omdat de invoer terug moet starten

Re: C# process, pipe

Geplaatst: di 11 mar 2008, 18:53
door jhnbk
Ik heb nog van alles geprobeerd, maar ik geraak er niet uit.

Ik heb nu:

StreamReader reader = p.StandardOutput;

StreamWriter writer = p.StandardInput;

toe gevoegd, maar nu zou ik nog moeten weten, tot waar ik mag inlezen, en wanneer het proces klaar is voor invoer

Re: C# process, pipe

Geplaatst: zo 16 mar 2008, 15:12
door jhnbk
Ik heb mijn code aangepast door een nieuwe thread aan te maken die constant gegevens uitleest via een streamreader. Dit loopt allemaal heel vlot tot ik mijn code heb aangepast om te communiceren met maxima en GNU octave. Als ik een error maak voor octave bijvoorbeeld dan gaat die thread niets meer uitlezen, buiten lege strings (De thread stopt ook niet)