我正在尝试通过串行端口向BeagleBone写命令,然后读取该输出,但由于某些原因,它似乎不起作用。这是我的代码:
SerialPort port = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One);
port.ReadTimeout = 500;
port.WriteTimeout = 500;
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
port.Open();
port.WriteLine("debian\r\n"); //default login username
port.WriteLine("temppwd\r\n");//default login password
void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string message = port.ReadExisting();
System.Diagnostics.Debug.WriteLine(message);
}
例如,port.WriteLine("debian\r\n")
似乎正常工作,但此后port.WriteLine("temppwd\r\n")
似乎不工作。我期望debian@beaglebone:~$:
在调试控制台中看到打印出来的内容,但port.WriteLine("debian\r\n")
毕竟打印出来的是空白。这是因为我需要在第二条命令之前执行第一个命令吗?据我所知,我认为已经SerialDataReceivedEventHandler
做好了。谢谢,任何帮助将不胜感激。
编辑:只是为了澄清,我能够建立与SBC的连接,因为在调试控制台中,登录时的默认文本已打印出来。
在命令之间进行简单的睡眠就可以了,并且可以满足您的用例:
port.WriteLine("debian\r\n");
Thread.Sleep(500);
port.WriteLine("temppwd\r\n");
Thread.Sleep(500);
port.WriteLine("ls /\r\n");
更好的解决方案是解析接收到的数据。请注意,您从串行端口事件中获取的“消息”字符串
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句