gpt4 book ai didi

raspberry-pi - 在 pppd 处于事件状态时向 SIM900 发送 AT 命令

转载 作者:行者123 更新时间:2023-12-04 14:26:55 25 4
gpt4 key购买 nike

我有一个连接了 SIM900 GSM 附加板的 Raspberry Pi。我已经设法与 pppd 建立了 GPRS 连接。关注 this guide . (适用于不同的 GSM 模块,但步骤相同)

我想定期向 SIM900 发送 AT 命令 (AT+CCLK?) 以检查时钟。我已使用 screen 管理发送临时 AT 命令但是当pppd我不能使用 screen连接到串行线。它只是直接退出说[screen is terminating] .我猜这是因为 pppd正在使用它连接到互联网。

问:如何在不必关闭 pppd 的情况下获得时钟时间?

查看 user manual 的一部分它说 SIM900 有一个按 GSM0710 标准设计的多路复用器。这会有用吗?如果是这样,我将如何实现这一目标?

最佳答案

好的,我几乎已经解决了这个问题,但卡在了最后一个障碍。以为我会展示我所做的事情,因为它可能会帮助其他人。

我找到了this other post关于堆栈溢出,列出了实现此目的的 3 种可能方法。当 PPP(以我​​有限的经验)很好且轻松地处理这个问题时,我不想通过 AT 命令控制 gprs。 RPi 只有一个串口,所以我不能多路复用多个串口。

所以这让我只能在单个串行接口(interface)上​​进行多路复用,希望 SIM900 支持这一点。我找到了here使用 GSM07.10 标准的 SIM900 多路复用器的用户手册。

我找不到太多关于如何设置多路复用的信息,但最终在四处挖掘后我发现了 this关于 linux 内核中的 n_gsm 模块的文档。我几乎可以按照它在说什么,但不足以编写我自己的程序来设置许多虚拟串行端口。

谢天谢地,经过一番谷歌搜索后,我发现这位非凡的绅士有 created a C program使用 n_gsm 模块为我们设置虚拟串口。

我按照说明下载、配置和构建程序,并尝试加载 n_gsm 模块。不幸的是,RPi 默认不包含 n_gsm 模块,所以我不得不去构建一个新内核,并将 n_gsm 添加为模块。我关注了instruction在 RPi 网站上非常好。

对于 SIM900,我必须更改第 322 行以删除 &w AT+IPR 的结尾命令。它应该知道的样子:
if (send_at_command(serial_fd, "AT+IPR=115200\r") == -1)
errx(EXIT_FAILURE, "AT+IPR=115200: bad response");

我还将第 128 行编辑为 sleep(1.5)在尝试读取响应之前,因为它有时会返回错误,因为它没有及时得到响应。

所以我运行 cmux 程序(使用 sudo,因为它需要创建新的/dev/ttyGSM* 设备)并运行 AT 命令,设置线路规则并创建新的虚拟串行设备,但是当我尝试打开串行设备时终端与 screen /dev/ttyGSM1 115200屏幕只返回 [screen is terminating] .

我做了sudo fuser /dev/ttyGSM1它什么也没返回,所以没有其他进程正在使用它。

然后我尝试了echo AT > /dev/ttyGSM1返回 -bash: /dev/ttyGSM1: Level 2 halted .

我不确定这是指什么,也找不到有关此消息的任何信息。它可以谈论 OSI 模型的第 2 层,也就是数据链路层吗?

无论如何,这就是我已经走了多远。我决定暂时把它放在一边,只使用 NTP,但我希望这对其他人有帮助。如果您确实找到了解决方案或可以提出一些我可能错过的建议,请务必说出来。谢谢

关于raspberry-pi - 在 pppd 处于事件状态时向 SIM900 发送 AT 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28939656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com