在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

GPRS模塊TCP虛連接的解決方法

物聯網資訊 ? 2018-08-17 09:57 ? 次閱讀

在GPRS數據模式通信中,TCP服務器端意外斷開時,GPRS模塊仍然保持連接狀態造成虛連接現象。提出了縮短未確認時間和定時判斷的方法,較好地解決了虛連接現象,實現了GPRS模塊自動聯網功能。 關鍵詞: GPRS;TCP;虛連接 在路燈監控、水文情況調查等眾多數據采集與監控場合,GPRS模塊得到廣泛應用。然而,由于PC機意


1 TCP虛連接
通常客戶端和服務器端之間斷開需要經歷4個過程。圖1所示即為客戶機主動與服務器斷開連接的過程。客戶機端完成任務后,發送FIN碼,表明這個方向上不再有數據要傳送;服務器收到后,以ACK進行回應;服務器端如果要結束到客戶端的連接,則發送FIN碼,客戶機以ACK進行回應,此后客戶機和服務器完成了安全的連接斷開過程[1]。
圖1以客戶機要求結束連接為例,實際上服務器端也可以發出主動要求結束連接的FIN碼。

2012111404372508399670.gif

如果服務器電腦斷電、電纜斷線、服務器軟件被強制關閉等情況下,服務器來不及安全地關閉,而TCP客戶端又沒有關閉連接,就造成了虛連接。

2 目前連接存在的問題
單片機與MG323模塊之間通過串口連接,如果需要流控,可以使用9線的串口連接方式,如果只是簡單地收發,可以使用3線(TX、RX、GND)連接即可。本文使用3線連接方式,單片機型號為F020,晶振12 MHz。
應用中,PC機上運行的數據收發軟件采用多線程機制異步接收,同時接收界面線程的關閉/打開通信功能的指示。MG323設計為自動連接服務器端,連接后以113 s為周期發送心跳協議包,維持與中心計算機的連接。若判斷服務器斷開則由MG323負責自動重連服務器。
實踐中發現,在以下情況下,GPRS模塊并不能準確地判斷服務器的狀態:(1)PC機突然斷電;(2)利用進程管理器強行關閉PC機端軟件;(3)正常關閉PC機端運行的TCP服務器軟件。
上述3種情況模擬了現場實際可能存在的誤操作。前兩種情況發生時,打開TCP端軟件,發現超過10 min仍無客戶端連接請求。模擬情況(3)下,共進行30次測試,發現有2次10 min以內無法連接服務器端。對于更長的時間則沒有測試,因為通常認為10 min已超過客戶忍耐極限。
通過調試,發現在這些情況下,發送“AT^SISI=0”命令,返回結果為:“SISI:0,4,20,55,55,0”。其中的‘4’表明GPRS模塊依然判定和服務器保持著聯系。從而出現了虛連接。
查閱資料,了解到GPRS模塊的默認設置是如果TCP包沒有得到確認,需等待6 000 s才關閉當前鏈接[2]。這將漏記錄大量監控數據,是工程上不能接受的。
3 MG323模塊相關指令
MG323指令AT^SCFG=[,],其中str和value如表1所示。

2012111404372513086671.gif

從表1可以看出,如果PC機端突然斷開,則tcpOt需要100 min才能感知到,造成了虛連接。
指令AT^SISI=0可以返回0號連接的當前狀態。返回字符串格式如下:
^SISI:,,,
,,
OK
其中, 表明是哪個連接profile,表明當前狀態。可能的狀態如表2所示。

2012111404372514649672.gif

從表2可以看出,共有5種可能的取值。當服務器異常斷開時,通過調試可以看到連接仍然為4。當服務器正常斷開時,調試中也能觀察到srvState為4或者5。這說明發生了虛連接。需要程序去發現這種情況。根據以上所述,采用了以下兩種方法來處理。
4 解決虛連接措施
4.1 縮短TCP/IP包未確認連接時間

單片機在初始化時發送AT^SCFG=120指令,設定如果發送的數據2 min內沒有獲得確認,就關斷連接。從而能在AT^SISI指令中得到真正的TCP/IP連接狀態。程序如下:
str1=”ATE0\r”;
i=0;
while(str1[i]!=’\0’)
{
SBUF=str1[i];
i++;
while(TI==0);
}
Delay(100); //延時100 ms等待命令完成
str1=”AT^SCFG=tcpOt,120\r”;
i=0;
while(str1[i]!=’\0’)
{
SBUF=str1[i];
i++;
while(TI==0);
}
Delay(100);//延時100 ms等待命令完成
4.2 采用定時器周期判斷法
使用AT^SISI指令查詢當前狀態,即使有虛連接的可能,數據也表明了已經發送的數據。如果在一定時間內,考慮到心跳協議也要發送數據,則可以判斷這一段時間里是否增多。如果數據沒有增加,則說明網絡實際上已經斷開,需要重新連接。部分程序如下:
pt=strstr(recbuf,”^SISI: 0,4);
if(pt!=NULL)
{
if(timeclk>200*60*5)
{
Timeclk=0;
ackdata2=0;
i=11;
while(recbuf[i]!=’,’)
{
ackdata2=ackdata2*10+recbuf[i]-0x30;
i++;
}
if(ackdata2-ackdata1<1)
{ ackdata2=ackdata1=0;
connect();
}
else{ ackdata1=ackdata2;
break;
}
}


以上程序中,recbuf為串口接收的MG323的返回信息,timeclk為經過的時鐘節拍,本項目中采用5 ms定時器,在定時器中給timeclk加1,則200×60×5相當于5 min。收到MG323模塊返回的數據中,第11個字節開始表明成功發出去的數據,采用數字的ASCII編碼表示,因此要轉成數字數據。程序中,第1行判斷是否返回連接串。如果確實是對查詢作出了正確的響應,則進行進一步的檢查。第4行表明每5 min查一次,如果不設定時查詢,則連續執行本程序兩次但是確實沒有數據被發送的話,將會把確已連接但暫無數據交互的連接誤判為虛連接,因為GPRS模塊要在2 min內發送一個心跳包給服務器,所以5 min內肯定有數據應該發送出去。第9~13行程序得到ackData數據。第14行進行比較,ackdata2是當前回應的數據,ackdata1是5 min以前的結果,如果兩次的數據差值太小的話,說明實質上連接中斷了,此時要啟動連接服務器的過程,connect()函數執行實際的連接工作。如果處于連接狀態,第18行將數據賦予ackdata1保存,以便下次比較。
本文詳細分析了GPRS模塊和服務器計算機TCP通信中TCP三次握手安全斷開流程,在意外情況下有可能產生虛連接。在單片機平臺上采用了兩種方法,利用軟件來解決虛連接,均收到良好的效果。測試中,強制關閉服務器軟件,拔掉網線或者PC機直接重啟,任何時候再打開服務端進行連接,均能保證可靠的連接,說明了設計思路是正確的。
本設計已經應用到水產養殖水質監測系統中,迄今為止已有上千模塊的應用,均能保證自動聯網。本文的設計思路可以為開發GPRS/CDMA數據模塊的人員提供參考,有較好的應用價值。

參考文檔

相關閱讀:

GPRS模塊介紹

GPRS模塊應用案列

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

    評論

    相關推薦

    電子焊接的常見問題及解決方法

    問題及解決方法: 焊點焊 原因分析 :焊是指焊點表面看似焊接良好,但實際上焊料與焊件之間沒有形成良好的冶金結合。焊的原因可能是焊接時間過短、焊接溫度過低、焊料質量差等.
    的頭像 發表于 01-09 10:28 ?50次閱讀

    工業連接器常見故障及解決方法

    器故障及其解決方法: 1. 接觸不良 故障原因: 接觸表面氧化或污染。 接觸壓力不足。 接觸件磨損或損壞。 解決方法: 清潔接觸表面,去除氧化層和污染物。 檢查并調整接觸壓力,確保接觸良好。 更換磨損或損壞的接觸件。 2. 連接
    的頭像 發表于 12-29 10:13 ?167次閱讀

    Ubuntu系統常見問題及解決方法

    連接到互聯網 問題描述: 用戶在安裝Ubuntu后發現無法連接到互聯網。 解決方法: 檢查網絡連接: 確保網線已正確插入或Wi-Fi已連接
    的頭像 發表于 12-12 14:32 ?438次閱讀

    Mobaxterm 常見問題與解決方法

    強大,但用戶在使用過程中可能會遇到一些問題。以下是一些常見問題及其解決方法: 1. 連接問題 問題: 無法連接到遠程服務器。 解決方法: 確認服務器地址和端口號是否正確。 檢查網絡
    的頭像 發表于 11-10 15:35 ?3357次閱讀

    邏輯分析儀的常見故障及解決方法

    的建議。 常見故障及解決方法 無法連接設備 原因 :設備驅動程序未正確安裝或設備接口故障。 解決方法 :首先檢查設備驅動程序是否已正確安裝。如果未安裝,應下載并安裝正確的驅動程序。如果已安裝但無法
    的頭像 發表于 10-12 15:43 ?699次閱讀

    是否可以通過TCP連接發送AT命令?

    ;lt;-------------> iot embedded module 服務器可以通過活動的TCP連接向wifi模塊發送AT命令嗎?例如,用例..我想通過 wifi 重置 ESP
    發表于 07-17 06:17

    如何同時在ESP8266上運行TCP客戶端和TCP服務?

    客戶端無法連接TCP 服務器。如果不將 TCP 客戶端從 ESP 連接到云服務器,則 ESP 上的 TCP 服務器可以很好地接受
    發表于 07-08 08:26

    遠程模塊連接PLC的方法

    的輸入輸出能力,還提高了系統的靈活性和可維護性。本文將詳細介紹遠程模塊連接PLC的方法,包括連接方式的確定、通信參數的配置、物理連接的建立、
    的頭像 發表于 06-15 15:40 ?2260次閱讀

    連接器的常見故障和解決方法

    在電子設備和系統中,連接器作為關鍵部件,其性能的穩定性和可靠性直接影響著整個系統的運行效率。然而,由于各種因素的影響,連接器在使用過程中難免會出現各種故障。本文將對連接器的常見故障進行詳細分析,并提供相應的
    的頭像 發表于 05-29 16:07 ?2801次閱讀

    鴻蒙OpenHarmony:【常見編譯問題和解決方法

    常見編譯問題和解決方法
    的頭像 發表于 05-11 16:09 ?2316次閱讀

    不能使用“斷、短”分析方法的壓控雙向電流源電路

    壓控雙向電流源電路屬于線性運算放大電路,由于電路使用了正反饋電路,所以不能使用“斷、短”分析方法,只能采用反饋分析方法。由于壓控雙向電流源電路中的四個電阻要求等值,因此需要采用印制
    發表于 04-23 19:05

    常見的DC電源模塊故障及解決方法

    BOSHIDA 常見的DC電源模塊故障及解決方法 DC電源模塊廣泛應用于各種電子設備中,為其提供穩定的直流電源。然而,由于長期使用或其他原因,DC電源模塊有時會出現故障。本文將介紹一些
    的頭像 發表于 04-01 14:02 ?1377次閱讀
    常見的DC電源<b class='flag-5'>模塊</b>故障及<b class='flag-5'>解決方法</b>

    什么是Socket連接?Socket的工作原理 它與TCP連接有什么關系?

    什么是Socket連接?Socket的工作原理 它與TCP連接有什么關系? Socket連接是一種網絡連接,用于在計算機網絡中的兩個節點之間
    的頭像 發表于 01-22 16:10 ?2384次閱讀

    FTP連接被重置問題的解決方法與技巧!FTP服務器連接修復!

    FTP連接被重置問題的解決方法與技巧!FTP服務器連接修復! FTP(文件傳輸協議)是用于在計算機網絡環境中進行文件傳輸的常用協議。然而,有時我們可能會遇到FTP連接被重置的問題,這會
    的頭像 發表于 01-12 16:00 ?1.1w次閱讀

    電池電如何解決?手機鋰電池“電”現象是什么?

    鋰電池電現象及其解決方法。 一、手機鋰電池“電”現象是什么? 鋰電池是目前手機或其他電子設備中最常用的電池類型之一,其具有高能量密度、輕量化等優點,但也存在電池容量有限的問題。長時間使用手機或者未及時充電
    的頭像 發表于 01-10 11:23 ?1w次閱讀
    主站蜘蛛池模板: 色图视频| 亚洲免费福利视频| 婷婷六月激情在线综合激情 | 黄色激情小说视频| 极品美女洗澡后露粉嫩木耳视频| 精品特级毛片| 亚洲va中文字幕| 68日本xxxⅹxxxxx18| 91综合在线视频| 免费色黄网站| 亚洲福利片| 在线免费日韩| 亚州国产精品精华液| 色综合天天网| 巨乳色最新网址| 99视频精品全国免费| 天堂在线最新资源| 506rr亚洲欧美| 天天操天天操天天| 一本到在线观看视频不卡| 天天干狠狠| 2021天天干| 日本不卡视频一区二区| 午夜男人的天堂| 亚洲色图在线观看视频| 人人洗澡人人洗澡人人| 日韩一区二区三区免费| 久久精品2020| 亚洲免费福利视频| 又黄又免费的网站| lsj老司机精品视频在线观看| 九九九精品午夜在线观看| 五月天停婷基地| 久久免费视频网站| 国产一卡二卡3卡4卡四卡在线 | 在线观看国产三级| 女色专区| 五月天天爱| 免费国产小视频| 一区不卡| 国产精品成人免费观看|