Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

C# process, pipe

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?
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: C# process, pipe

If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: C# process, pipe

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
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
Gebruikersavatar
Bart
Artikelen: 0
Berichten: 7.224
Lid geworden op: wo 06 okt 2004, 22:42

Re: C# process, pipe

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#
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: C# process, pipe

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
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: C# process, pipe

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
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
Gebruikersavatar
jhnbk
Artikelen: 0
Berichten: 6.905
Lid geworden op: za 16 dec 2006, 09:10

Re: C# process, pipe

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)
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Terug naar “Informatica en programmeren”