0710 mux協議的作用(ppp撥號時如何和gprs進行at指令交互)

ppp撥號使gprs上網的同時如何和gprs模塊進行at指令的交互,這是一個問題。

?

在linux中,ppp撥號上網是內核中支持的,只需要在內核配置中選上。

ppp撥號的方式使gprs進行上網與at指令使gprs上網,兩者之間有不同。ppp是一個將用at指令使gprs上網的那一部分給封裝了起來。只要你將ppp成功的移植到了你的根文件系統中,那么你使用pppd call的時候就相當于用at指令讓gprs上網了,封裝的部分,包括一部分at命令,認證等等一些列的過程。最后雙方認證通過,達成一致后,給了你的終端一個ip地址,之后你的終端就可以通過移動基站和另一個基站中的東西進行通信了,也就是你的終端這時上網了。

?

ppp和gprs模塊之間通過一個物理串口進行互相溝通,這里假如這個串口是ttyS6,如果你用pppd call的方法使用了ttyS6這個串口進行撥號,使gprs模塊進行上網了。這個時候,你的串口6和應用程序中的socket是關聯的,當你在應用程序中socket通信的時候,內核中ppp那部分就會將你的socket中的的數據通過物理串口6到達gprs模塊中,經gprs模塊將數據發送到移動基站等,最后經移動基站路由到目的地址去。這時串口6就只能作為網絡通信,數據鏈路的通信,這時gprs模塊是無法進入到at命令模式的,也就是無法通過應用程序發AT命令與gprs進行at命令交互了,因為你的串口6和gprs之間已經作為了網絡通信使用,所以對at命令是不給予例會的。這時就問題大了,因為你可能會想上網的同時,就能讀取gprs中的短信內容,或者進行語音呼叫等等一些列的與gprs之間的at交互。但是因為你的唯一和gprs進行交互的串口已經做為了數據模式,無法進行at命令交互了。

?

所以這個時候,就有了一個東西,這個東西就是cmux協議(gsm0710)具體叫什么我也不十分清楚,多路復用串口技術,許多sim卡模塊都是支持這個協議的,你可能會在sim卡的詳情中看到他支持0710 mux協議的特性。這cmux是在你的mcu或者Soc和gprs之間一個東西,它會使得你的串口變成多個,一般是三個,同時也會使得gprs模塊那邊的串口也變成多個。當然這變出來的串口都是虛擬出來的,就是用這個協議虛擬出來的串口。這虛擬出來的串口,在你這邊和gprs那邊是一一對應的,它們兩者之間通信時走的就是這個協議。

?

這個時候,你可以用ppp撥號使用cmux通過串口6虛擬出來的串口,比如/dev/mux0 作為撥號上網網絡通信用的串口。可以使用虛擬出來的/dev/mux1 串口作為和gprs模塊之間at交互用的串口,當然這虛擬出來的串口和正常的串口是一樣進行操作的,只不過是用于gprs的。因為gprs支持這個協議。

?

它們通信的原則應該是這樣的:你在應用程序中通過socket通信時,數據走到了你撥號用的虛擬串口/dev/mux0,這個虛擬串口經過gsm0710協議,會走到物理串口6,在走到gprs模塊中,因為這個時候,你肯定已經選擇gprs模塊工作在cmux下了,所以走到gprs模塊中后,也會經過這個協議,然后明白這個數據是網絡用的,然后發向網絡中;同時當你在應用程序中使用另一個串口/dev/mux1與gprs模塊之間發AT命令,也會經過協議走到物理串口6然后到gprs中,然后經過協議進行at的命令交互。這虛擬出來的串口是分時復用的。可能是10ms的時間去mux1中了,可能是10ms的時間去mux0中了。

?

這樣就可以使你ppp撥號上網的同時,也能和gprs模塊進行at命令交互了。

?

gsm0710協議的使用:

去網上尋找并下載gsm0710的協議代碼,一般四個文件就夠用了,一般都是gsm0710.c和對應的頭文件,buffer.c和對應的頭文件,有可能你下載的協議代碼沒有buffer,那么你需要繼續去網上尋找下載。

?

下載下來的協議代碼,你可以嘗試編譯生成可執行程序,然后放到arm板上去運行,你直接運行就會看到一些關于使用的幫助信息等,按照合理的參數成功運行后就可以看到你多出來了兩個虛擬串口了,之后就可以使用了,但有的時候,你可能編譯鏈接生成可執行程序成功了,但是你運行后并沒有達到你的效果,那可能是你下載的這個協議代碼是上傳的人進行過改動了,你可以整體閱讀下協議代碼,了解下思路,然后再下載一份,在運行試試,互相比較著進行調試。最后,你要讓這個協議代碼變成守護進程,在代碼中有一個_debug的全局變量,將它設置為0后,就可以成為守護進程,會去掉調試信息,如果成為不了守護進程,那可能是別人修改導致的。

?

我對gsm0710代碼的理解的簡單過程:

/dev/modem為你的調制解調器設備的所在,就是你的gprs模塊是和哪個串口連接的,后者是usb,modem是你和gprs連接的真正的物理接口,串口,usb口等。

獲取你運行程序的參數并解析。

程序通過三次打開/dev/ptmx 設備文件,來創建出根據你運行應用程序時帶的參數為前綴的0,1,2三個虛擬串口。

關于波特率的獲取,可以在全局變量那個表示波特率的寫死,也可以運行程序帶參數,但是有的人將協議代碼中的獲取波特率那行的代碼注釋掉了,你需要給去掉注釋,因為如果不這樣可能會導致你撥號不成功。

讓后就是關于協議內部的數據處理那塊了,我沒有細看,但是可能是根據協議將數據組成數組幀了,最后通過write_fram函數寫數據幀,這個函數名可能不對,英語不好,之后你和gprs之間就通過這個協議進行通信了

轉載于:https://www.cnblogs.com/dpf-learn/p/8575990.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/390057.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390057.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390057.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

爬蟲筆記(十二)——瀏覽器偽裝技術

為什么要進行瀏覽器偽裝技術? 有一些網站為了避免爬蟲的惡意訪問,會設置一些反爬蟲機制,對方服務器會對爬蟲進行屏蔽。常見的飯爬蟲機制主要有下面幾個: 1. 通過分析用戶請求的Headers信息進行反爬蟲 2. 通過檢測用戶行為進行反…

650. 只有兩個鍵的鍵盤

650. 只有兩個鍵的鍵盤 最初記事本上只有一個字符 ‘A’ 。你每次可以對這個記事本進行兩種操作: Copy All(復制全部):復制這個記事本中的所有字符(不允許僅復制部分字符)。Paste(粘貼&#x…

Codeforces 626F Group Projects (DP)

題目鏈接 8VC Venture Cup 2016 - Elimination Round 題意 把$n$個物品分成若干組,每個組的代價為組內價值的極差,求所有組的代價之和不超過$k$的方案數。 考慮DP,$f[i][j][k]$表示考慮到第$i$個物品的時候,還有$j$組尚未分配完…

《活出生命的意義》:人生有何意義?

在你一生的閱讀體驗中,如果能夠有一本書,它的某個章節、某種思想、或者某句話能夠觸動你的內心,解決你的困惑,甚至能改變你的命運,那這樣的一本書你一定要視如珍寶,經常翻閱,維克多弗蘭克爾的《…

右鍵添加git-bash

主要: 右鍵如果沒有git-bash,如何給右鍵手動添加 前面對右鍵存在git-bash但使用出現問題的解決,也想到如果右鍵都沒有,該如何給右鍵添加了,于是接著記錄下如何添加的過程: 情形: 手動給右鍵添加…

Weblogic的緩存

2019獨角獸企業重金招聘Python工程師標準>>> 最近遇到一個關于weblogic緩存的問題。再把war包放入到weblogic指定目錄啟動以后,訪問頁面信息沒有更新。最后發現是\weblogic\user_projects\domains\base_domain\servers\AdminServer下的文件沒有清除&…

725. 分隔鏈表

725. 分隔鏈表 給你一個頭結點為 head 的單鏈表和一個整數 k ,請你設計一個算法將鏈表分隔為 k 個連續的部分。 每部分的長度應該盡可能的相等:任意兩部分的長度差距不能超過 1 。這可能會導致有些部分為 null 。 這 k 個部分應該按照在鏈表中出現的順…

LAMP介紹-MySQL安裝

2019獨角獸企業重金招聘Python工程師標準>>> LAMP: linux-apache-mysql-php (安裝方式有:rpm,源碼,二進制免編譯) linux-操作系統 apache-web服務軟件(httpd) mysql-存儲數據庫 php…

總結verilog產生隨機數的$random和seed

$random(seed)是verilog中最簡單的產生隨機數的系統函數。 在調用系統函數$random(seed)時,可以寫成三種樣式:1)$random,2)$random(),3)$random(seed)。下面分別說明: 1)…

326. 3的冪

326. 3的冪 給定一個整數,寫一個函數來判斷它是否是 3 的冪次方。如果是,返回 true ;否則,返回 false 。 整數 n 是 3 的冪次方需滿足:存在整數 x 使得 n 3x 示例 1:輸入:n 27 輸出&#x…

Lottie 站在巨人的肩膀上實現 Android 酷炫動畫效果

說到動畫效果,一般都會感到很高端,感覺很酷炫;而小菜技術有限,稍復雜的動畫效果也需要很多時間處理,但是遇到時間緊任務重的情況該怎么辦呢?那就嘗試一下 Lottie 吧,酷炫的動畫集成卻相當簡單&a…

正則表達式(讀書過程所記未整理)

\d 表示一位數字字符 \d{3} 表示3個數字字符 匹配電話比如400-400-1118 import re phone_number re.compile(r\d{3}-\d{3}-\d{4}) mo phone_number.search(rfor a number is 400-400-4000) print(mo.group()) ************************************************************…

java1

不知道為啥粘貼的圖片是一堆編碼。。。。 如何插入圖片 博客后后臺MarkDown編輯器上只有一個按鈕,就是用來上傳圖片并自動插入MarkDown標記的,超級好用 (一)學習總結 1.在java中通過Scanner類完成控制臺的輸入,查閱JDK…

430. 扁平化多級雙向鏈表

430. 扁平化多級雙向鏈表 多級雙向鏈表中,除了指向下一個節點和前一個節點指針之外,它還有一個子鏈表指針,可能指向單獨的雙向鏈表。這些子列表也可能會有一個或多個自己的子項,依此類推,生成多級數據結構&#xff0c…

PHPstudy搭建本地環境的網頁加載速度慢的解決方案

PHP5.3以上,如果數據庫鏈接地址是localhost,會自動檢測最終的地址是IPV4還是IPV6,所以會比較慢。解決辦法:修改數據庫的鏈接地址,將localhost改為127.0.0.1即可。 原文鏈接:https://chasjd.com/posts/fb433…

標記偏見_分析師的偏見

標記偏見“Beware of the HiPPO in the room” — The risks and dangers of top-down, intuition-based decision making are well known in the business world. Experimentation and data-based decision making become widely acknowledged as the right way to steer a bu…

scott登錄查詢常用語句

一、簡單查詢 1.簡單查詢select * from emp;--查詢表emp中的所有數據select empno as id,ename as name from emp;--查詢表emp中的empno顯示為id,ename顯示為name 2.去除重復select distinct job from emp;--將表emp中的job去重select distinct job,deptno from emp…

CSS結構的基礎認知

css的屬性值與html的屬性值用法不相上下&#xff0c;但是css主要分為內聯樣式表和外聯樣式表。 內聯樣式表用法&#xff1a;在html文件中的《head》頭文件中添加<style></style>標簽&#xff0c;在標簽內添加所需的屬性值&#xff0c;例如&#xff1a;<!DOCTYPE…

BZOJ1453: [Wc]Dface雙面棋盤

Time Limit: 10 Sec Memory Limit: 64 MB Submit: 784 Solved: 422 [Submit][Status][Discuss] Description 佳佳有一個 nnn 行 nnn 列的黑白棋盤&#xff0c;每個格子都有兩面&#xff0c;一面白色&#xff0c;一面黑色。佳佳把棋盤平放在桌子上&#xff0c;因此每個格子恰好一…

用戶體驗數據分析 書單_如何使用數據改善用戶體驗設計

用戶體驗數據分析 書單In the current age of technology, if an entrepreneur comes up with a grand idea, chances are they’ll need a pretty sweet website to go along with it. And if they want their idea to really sell, they will also need a website that reall…