英創信息技術Linux主板4G通訊斷線重連的自動管理

2020-12-23 電子發燒友

英創信息技術Linux主板4G通訊斷線重連的自動管理

英創信息技術 發表於 2020-02-11 17:01:17

在工控主板使用的現場環境中,可能會有一部分不能夠提供乙太網的情形,所以3G和4G網絡以其便捷的使用方式,得到越來越廣泛的應用。但是在使用無線通訊的時候,為了保證通訊的穩定性,斷線重連機制是必須在程序中實現的。

為了讓客戶能夠更加便捷的進行開發,英創公司在Linux主板上實現了自動撥號和斷線重連的管理功能,並以庫文件的形式放在主板文件系統中提供給客戶。通過撥號管理庫提供的API函數,客戶就能夠方便的實現自動撥號以及斷線重連的功能,下面就詳細介紹針對英創Linux主板的撥號管理庫及導出的API函數。

英創公司提供的撥號管理庫文件名為libautodial.so,在編譯應用程式的時候,需要連結這個庫文件,如果客戶使用光碟資料中提供的eclipse工具進行開發,在編譯之前需要對工程進行設置,設置方法為選擇對應的工程,通過右鍵菜單進入properties,點擊右側C/C++ Build子欄目,選擇其中Settings這一項,在C++ Linker子項中添加庫文件和路徑,如下圖:

工程設置

Windows開發環境和Ubuntu開發環境下面的eclipse設置方法相同。對運行環境的英創主板,其根文件系統/lib路徑下已經做好了相應設置,客戶不需要再做任何操作,直接運行編譯好的程序即可。

撥號管理庫文件libautodial.so一共提供了三個API函數,分別實現連接,查詢和斷開的功能,函數接口定義如下:

  /**
 *    啟用撥號管理線程
*
*    函數會創建一個線程用來進行撥號管理
*    實現自動撥號,以及斷線重連
*
 *    返回值說明:
 *     0 表示成功開啟撥號管理線程。
 *    -1 表示在當前環境無法運行。
 *
 */
int pppconnt_start();
/**
 *    查詢連接狀態
 *
 *    返回值說明:
 *    0 表示運行連接正常。
 *    -1 表示連接斷開。
*      -2表示信號太差或者沒有讀取到SIM卡導致連接失敗。
 *    -3表示連接模塊無響應,建議檢查硬體連接和驅動是否加載成功。
*
 */
int pppconnt_check();
/**
 *    關閉連接
 *
 *    關閉撥號管理功能,並關閉已建立的連接。
 *
 */
void pppconnect_stop();

pppconnt_start()函數會創建一個線程來對整個撥號的流程實現自動管理,管理線程一開始便會自動判斷接入的模塊型號,根據模塊型號調用對應的撥號腳本,然後進行撥號和斷線重連。所以對於客戶來說,只需要調用一次pppconnt_start()函數,就會創建出一個實現撥號管理的線程,不需要再執行其他任何操作。

pppconnt_check()函數提供了查詢功能,如果在使用過程中客戶想獲取連接狀態,可以通過調用該函數的返回值來判斷,0為正常連接,-1為連接斷開,-2為信號弱或者無信號,可能是由於沒有接天線或者沒有讀取到SIM卡造成的,-3為模塊無響應,可能是由於沒有識別到外部模塊或者沒有加載驅動造成的。如果一直無法連接成功,客戶可以根據查詢的返回值判斷原因,還可以增加硬體復位和重新上電等操作來保證模塊的正常工作。

pppconnt_stop()函數,這個函數會關閉撥號管理線程,以及已經建立好的連接。在客戶需要關閉撥號連接或是對模塊進行復位等操作時,建議先調用pppconnt_stop()函數釋放相關資源。

客戶在主板上電後,需要先加載4G模塊對應的驅動,因為需要驅動加載成功後,才能通過虛擬串口使用程序與模塊之間進行交互,加載驅動可以放在程序或者腳本中進行,驅動加載的方法可以參考文章:《英創Linux主板基於3G和4G的無線通訊方案》中的說明。驅動加載成功後,系統會生成對應的虛擬串口,這時就可以調用撥號管理庫中提供的pppconnt_start()函數進行撥號連接了。根據上面的介紹和對API函數的描述,我們使用以下代碼進行簡單的測試:

         int   i1;
       //先調用一次pppconnt_stop,關閉連接
       pppconnt_stop();
       //通過代碼加載驅動,測試使用華為ME909s,VID=0x12d1,PID=15c1
       system("insmod /lib/modules/4.1.15/usbserial.ko vendor=0x12d1 product=0x15c1");
       //開啟撥號管理
       i1 = pppconnt_start( );
       printf("i1 = %d\n", i1);
       while(1)
       {
              i1 = pppconnt_check();
              if(!i1) {
printf("connected!\n");
                     //main processing
                     //...
                     sleep(5);      
              }
              else {
                     //返回值為-,說明連接斷開
                     if(i1 == -1)
                            printf("disconnect!\n");
                     //返回值為-2,說明檢測不到信號,可能是沒有檢測到SIM卡,這裡執行退出
                     else if(i1 == -2) {
                            printf("singal is weak, please check SIM card!\n");
                            break;
                     }
                     //返回值為-3,說明模塊無響應,這裡執行退出
                     else if(i1 == -3) {
                            printf("there is no response, please check hardware!\n");
                            break;
                     }
              }
              sleep(1);
       }
       //退出循環,調用pppconnt_stop,釋放相關資源
       pppconnt_stop();
       return 0;
     

例程中對於查詢到的狀態,我們只是做了簡單的列印,方便觀看效果,在遇到沒有讀取到SIM卡和模塊無響應的情況下就退出,在實際使用中可以加入硬體復位和重新上電等操作。應用處理由sleep函數代表,可更換為其他處理代碼。例程測試效果如下:

建立連接

可以看到系統通過程序加載驅動後,生成了相應的虛擬串口,然後啟用了撥號管理功能,start_connect()函數讀出模塊為ME909s,根據模塊型號調用了對應的撥號腳本,連接成功後,檢測線程列印出connected,說明連接已經成功。為了測試效果我們通過終端關閉撥號連接,模擬斷線的情況,來測試是否能夠實現自動重連:

斷開模塊

從列印信息可以看到,在我們通過終端關閉撥號連接後,檢測程序列印的信息提示disconnect,說明此時撥號連接已經斷開。pppconnt_check()函數檢測到連接斷開但是硬體正常,於是返回-1,根據測試代碼,就會列印disconnect信息。接下來我們查看撥號管理線程是否會自動重連,列印信息如下:

重連過程

根據列印信息可以看出,在斷開連接以後,10s左右的時間便重新連接上了,重新連接的過程是在撥號管理線程內部進行的,當檢測程序提示了connected,就說明重連成功。

成功連接後,會生成ppp0網口,可以使用ifconfig命令查看,如果要使用ppp0網絡,採用linux標準的網絡編程就可以了,即創建套接字綁定ppp0,然後進行需要的設置和操作,關於這部分的說明,可以參考我們提供的編程應用手冊以及例程step3_tcpserver、step4_tcpclient。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 天涯明月刀手遊一直斷線重連怎麼辦 斷線解決方法
    》點我免費領天涯明月刀手遊月卡禮包《 天涯明月刀手遊這款遊戲很多玩家們都很期待,但是有不少小夥伴遇到了不停斷線重連的問題這是怎麼回事呢
  • 魯能集團與美國英創威斯特達成戰略合作
    > 9月19日,魯能集團與美國著名山地滑雪場運營商英創威斯特
  • 荒野行動更新後經常斷線怎麼辦?荒野行動更新後經常斷線重連
    最近,有不少玩家吐槽荒野行動在進行版本更新後,經常會出現斷線重連的情況,明明網絡情況也很好,老是玩著玩著就出現斷線的情況,很是頭疼,那麼下面為大家帶來荒野行動更新後經常斷線解決方法。
  • 從串口驅動到Linux驅動模型,想轉Linux的必會!
    串行接口簡稱串口,也稱串行通信接口或串行通訊接口(通常指COM接口),是採用串行通信方式的擴展接口。串行接口 (Serial Interface) 是指數據一位一位地順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信(可以直接利用電話線作為傳輸線),從而大大降低了成本,特別適用於遠距離通信,但傳送速度較慢。一條信息的各位數據被逐位按順序傳送的通訊方式稱為串行通訊。
  • 如何自動喚醒和關閉 Linux
    # crontab -e -u root# m h  dom mon dow   command15 23 * * * /sbin/shutdown -h now以下示例僅在周一至周五運行:15 23 * * 1-5 /sbin/shutdown -h now 您可以為不同的日期和時間創建多個 cron
  • 通訊技術革命歷史中,3G4G都風平浪靜,為何獨獨華為5G引發熱議?
    第一,安全上,如果到了5G時代,那麼可以給無人機的身上安裝5G,對林區林剛區火災的時候,我發現,並採用的無人飛機,例如三載著滅火設備的無人駕駛機,使那些先行火災,火勢很大,等待被控制後,再讓消防官兵,不管怎樣,有了5g,可以監控容易發生危險的場所,也可以使用自動駕駛裝置進行應急處理,人類的工具使用將上升到新的階段。
  • 這裡有光速斷線重連腳本教學
    今天殼殼就給大家帶來一期光速斷線重連腳本的製作教學,讓你更輕鬆愉快的整活~01原理簡述目前爐石傳說PC端的整活思路有這麼幾個:①物理拔網線,過幾秒連上②重啟windows的網絡服務③關閉爐石進程,重進遊戲
  • 王者榮耀:玩家460斷線重連後,打開戰績發現隊友拿了222個人頭
    王者榮耀中幾乎所有玩家都經歷過460,甚至是卡到斷線重連,一般到後期的斷線重連一次很可能再上來的時候就發現自己這邊輸了。有一位玩家460斷線重連後,打開戰績發現隊友拿了222個人頭,然後這位玩家一下看呆了。
  • Linux 基金會發布 2017 最佳 Linux 發行名單
    原文來自:  http://www.linuxeden.com/html/news/20170110/167701.html本文地址:  http://www.linuxprobe.com/linux-word.html
  • 筆記本主板排行榜 附維修教程【圖文教程】
    筆記本主板是 筆記本電腦 中各種硬體傳輸數據、信息的「立交橋」,它連接整合了顯卡、內存、CPU等各種硬體,使其相互獨立又有機地結合在一起,各司其職,共同維持電腦的正常運行。那麼,筆記本主板排行榜是怎樣的呢?筆記本主板怎麼維修呢?下面來看看吧。
  • 九江散裝洗衣液自動販賣機廠家產品穩定靈敏
    當前自動貨機不再是簡單提供自助零服務,而將在智能貨領域提供高端的技術與服務支持,通過雲服務管理系統,實現移動端輕鬆管理與運營,讓智能零終端快速滲透同時,實現企業與加盟商、消費者之間多方共贏。SIM卡座壞更換GPRS模塊沒信號代碼4APN設置錯誤更改正確的APNSIM卡與GPRS模塊不匹配更換手機卡手機卡停機開通手機卡不讓停機沒信號代碼7手機卡停機開通手機卡不讓停機不能註冊到當地網絡更換手機卡沒信號代碼8不能註冊到GPRS網絡更換手機卡沒信號代碼11AAC與後臺通訊異常檢查伺服器地址埠號是否正確沒信號代碼11AAC與後臺通訊異常檢查伺服器地址埠號是否正確後臺伺服器維護耐心等待伺服器維護完成手機卡不能上網開通手機卡上網功能經營自動貨機的雷區盤點自動貨機該如何選擇點位和產品
  • 電腦主板SMT貼片加工_智宏創
    做過工控,通訊,安防,汽車,新能源,智能家居類電子主板,經驗豐富,值得合作。發燒友10周年慶典,全網超值優惠來襲!電子電路表面組裝技術(Surface Mount Technology,SMT),稱為表面貼裝或表面安裝技術。
  • 12月結束,紅鸞星動,月老垂愛,3星座斷線重連,相約恩愛永不負
    12月結束,紅鸞星動,月老垂愛,3星座斷線重連,相約恩愛永不負,一起看看吧! 12月結束,紅鸞星動,月老垂愛,白羊座斷線重連,相約恩愛永不負。
  • 第五人格:角色原地踏步,斷線重連扣分,網絡延遲問題能否解決?
    其二是斷線重連卻被扣除人品值,簡直就是「比竇娥還冤」,玩家們時不時就會遭遇伺服器莫名其妙地自動斷開,過一會又連接上了,但系統偶爾會默認玩家們這是惡意退出,導致人品值被扣掉,真的是很委屈,弄得玩家們「怨聲載道」!
  • 鍾南山:信息通訊技術為疫情防控提供強大支撐
    鍾南山:信息通訊技術為疫情防控提供強大支撐2020年的烏鎮網際網路大會也是疫情之下的第一次世界網際網路大會。2020年,新冠肺炎疫情在全球範圍內蔓延,給全球經濟社會帶來巨大衝擊。數位化手段正在全球抗疫中發揮獨特作用,極大提高了疫情監控分析、病毒溯源、資源調配效率。
  • (變廢為寶)低成本接收飛機信息並上報至飛常準ads-b系統
    在很多箱子裡,找到了我曾經的玩具:1037u 主板。這張主板大約是我兩三年前買的,用於做各種儀器的上位機用的。原本打算給自己的示波器,萬用表,電源做個總控。結果奈何這個主板裝完win7以後進不去系統。我就給擱淺了,放在了箱子裡。但是裝linux都是正常的,帶個2g的內存跑centos超快。
  • 2019年10個最有潛力的新Linux發行版
    嵌入式linux QQ交流群:175159209,歡迎愛好者加入交流技術問題!
  • 不同的物聯網通訊技術具有什麼特點
    物聯網是未來十年最具有市場前景的領域,相關的無線通訊技術也逐步出現。 在實現物聯網的通訊技術裡面,藍牙、zigbee、Wi-Fi、GPRS、NFC等是應用最為廣泛的無線技術。除了這些,還有很多無線技術,它們在各自適合的場景裡默默耕耘,扮演著不可或缺的角色。本文筆者將通過常見的十大無線通訊技術優劣及應用場景,帶大家認識真正的物聯網通訊技術。
  • ROG DAY粉絲嘉年華 華碩主板連放大招
    ROG DAY粉絲嘉年華 華碩主板連放大招 2020年07月04日 21:50作者:張帆編輯:張帆文章出處:泡泡網原創 電競主板為核心而量身打造,再搭配支持光線追蹤技術的華碩顯卡及其他信仰ROG硬體。