linux串口编程 gsm,linux 中用n_gsm实现3gpp MUX协议

2023-11-10

n_gsm 是一种tty设备上的线路规程(line discipline),来实现3gpp MUX协议

n_gsm 实现方法如下:

1. kernel配置文件中 打开 CONFIG_N_GSM=y 编译内核

2. cat /proc/device | grep gsmtty 查看gsmtty

主节点号 3. 建立虚拟串口

例如:(例子中主节点号为251)

busybox mknod /dev/ttygsm0 c 251 0

busybox mknod /dev/ttygsm1 c 251 1

busybox mknod /dev/ttygsm2 c 251 2

busybox mknod /dev/ttygsm3 c 251 3

busybox mknod /dev/ttygsm4 c 251 4

4. 打开串口,进行属性设置

5 用CMUX设置modem mux模式

6.用TIOCSETD ioctl设置串口线路规程 (line discipline )

下面是示例代码

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define N_GSM0710 21

#define DEFAULT_SPEED B115200

#define SERIAL_PORT "/dev/ttyO3"

int main()

{

int fd;

int ldisc = N_GSM0710;

int status;

struct gsm_config c;

struct termios Opt;

//struct termios configuration;

fd = open(SERIAL_PORT, O_RDWR);

printf("\ntry to set 115200\n");

tcgetattr(fd, &Opt);

//Opt.c_lflag = 0;

Opt.c_iflag = 0;

Opt.c_cflag=7346;

Opt.c_lflag=0;

Opt.c_oflag=0; // 4

tcflush(fd, TCIOFLUSH);

cfsetispeed(&Opt, B115200);

cfsetospeed(&Opt, B115200);

status = tcsetattr(fd, TCSANOW, &Opt);

if (status != 0) {

printf("\ntcsetattr error");

}

tcflush(fd,TCIOFLUSH);

printf("\nterm set ok\n");

write(fd, "AT+SCMUX=3\r", 11);

sleep(3);

ioctl(fd, TIOCSETD, &ldisc);

ioctl(fd, GSMIOC_GETCONF, &c);

c.initiator = 1;

c.encapsulation = 0;

c.mru = 127;

c.mtu = 127;

ioctl(fd, GSMIOC_SETCONF, &c);

sleep(1);

daemon(0,0);

pause();

return 0;

}

精彩博文推荐阅读:

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

linux串口编程 gsm,linux 中用n_gsm实现3gpp MUX协议 的相关文章

  • android ListView 滚动加载item

    悉Android的朋友们都知道 不管是微博客户端还是新闻客户端 都离不开列表组件 可以说列表组件是Android数据展现方面最重要的组件 我们今天就要讲一讲列表组件ListView加载数据的相关内容 通常来说 一个应用在展现大量数据时 不会
  • ArcGis系列-java发布空间表为地图服务(map)

    1 实现思路 使用java调用cmd命令执行python脚本 python环境使用arcgis pro安装目录下的 ArcGIS Pro bin Python envs arcgispro py3 作为地图服务应该可以支持添加样式文件 发布
  • 分布式定时任务

    本文引用了谷粒商城的课程 定时任务 定时任务是我们系统里面经常要用到的一些功能 如每天的支付订单要与支付宝进行对账操作 每个月定期进行财务汇总 在服务空闲时定时统计当天所有信息数据等 定时任务有个非常流行的框架Quartz和Java原生AP
  • Latex技巧(持续更新)(\newcommand{}{})

    自定义一个新命令 newcommand tcr textcolor red 为了方便设置文本颜色为红色而定义的简化命令 code documentclass article usepackage xcolor newcommand tcr
  • Protobuf之proto文件编写规则

    一 简单介绍 protobuf文件 就是定义你要的消息 类似java中的类 和消息中的各个字段及其数据类型 类似java类中的成员变量和他的数据类型 二 Protobuf消息定义 1 消息由至少一个字段组合而成 类似于C语言中的结构 每个字
  • 【Docker】docker 执行 apt-get E: Could not open lock file /var/lib/dpkg/lock - open

    1 背景 mac下安装了docker 然后用docker 安装了grafana软件 然后进入grafana base lcc lcc prometheus docker exec it 4b5f517f4340 bash grafana 4
  • Python运维开发(CMDB管理系统)——常用函数

    内置函数 len 返回容器中item的数量 sum 计算可迭代对象的和 字符串不可以和数字相加 str 把其他类型转换成字符串 int 把其他类型转换成int max min 求列表中的最大值或者最小值 range 返回一个可迭代对象 ra
  • Python 删除列表中的'\n'和空格

    要爬取的span标签下的价格730 用的是xpath获取内容 但爬取的结果为 把 i 标签以及后面的div也爬取下来了 导致这部分为 n 和空格 很显然 这不是我要的结果 想过先用xpath 再用正则表达式匹配数字 但一直提示类型不一致 因
  • 苏小红版 c语言程序设计(第三版)系列实验题:学生成绩管理系统V6.0

    github https github com Jackie0Feng SAMS 系统需求描述 某班有最多不超过30人 具体人数由键盘输入 参加期末考试 考试科目最多不超过6门 具体门数由键盘输入 学生成绩管理系统是一个非常实用的程序 如果
  • 深入探索C++中模板参数的自动推导

    深入探索C 中模板参数的自动推导 利用模板参数推导时需要注意以下几点 编译器只根据函数调用时给出的实参列表来推导模板参数值 与函数参数类型无关的模板参数其值无法推导 与函数返回值相关的模板参数其值也无法推导 所有可推导模板参数必须是连续位于
  • 函数的调用过程及其运行时堆栈解析

    为了较为深入的了解一下函数的调用过程 所以我在学习的过程中用一段简单的代码对其进行了研究 代码和调用堆栈如下 下图为上述函数的反汇编及调用过程
  • pyecharts 安装报错 ModuleNotFoundError: No module named 'pyecharts_snapshot'

    安装方法 pip install pyecharts 正常导入 import pyecharts 报错信息 ERROR lml utils failed to import pyecharts snapshot Traceback most
  • PostgreSQL常用命令使用

    1 连接数据库 psql U postgres psql U username d databse name h host W U 指定用户 d 指定数据库 h 要链接的主机 W 提示输入密码 2 切换数据库 c dbname 3 列举数据
  • 《单片机原理及应用》——概述

    系列文章目录 文章目录 系列文章目录 前言 一 计算机的位数是什么 二 51单片机 前言 学习视频链接是 https www bilibili com video BV1sE411L7j5 spm id from 333 337 searc
  • C# 引用类型作为函数参数时

    C 引用类型作为函数参数时 在探讨本文的主题之前 先来介绍下C 中的值类型和引用类型 众所周知C 中有值类型和引用类型 值类型有基础数据类型 诸如int double bool等 结构体 枚举 引用类型有接口 类 委托 值类型全部在操作系统
  • sqli-labs--Less7

    目录 一 Less 7 1 按照之前文中的思路 输入 id 1 发现提示 2 提示我们使用outfile函数 接下来需要做的就是研究outfile 的用法 以及寻找注入点 3 执行写入的文件 发现执行成功 一 Less 7 1 按照之前文中
  • 3. Python3 运算符

    Hi 大家好 我是茶桁 前两节我们学习了基本的Python特性和语法 并且认识了一些基本的Python脚本 今天 我们来学习一下Python的运算符 而我们选择的版本为Python3 什么是运算符 为了能让我们的学习顺利进行下去 首先我们需
  • 【编程之路】常见的排序算法(一)

    常见的排序算法 一 本文将介绍五种基础的排序算法 分别是 冒泡 选择 插入 快速 归并 1 冒泡排序 冒泡排序应该是入门级的排序算法了 class solution def sort arr self arr n len arr for i
  • 聊聊最近几年的路径追踪技术的进展(一)

    路径追踪技术 Path tracing PT 已经是当下工业中离线渲染使用的主流技术 不管是商业渲染器如皮克斯的RenderMan Solid Angle的Arnold等 还是迪士尼的in house渲染器Hyperion以及Weta Di

随机推荐

  • 与finally单独使用的是try

    try一般和catch搭配使用 捕获时可以没有catch块 但是此时必须有finally块 换言之try可以和catch finally两个中的一个搭配使用 但是catch和finally不能单独搭配使用
  • 如何正视自己的劣势?面试!

    面试真的是最直接面对自己劣势的方式 平时身边人看不清或者不愿意指出你的劣势 自己如果又不肯正视 那就会逐渐的积累成大问题 印象最深刻的是某小公司的技术终面 做的跟我完全同领域 面试官与我对切模型然后我败下阵来 临走的时候他说 我们公司还是想
  • 域名备案后修改服务器,域名备案后修改服务器

    域名备案后修改服务器 内容精选 换一换 PHPWind 简称 PW 是一个基于PHP和MySQL的开源社区程序 是国内较受欢迎的论坛之一 轻架构 高效易开发 使用户可快速搭建并轻松管理 本文档指导用户使用华为云市场镜像 PHPWind 论坛
  • 推荐系统(一)

    协同过滤 Collaborative Filtering A基于邻域的算法 B隐语义模型 C基于图的随机游走算法 A 基于邻域的算法 一 基于用户的协同过滤算法 UserCF 给用户推荐与其兴趣相似的其他用户喜欢的物品 1 首先找到与目标用
  • 几种常见的神经网络了解

    神经网络技术起源 感知机 神经网络技术起源于上世纪五 六十年代 当时叫感知机 perceptron 拥有输入层 输出层和一个隐含层 输入的特征向量通过隐含层变换达到输出层 在输出层得到分类结果 早期感知机的推动者是Rosenblatt 当时
  • 【单片机毕业设计】【mcuclub-309】衣柜除湿消毒

    设计简介 项目名 基于单片机的智能衣柜除湿消毒控制系统设计 标准版 基于单片机的衣柜环境监测 控制系统设计 标准版 基于单片机的多功能衣柜控制系统设计 标准版 单片机 STC89C52 功能简介 1 通过DHT11检测衣柜内温湿度 当湿度大
  • 常用正则表达式以及校验

    1 邮箱验证 判断邮箱格式是否正确 String ruleEmail w w w A Za z0 9 A Za z0 9 A Za z0 9 正则表达式的模式 编译正则表达式 Pattern p Pattern compile ruleEm
  • nRF52832学习记录(九、SAADC)

    nRF52xx 处理器中的ADC为一个逐次逼近的模拟数字转换器 所有nRF52xx 系列处理器的内部 ADC 称为 SAADC 目录 nRF52xx SAADC基础介绍 SAADC采样示例 SAADC EasyDMA 缓冲采样示例 SAAD
  • 记一次容器环境下出现 Address not available

    困惑的源地址 pod 创建后一段时间一直是正常运行 突然有一天发现没有新的连接创建了 业务上是通过 pod A 访问 svc B 的 svc name 的方式 进入 pod 手动去 wget 一下 发现报错了 Address not ava
  • 思科 计算机网络 第2章测试&考试 答案

    拓展 思科交换机常用命令及配置 测验 当通过 Cisco CLI 配置主机名时 哪三项命名约定将作为指南的一部分 选择三项 A 主机名的长度应少于 64 个字符 B 主机名应全部用小写字符表示 C 主机名应不包含空格 D 主机名应该以一个特
  • 球面如何切分成多个扇面?

    近期在研究使用D3D开发三维显示场景 发现D3D支持的纹理图的大小有限制 这种限制一般由D3D引擎 显卡驱动和显卡硬件共同决定 使用如下代码可以获取当前系统能支持最大纹理大小 D3DCAPS9 caps m pd3dDevice gt Ge
  • Linux 下计算圆周率

    转自 http blog csdn net zhuying linux article details 7298465 oracle sor sys time echo scale 5000 4 a 1 bc l q 输出的是小数点后 位的
  • 防治交换机窃听技术_等保2.0建设基本要求(技术部分)解读(下)

    网御星云对等保2 0基本要求技术部分 以四级为例 对安全计算环境 安全管理中心的控制点逐项解读内容如下 01 安全计算环境 1 1 身份鉴别 a 应对登录的用户进行身份标识和鉴别 身份标识具有唯一性 身份鉴别信息具有复杂度要求并定期更换 b
  • rpgmv存档修改html_使用HTML5存档网站内容更改

    rpgmv存档修改html The majority of web content today exists in a state of retrograde amnesia Created in a moment content is c
  • 从GAN到WGAN及WGAN-GP

    20200910 0 引言 最近看了PassGAN的代码 他是使用了WGAN GP的代码作为GAN的框架 来进行密码生成 由此引出了对GAN的学习 在GAN的研究中 有一个方向就是研究如何使GAN更加稳定的训练 在此之中 WGAN和WGAN
  • 多维时序

    多维时序 Matlab实现LSTM Adaboost和LSTM多变量时间序列预测对比 目录 多维时序 Matlab实现LSTM Adaboost和LSTM多变量时间序列预测对比 预测效果 基本介绍 模型描述 程序设计 参考资料 预测效果 基
  • 【linux线程(壹)】——初识线程(区分线程和进程,线程创建的基本操作)

    作者 努力学习的少年 个人简介 双非大二 一个正在自学c 和linux操作系统 写博客是总结知识 方便复习 目标 进大厂 如果你觉得文章可以的话 麻烦你给我点个赞和关注 感谢你的关注 目录 1 线程和进程 1 1 进程的基本概念 1 2 线
  • JAVA多线程的三种创建方式

    一 概述 在JAVA中 用Thread类代表线程 所有线程对象 都必须是Thread类或者Thread类子类的实例 每个线程的任务就是执行一段顺序执行的代码 JAVA使用线程执行体来容纳这段代码 所以 我们创建线程时 主要是根据实际需求 编
  • FPGA设计:如何用半加器和全加器构成四位全加器

    今天来分享一下关于FPGA设计的文章 如何用半加器和全加器构成四位全加器 首先 我们看一位半加器的代码 1 一位半加器的程序代码及 图 library ieee use ieee std logic 1164 all entity half
  • linux串口编程 gsm,linux 中用n_gsm实现3gpp MUX协议

    n gsm 是一种tty设备上的线路规程 line discipline 来实现3gpp MUX协议 n gsm 实现方法如下 1 kernel配置文件中 打开 CONFIG N GSM y 编译内核 2 cat proc device g