无法使用minicom发送字符

25

我正在使用minicom通过串行连接与目标(sparc处理器的UART链接)进行通信。 使用gtkterm或cutecom,我可以连接、读取和发送字符。它们唯一的问题是在每个LF字符之后都会插入空行,并且: -gtkterm无法记录输出到文件 -cutecom在记录输出到文件后没有“flush”(它会延迟,并且只有在16k数据包后才会被刷新)

基于控制台的Minicom将解决这些问题(而且它不会插入空行……),但我仍然无法通过它发送任何字符,也不明白为什么! 当我按下一个键时(例如,“0”+回车),它会被写入(如果我启用本地回显),但没有任何反应(而在gtkterm和cuteterm中它可以工作!!)。 在我的程序中,我使用以下方式进行读取:

`r = scanf("%d", &option);`

通过调试器,我发现程序永远不会超过这一行...

有人有什么想法吗?


基本上,远程端的应用程序从未收到“0”+回车符,而当我使用gtkcom或cutecom时,它会收到。 - Goulou
  1. 为什么minicom会解决这些问题,因为它是基于控制台的?我不理解这种联系。
  2. 可能是minicom中的某些配置错误,比如波特率。键入CTRL-A,然后O,进入minicom配置模式。
  3. 这不像是一个程序员问题,更像是一个superuser.com或者甚至是serverfault.com的问题。
- Prof. Falken
4个回答

93

您可以尝试在minicom配置的串行端口设置中将“Hardware Flow Control”选项设置为“NO”。

请查阅minicom文档以了解该选项的含义 :)


这实际上解决了我的问题。波特率和设置都是正确的,但是这个微小的选项。谢谢。 - d6bels
解决了我的问题。谢谢。 - Barış Velioğlu
解决了我的Beaglebone Black上u-boot的问题。 - slogan621
1
解决了我使用CP2102 USB转UART适配器时遇到的问题。在Arduino IDE中可以工作,但在Minicom中直到进行此更改才能正常工作。谢谢! - QuickishFM
这个也解决了我的问题 - Keshava GN

24
  1. 在设置端口时将硬件流控制设置为“否”会有帮助。(minicom -s; 进入串口设置; 最后两行是硬件和软件流控制; 只需将两者都设置为NO)
  2. 打开回显(开启 minicom 后按ctrl+A,然后按 E 键)可以检查您发送的内容是否正确。

4

本地回显并不能说明数据是否已经发送出去。scanf()如何解释换行符也可能会影响结果。可以尝试使用getchar()创建一个程序,并查看是否能够获取输入,特别是当在不同的终端仿真器中按下回车键时会发生什么。

检查minicom中所有的波特率等设置是否正确。查看minicom的命令行参数,以便可以直接指定选项。


2
通过调整使用wvdialconf获取的波特率,问题得到了解决。 - David Okwii

0

重启我的Linux机器解决了我的问题。

Minicom之前一直在工作,但当我的同事意外关闭板子后,它停止接收输入。我尝试了一个小时的所有方法,但都无济于事。当什么都不起作用时,我重启了电脑,结果它开始工作了。


有一句法英押韵的谚语非常贴切这种情况:dans le doute, reboot!意思是:如果有疑问,重新启动! - Hadrien TOMA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接