簡體   English   中英

在C#中寫入Linux tty(/ dev /)文件

[英]Writing to linux tty (/dev/) files in c#

我需要我的程序來執行Bash中的命令,如下所示:“ echo P1-12 = 175> / dev / servoblaster”。 如何在Linux上的Mono / C#中做到這一點? 我寫了下面的課:

public static class ServoBlasterPWM
{
    private static FileStream devFile;

    public static bool IsRunning
    {
        get;
        private set;
    }

    public static bool Initialize()
    {
        try
        {
            devFile = File.Open("/dev/servoblaster", FileMode.Open);
        }
        catch (Exception e)
        {
            Log.Error("Error while setting up port for Servo Blaster: " + e.Message);
            return false;
        }

        Log.Success("ServoBlaster is set up.");
        IsRunning = true;

        return true;
    }

    public static void SetPWMOutput(int pin, int valueSteps)
    {
        //byte[] bytes = Encoding.ASCII.GetBytes("P1-" + pin.ToString() + "=" + valueSteps.ToString());

        byte[] bytes = Encoding.ASCII.GetBytes("P1-12=175");
        devFile.Write(bytes, 0, bytes.Length);
        devFile.Flush();

        Console.WriteLine("Wrote to file");
    }

    public static void Shutdown()
    {
        devFile.Close();
        IsRunning = false;

        Log.Info("Servo Blaster has been shut down.");
    }
}

此代碼無效。 我還嘗試了StreamWriter而不是FileStream,但是它崩潰了,並說了一個異常,說該流不支持查找。 我不知道該怎么做。 請幫忙。

嘗試通過以下方式將字符串替換為數組代碼:

byte[] bytes = ASCIIEncoding.UTF8.GetBytes("P1-12=175") ;

要么:

byte[] bytes = ASCIIEncoding.Default.GetBytes("P1-12=175") ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM