在C#中执行shell命令到串口单声道

时间:2016-11-01 08:24:32

标签: c# linux mono raspberry-pi3

我尝试使用C#在串口上发送字符串。

我已经完成了使用以下命令通过我的RaspBerry pi(Raspbian)上的终端发送此字符串:

echo "TestMode On" > /dev/ttyAMC0

这个有效!但这只是在终端。我想要做的是使用C#执行此特定命令我目前的方法是:

public bool DoSomething(){
        MySerial = new SerialPort("/dev/ttyACM0");
        MySerial.Open();
        MySerial.ReadTimeout = 400;
        string s = "echo \"TestMode On\"\r";
        Log.Information(s);
        return SendData(s);
}
private bool SendData(string command)
    {
        MySerial.Write(command);
        return true;
    }

我使用Serilog记录信息,在该控制台窗口中我可以看到该字符串确实是: echo" TestMode On"

我在这里失踪了什么?

提前致谢,

Herm L。

2 个答案:

答案 0 :(得分:0)

Echo默认发送换行符,您不会包含引号:

这一行:

string s = "echo \"TestMode On\"\r";

变为:

string s = "TestMode On\n";

答案 1 :(得分:0)

这种情况下的解决方案是将串行端口上的编码从ASCII更改为UTF8。显然这在这里有所不同。感谢大家的时间和精力!