我尝试使用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。
答案 0 :(得分:0)
Echo
默认发送换行符,您不会包含引号:
这一行:
string s = "echo \"TestMode On\"\r";
变为:
string s = "TestMode On\n";
答案 1 :(得分:0)
这种情况下的解决方案是将串行端口上的编码从ASCII更改为UTF8。显然这在这里有所不同。感谢大家的时间和精力!