树莓派(Linux) 上使用 minicom 发送 AT 指令给模块
文章目录
- 树莓派(Linux) 上使用 minicom 发送 AT 指令给模块
今天在一个群里有人问了这个问题。刚好以前试用过 minicom, 所以回答了一下。
使用 minicom 和使用一般常用的 桌面 “串口助手” 是有所不同。
重点在于两者机制不同。因为我自己写过图形界面的串口助手来整合到我的一个项目中,所以之前在遇到使用 minicom 的时候,对这一点能比较快的发现原因所在。
重点就是:minicom 是没有”发送按钮“这一说的,从键盘,每输入一个字符,等同于立马从串口发送出去。
而 ”串口助手“ 这一类的工具,是有一个编辑框,所以是等输入完成,点击了发送按钮,才把输入框中的整串字符发送出去。
区分是什么?
最大的区别就是,如果你的”模块“,对从串口发送过来的”字符“没有做特殊符号处理和立即回显的话,那么使用 minicom 就不能输入错误,输错误就要把整句”发送“出去,然后重来。
这一句话可能不是很好理解。
简单说,特殊符号处理就是 ”backspace“ 键,”tab“ 键(在模块上一般不会用到 tab 键),等等。
而回显就是,你使用 minicom 输入了一个字符,随便比如 “A”, 这个时候一般基于串口助手这个惯例使用设计的模块是不会发送任何内容给你的主机(树莓派/或者说LINUX),也就是说,无法在 minicom 中看到任何内容。
这个时候再输入 ”T“,当然,也不会有任何内容显示。
最后你再输入 “\r”, “\n” (使用键盘组合键输入,请查 ASCII 码表!!!!),这个时候,正常情况下minicom 中就有内容显示了
因为我的例子是指一般情况下,模块都会提供 "“AT\r\n” 这个测试模块当前是否已经可以正常工作的测试命令。
如果测试指令并非这个,换一下就可以了。
相信我要说的要点应该已经很明显了。
- 使用 minicom 调试 模块,不会”立即“看到内容在屏幕上(因为模块一般不会做回显)。
- 使用 minicom 调试模块,输错指令直接再输入 ”\r\n“,然后再重新输入正确的指令(因为模块一般不支持 backspace)。
- 使用 minicom 调试模块,遇到 ”\r“, “\n” 等等这类字符,请查 ASCII 表使用对应的组合键输入。
- 个人不是很建议使用 minicom 调试模块(因为 minicom 适用于 ”console“ 这样的场景)。
其中 1. 和 2. 是直接相关的。没有”立即“回显的机制,必然就不会支持处理 backspace 字符(backspace 也是一个字符)。
一般 “模块” 内部机制都是不停地接收串口发送过来的字符,直到一整个完整的终止符(一般是 “\r\n”),然后才是去响应(内部代码比较指令是否正确等)。
理解了上述我说的这些。那么串口方面的通信也就不会再有什么能使你困惑的异常现象找不出来了。
因为上面已经说了上位机的串口实现机制。
最后一小段还将要说了一下模块内部一般是如何实现的。