当 pppd 处于活动状态时向 SIM900 发送 AT 命令

2023-11-26

我有一个连接了 SIM900 GSM 附加板的 Raspberry Pi。我已成功与以下设备建立 GPRS 连接pppd依照指示本指南。 (针对不同的GSM模块,但步骤是相同的​​)

我想定期发送一条 AT 命令(AT+CCLK?)到SIM900检查时钟。我已经使用管理发送临时 AT 命令screen但当pppd已启动,我无法使用screen连接到串行线。它立即退出说[screen is terminating]。我猜这是因为pppd正在使用它连接到互联网。

Q:如何在不关闭 pppd 的情况下获取时钟时间?

纵观部分用户手册它说SIM900有一个按照GSM0710标准设计的多路复用器。这有用吗?如果是这样我将如何实现这一目标?


好吧,我几乎已经解决了这个问题,但陷入了最后一个障碍。我想我会展示我所做的事情,因为它可能会帮助别人。

I found 这另一篇文章关于堆栈溢出,列出了 3 种可能的方法来实现此目的。当 PPP(以我​​有限的经验)可以很好且轻松地处理这个问题时,我不想通过 AT 命令控制 gprs。 RPi 只有一个串行端口,因此我无法在多个串行接口上​​进行复用。

因此,我只能通过单个串行接口进行多路复用,希望 SIM900 支持此功能。我发现here使用GSM07.10标准的SIM900复用器的用户手册。

我找不到太多关于如何设置多路复用的信息,但最终在深入研究后我发现this有关 Linux 内核中 n_gsm 模块的文档。我只能大致理解它所说的内容,但不足以编写自己的程序来设置多个虚拟串行端口。

值得庆幸的是,经过更多的谷歌搜索,我发现这位非凡的绅士有创建了一个 C 程序使用n_gsm模块为我们设置虚拟串口。

我按照说明下载、配置和构建了程序,并尝试加载 n_gsm 模块。不幸的是,RPi 默认不包含 n_gsm 模块,因此我必须构建一个新内核,并将 n_gsm 添加为模块。我跟着操作说明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].

I did sudo fuser /dev/ttyGSM1它没有返回任何内容,因此没有其他进程正在使用它。

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

我不确定这指的是什么,也找不到有关此消息的任何信息。难道是在谈论 OSI 模型的第 2 层(即数据链路层)吗?

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 pppd 处于活动状态时向 SIM900 发送 AT 命令 的相关文章

  • 有没有模拟Raspberry Pi的Vagrant盒子?

    我正在考虑评估使用 Raspberry Pi 对 ARM 芯片进行编程的工具链 并且我想运行一个模拟 Raspberry 环境的 Vagrant 盒子 有谁知道是否有类似的东西可用 我已经在网上搜索了解决方案 但我可能向谷歌提出了错误的问题
  • 同时使用 GPRS 和 GSM

    我正在尝试使用 GSM GPRS 调制解调器的 GPRS 功能将数据发送到远程服务器 但我无法这样做 我在 Arduino 论坛上发布了一个问题 但没有得到任何回复 这是问题的链接 https robotics stackexchange
  • AT+CUSD 无法在华为 e3131a 调制解调器上工作

    我试图发送 at 命令以在 huawei e3131a 调制解调器上获得平衡 但无论我使用什么配置 GSM IRA UCS2 我总是收到 Ok 作为答案 我还尝试更改操作员代码 123 到许多格式 如十六进制 PDU 简单字符串 但无法获得
  • 如何跨架构使用 python-poetry?

    我的主要开发机器是x86 64虽然我的一些部署环境是arm7vl 树莓派 对于大多数 Python 开发来说 这不是问题 但某些 Python 库只能在PyPI https pypi org for x86 64 or piwheels h
  • 无需登录即可启动Raspberry Pi [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想问你是否有任何方法可以启动树莓派 使用Raspbian 而无需登录和密码并直接进入GUI 以 Windows 为例 拉斯布比喘息 以下
  • 我可以使用 SocketCAN 读取 CRC 和 ACK 位吗?

    我正在寻找一种方法 通过 PiCan2 将消息从一个 Raspberry Pi 发送到另一个 并接收回来以读取 CRC 和 ACK 位 我搜索了文档但找不到这样的选项 我可能错过了什么吗 你不直接处理CRC and ACK 但当此类事件发生
  • Raspbian 的软浮动版本无法启动

    我在这里下载了 Raspbian 的硬浮动图像 http www raspberrypi org downloads http www raspberrypi org downloads 我将推荐的硬浮动映像复制到 SD 卡上 并且 Ras
  • 如何在Python脚本中获取方波的频率

    我正在使用 TSL235 http www ti com lit ds symlink tsl235 pdf http www ti com lit ds symlink tsl235 pdf 光频转换器和 Raspberry Pi 传感器
  • 无法挂载内存cgroup

    我尝试使用以下命令挂载内存 cgroup sudo mount t cgroup none sys fs cgroup memory o memory 我收到错误 mount sys fs cgroup memory wrong fs ty
  • 如何通过网络访问Raspberry PI QEMU VM

    我已通过 QEMU 在 Mac OS X 上成功设置了 Raspberry PI VM 现在我想从我的 Mac 访问该虚拟机的文件系统 When I call ifconfig on my VM I get this And here th
  • 节点守护进程不会以 process.stdin.setRawMode(true) 启动[重复]

    这个问题在这里已经有答案了 我正在运行节点服务器守护程序 但我不断遇到此错误 当我运行 bash strip 来测试应用程序时 我得到TypeError process stdin setRawMode is not a function
  • Linux 上共享串口

    我正在使用 Raspberry Pi 进行一个项目 该项目需要能够写入和读取串行端口 但来自不同的程序 程序 A 需要能够从外围设备 A 正在发送数据的串行端口读取数据 程序B需要向串口写入数据 外设B正在监听串口 供参考 本例中程序A是G
  • 电话管理器值可靠且可变(cdma)吗?

    我想知道我的应用程序是否可以依赖 Android 上的电话值 例如国家 地区 MCC 等 我可以使用 setprop 在运行时更改它们吗 我尝试使用 setprop 进行更改 但似乎不起作用 据我了解 电话管理器是一个类 接口 代表 GSM
  • 树莓派和 GitLab

    有什么办法可以运行 GitLab http gitlab org gitlab ce http gitlab org gitlab ce 和 GitLab CI http gitlab org gitlab ci http gitlab o
  • 如何使用 OpenCV 检测图像帧中的对象?

    我正在使用 Raspberry Pi 开发一个漫游器 它将清扫房间并捡起掉落在地上的物体 为了检测物体 我使用了在流动站操作开始时拍摄的参考图像 以及每 10 秒单击一次的图像 新图像 为了确定图像帧是否发生变化 我在参考图像和新图像之间进
  • 是否可以将 SpaCy 安装到 Raspberry Pi 4 Raspbian Buster

    我一整天都在安装 SpaCy sudo pip install U spacy Looking in indexes https pypi org simple https www piwheels org simple Collectin
  • GSM 调制解调器 USSD 检查余额时出现 CME 错误 100

    我正在尝试使用华为 E1550 3G 调制解调器通过 USSD 检查 SIM 卡余额 但当我总是发送 AT CUSD 1 100 15 I Get CME Error 100 是的 我的调制解调器支持 USSD 因为我有一个调制解调器的仪表
  • VideoCapture.read() 返回过去的图像

    我在跑python3 6 with openCV on the Raspberry pi OS is Raspbian 代码的大致结构如下 The image以时间间隔 3 5 分钟 捕获 被捕获image在函数中处理并返回度量 精度的种类
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • “gi.repository.Gtk”对象没有属性“gdk”

    我正在尝试使用 GTK 创建多线程 需要 Gtk gdk 但我收到有关没有 gdk 属性的错误 我正在使用带有 Raspbian 的 Raspberry Pi 这就是我导入 GTK 库的方式 try import pygtk pygtk r

随机推荐

  • 在富文本框中创建换行符

    我需要帮助为 RichTextBox 创建新行 但在使用 CheckBox 时我无法使用它 它保持重叠而不是创建新的单词行 尝试使用的方法rtbdisplay text display envrionment newline 我的代码中的示
  • 如何在Java中显示树形层次结构?

    我的数据库中有一个名为 Process 的表 该进程表有3个字段 进程号 进程名 进程父进程id 现在我想以图形格式显示这个父子层次结构 那么您能否向我提出以下建议 Q1 为了从数据库获取数据并将数据存储在该数据结构中 哪种数据结构更好 Q
  • 如何在 IE 中使用 JQuery 隐藏和显示 SELECT 选项

    我试图从下拉列表中隐藏一些选项 jQuery 的 hide and show 在 Firefox 和 Chrome 中工作得很好 但在 IE 中就不那么幸运了 有什么好主意吗 根据浏览器检测隐藏和显示选项 在许多可能的方法中 此方法需要浏览
  • Mysql 表名不能大写

    我需要更改 mysql 接受大写和小写表名 select from users 上面的查询工作正常 但下面的查询不起作用 select from USERS 这取决于您的系统 主要值是 Unix Windows 和 Mac OS 您需要将系
  • firebase 消息服务可以 android:exported="false" 吗?

    想确认是否可以设置android exported false 例如 ID 服务和消息服务 我通过保持测试android exported false 和通知工作正常
  • param: _* 在 Scala 中意味着什么?

    作为 Scala 2 9 1 的新手 我有一个List Event 并想将其复制到Queue Event 但以下语法会产生Queue List Event 反而 val eventQueue Queue events 由于某种原因 以下工作
  • 了解 iBeacon 数据:功率字段和其他字节

    我是蓝牙系统的新手 我正在尝试了解新的苹果技术 iBeacon 使用的数据 已经有一些很好的答案解释了它是如何工作的 我一直在阅读我能找到的所有内容 特别是蓝牙规范 尽管如此 我仍然遗漏了一些要点 我将首先举一个例子 我正在使用设置广告数据
  • 如何在linux中使用cx_freeze创建要在windows中使用的包

    如何在 Linux 中使用 cx freeze 创建一个可在 Windows 中使用的包 如 exe 或 bin 文件 我在 Linux 中测试了 cx freeze 但在 Linux 和 Windows 中制作软件包是未知的 例如 cxf
  • 将 VB.NET Winforms 应用程序移植到 C#

    是否有任何 好的 资源可将 VB NET winforms 应用程序移植到 C 我确信有软件可以翻译代码 但我希望同时重构代码 保持当前的形式是有问题的 因为它使用了 VB NET 允许的一些 不良设计 实践 并且会使未来的维护进一步复杂化
  • 如果 chrome 开发工具打开,AJAX 可以工作,但如果 chrome web 工具关闭,AJAX 就不行?

    我正在通过 ajax 加载 json 文件 如果 Chrome 开发工具打开 一切都会完美运行 如果 Chrome 开发工具关闭 则会失败 值得庆幸的是 即使关闭时 开发工具仍然会继续做它的事情 所以我仍然可以看到我得到的异常 Failed
  • C#:枚举中的按位运算符(MVC 中的自定义授权)

    我目前正在阅读一篇文章 但我不太明白这是如何与逻辑运算符一起使用的 谁能向我解释一下吗 例如 如果我想与客户 员工 主管和管理员建立 4 级证券 Serializable Flags public enum WebRoles custome
  • UnsatisfiedLinkError:java.library.path中没有opencv_java249

    在我的 Mac 上运行一段代码时遇到一些问题 有人给我写了一个图像分析 java 应用程序 但当我尝试在 netbeans 上运行它时 我不断收到此错误 运行 线程 主 java lang UnsatisfiedLinkError 中出现异
  • Guava 中有类似 Function Java 的 Effect 的东西吗?

    我知道纯函数式编程的目标之一是消除可变性 从而排除副作用 但让我们面对现实吧 即使存在所有函数式编程库 Java 也不是一种函数式语言 事实上 一些 FP 图书馆似乎知道并期望这一点 例如 在函数式 Java 中 有Effect班级 在 J
  • C 中带符号和无符号变量的环绕解释?

    我在 C 规范中读到了一些无符号变量 特别是无符号短int 执行一些所谓的环绕关于整数溢出 尽管我在有符号变量上找不到任何东西 除了我留下的未定义的行为 我的教授告诉我 他们的价值观也被包裹起来 也许他只是指海湾合作委员会 我认为这些位只是
  • 删除由 ::before 伪选择器添加的元素

    我有以下情况 样式是在SASS中完成的 并且省略了不必要的样式 header before position absolute height 0 5rem 这会在应用程序的菜单栏顶部创建一个栏 在某些情况下 必须删除该栏 我读过类似的问题t
  • 如何更新sql server中的前100条记录

    我想更新 SQL Server 中的前 100 条记录 我有一张桌子T1有字段F1 and F2 T1有200条记录 我想更新F1字段中的前 100 条记录 我怎样才能根据TOP 100在 SQL Server 中 注意 括号是必需的UPD
  • Spring boot可以根据属性文件的内容动态创建端点吗?

    到目前为止 我正在创建这样的端点 RequestMapping value test method RequestMethod POST public ResponseBody String indexPost HttpServletReq
  • 用于获取整棵树的 JPA 查询

    我有一个类对所有类别进行建模 并且它们可以按层次结构排序 Entity Table name categories public class Category Id GeneratedValue strategy GenerationTyp
  • 泽西岛多种农产品

    我正在关注球衣教程here弄清楚如何产生多个哑剧输出 从他们的网站来看 这是推荐的方式 GET Produces application xml application json public String doGetAsXmlOrJson
  • 当 pppd 处于活动状态时向 SIM900 发送 AT 命令

    我有一个连接了 SIM900 GSM 附加板的 Raspberry Pi 我已成功与以下设备建立 GPRS 连接pppd依照指示本指南 针对不同的GSM模块 但步骤是相同的 我想定期发送一条 AT 命令 AT CCLK 到SIM900检查时