Communication avec gnuplot
Publié : 16.07.2009 - 21h45 par Jaxom
Bonjour,
Depuis hier je m'essaie à gnuplot. J'ai déjà réussi à le compiler dans sa dernière version. J'arrive très bien à le faire fonctionner depuis le terminal.
Maintenant j'ai dans l'idée de faire une petite application qui utiliserait gnuplot et afficherai les graphiques dans une NSView. C'est la première fois que j'utilise NSTask et NSPipe et bien sûr je n'ai aucun résultat.
J'ai essayé deux ou trois choses. Ma dernière tentative pour voire si quelque choses se passe est au-dessous. Je peux voire dans le Moniteur d'Activité que gnuplot se lance bien en process fils de mon appli.
Est-ce que quelqu'un à une idée à proposer ?
Depuis hier je m'essaie à gnuplot. J'ai déjà réussi à le compiler dans sa dernière version. J'arrive très bien à le faire fonctionner depuis le terminal.
Maintenant j'ai dans l'idée de faire une petite application qui utiliserait gnuplot et afficherai les graphiques dans une NSView. C'est la première fois que j'utilise NSTask et NSPipe et bien sûr je n'ai aucun résultat.
J'ai essayé deux ou trois choses. Ma dernière tentative pour voire si quelque choses se passe est au-dessous. Je peux voire dans le Moniteur d'Activité que gnuplot se lance bien en process fils de mon appli.
Est-ce que quelqu'un à une idée à proposer ?
Code : Tout sélectionner
- (void)awakeFromNib
{
NSLog(@"%@, %@", self, NSStringFromSelector(_cmd));
NSTask *gnuplotTask = [[NSTask alloc] init];
[gnuplotTask setLaunchPath:@"/usr/local/bin/gnuplot"];
[gnuplotTask setCurrentDirectoryPath:[NSHomeDirectory() stringByAppendingPathExtension:@"Desktop"]];
[gnuplotTask setStandardInput:[NSPipe pipe]];
[gnuplotTask setStandardOutput:[NSPipe pipe]];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dataAvailable:)
name:NSFileHandleDataAvailableNotification
object:[[gnuplotTask standardOutput] fileHandleForReading]];
[[[gnuplotTask standardOutput] fileHandleForReading] readInBackgroundAndNotify];
[gnuplotTask launch];
}
- (void)dataAvailable:(NSNotification *)aNotification
{
NSData *data = [[aNotification userInfo] objectForKey:NSFileHandleNotificationDataItem];
NSLog(@"%@, %@\n%@", self, NSStringFromSelector(_cmd), [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]);
}