2013-06-21 23 views
5

Voglio fare ciò che ho scritto nel titolo. Ma semplicemente non riesco a capirlo. Ho anche googled everythng. Voglio scrivere stringhe su file di tipo speciale FIFO, create da mkfifo (credo). Se ci sono altri suggerimenti su come farlo, sei il benvenuto.Scrittura su FIFO FILE, Linux & Mono (C#)

static class PWM 
{ 

    static string fifoName = "/dev/pi-blaster"; 

    static FileStream file; 
    static StreamWriter write; 

    static PWM() 
    { 
     file = new FileInfo(fifoName).OpenWrite(); 

     write = new StreamWriter(file, Encoding.ASCII); 
    } 

    //FIRST METHOD 
    public static void Set(int channel, float value) 
    { 
     string s = channel + "=" + value; 

     Console.WriteLine(s); 

     write.Write(s); 

     // SECOND METHOD 
     // RunProgram(s); 
    } 

    //SECOND METHOD 
    static void RunProgram(string s) 
    { 
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.EnableRaisingEvents = true; 

     proc.StartInfo.FileName = "bash"; 
     string x = "|echo " +s+" > /dev/pi-blaster"; 
     Console.WriteLine(x); 

     proc.StartInfo.Arguments = x; 
     proc.StartInfo.UseShellExecute = false; 

     proc.StartInfo.RedirectStandardInput = true; 

     proc.Start(); 
     // proc.WaitForExit(); 
    } 
} 

risposta

5

SOLUZIONE !!!! PI-BLASTER WORKS: D: D (persi 2 giorni di vita per questo) write.flush era critico, btw.

namespace PrototypeAP 
{ 
static class PWM 
{ 

    static string fifoName = "/dev/pi-blaster"; 

    static FileStream file; 
    static StreamWriter write; 

    static PWM() 
    { 
     file = new FileInfo(fifoName).OpenWrite(); 

     write = new StreamWriter(file, Encoding.ASCII); 
    } 

    //FIRST METHOD 
    public static void Set(int channel, float value) 
    { 
     string s = channel + "=" + value + "\n"; 

     Console.WriteLine(s); 

     write.Write(s); 
     write.Flush(); 
    } 
} 
}