C#,如何以一定顺序通过串行端口向Linux SBC(BeagleBone)读/写命令?

活泼的

我正在尝试通过串行端口向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的连接,因为在调试控制台中,登录时的默认文本已打印出来。

夜94

在命令之间进行简单的睡眠就可以了,并且可以满足您的用例:

    port.WriteLine("debian\r\n"); 
    Thread.Sleep(500);
    port.WriteLine("temppwd\r\n"); 
    Thread.Sleep(500);
    port.WriteLine("ls /\r\n"); 

更好的解决方案是解析接收到的数据。请注意,您从串行端口事件中获取的“消息”字符串

  • 可能不包含整行
  • 可能包含多行
  • 可能永远不会以CR / LF结尾(如果提示)
  • 可能包含终端控制字符

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Linux Shell,如何通过串行端口发送命令并返回?

延迟从串行端口进行读写

通过cat命令如何以及何时可以从串行设备读取数据?

串行端口读写代码之间的连接冲突

在Windows上使用Lua读写串行端口

使另一个文件夹/文件可读写的命令(Shell Script Android)

读写文件:tee命令

如何循环python命令一定次数?

如何使用命令打开cmd一定次数

在同一线程中的同一JAVA RXTX串行端口上同时读写

使用MultiThreading C#通过串行端口向LOG屏幕读取和写入数据

我试图通过串行端口发送命令列表,但设备仅占用第一行,其他行被忽略

如何使用PowerShell通过串行端口将十六进制命令发送到监视器

如何以一定顺序合并文件夹中的多个Json文件

如何以一定顺序备份和还原权限,并可以比较发现差异?

在Java中,如何以一定的顺序执行代码行并在它们之间有延迟?

在Java中,如何以一定的顺序执行代码行并在它们之间有延迟?

在串行端口(到intel galileo)的Windows中读写数据

C#:如何获取当前PowerPoint幻灯片的名称/数字并通过串行端口发送?

如何以读写模式挂载UFS磁盘?

如何在Linux命令行上通过Mono构建C#文件?

在 Python3.8 中通过串行(USB-RS232)端口发送 ASCII 命令时是否需要一些特殊的编码?

通过C#中的串行端口发送SMS,但出现垃圾

python至arduino串行读写

如何在Linux中修改Windows C#代码以从Mono中的串行端口读取?

C#如何在C#中刷新串行端口

通过Python读写JSON

通过SPI读写闪存

使用C#读写文件