简体   繁体   中英

Writing to FIFO FILE, Linux & Mono(C#)

I want to do what I wrote in the title. But I just simply can't get my head around it. I also googled everythng. I want to write strings to file of special type FIFO, created by mkfifo (I think). If there are any other suggestions how to do this, you are welcome.

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();
    }
}

SOLUTION!!!! PI-BLASTER WORKS :D :D (lost 2 days of life because of this) write.flush was critical, 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();
    }
}
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM