ME909 之 AT指令測試

int tcp_3g_test(void) 
{
int ret;
char AT[] = "AT\r\n";      //模塊上電初始化完成後,發送AT,會迴應"ok"
char ATE[] = "ATE0\r\n";     //關閉命令回顯
char ATCMEE[] = "AT+CMEE=1\r\n"; //錯誤返回時,用錯誤代碼代替錯誤詳細文本
//char ATRST[] = "AT^RESET\r\n"; //立即復位模塊,通過添加參數,可以延時復位
char ATCURC[] = "AT^CURC=0\r\n"; //關閉模塊主動上傳的信息,像^RSSI,^MODE,^SRVST,^SMMEMFULL.還會有一些命令自動上傳
//char ATDVCFG[] = "AT^DVCFG=1\r\n"; //數據和語音, 數據優先模式
char ATCPIN[] = "AT+CPIN?\r\n";  //檢查sim卡是否安裝好?
char ATCSQ[] = "AT+CSQ\r\n";   //檢查網絡信號強弱


//internet service commands,用於向服務器發送TCP/UDP數據
char ATIPINIT[] = "AT^IPINIT=\"3GNET\"\r\n"; //初始化網絡連接,能夠獲取一個IP
char ATIPCHECK[] = "AT^IPINIT?\r\n"; //初始化
char ATLISTEN[]="AT^IPLISTEN=\"TCP\",5000\r\n";//啓用TCP監聽
char ATIPOPEN[] = "AT^IPOPEN=1,\"TCP\",\"10.0.64.43\",5000,8000\r\n";  //建立TCP link 建立一個遠程連接,連接遠程服務器。IP地址、端口需要設置成真正的目標地址。
char ATIPOPENCHECK[] = "AT^IPOPEN?\r\n";  //查詢當前 link 建立一個遠程連接,連接遠程服務器。IP地址、端口需要設置成真正的目標地址。
// char ATIPENTRANS[] = "AT^IPENTRANS=1\r\n"; //開啓透明傳輸
char IPSEND1[] = "AT^IPSEND=1, \"this is 3g tcp send test\"\r\n"; //發送數據
char IPSEND2[] = "AT^IPSEND=1, \"this is wang shi zhu 3g tcp send test\"\r\n"; ////發送數據
char IPRECV[] = "AT^IPGETDATA?\r\n"; //數據包接收查詢
ret=write_string(AT,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
ret=write_string(ATCPIN,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}

SIM卡正常狀態應爲


ret=write_string(ATCSQ,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}

 
if(csq==0||csq==99)
{
return -1;
}

正常情況下信號強度應該在11以上,我這是隻插了天線接頭,沒接天線線體。如果不插天線,2個都是99,這樣是無法建立tcp鏈接的
ret=write_string(ATE,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
ret=write_string(ATCMEE,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
ret=write_string(ATCURC,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
//------------------------------關閉之前的連接-------------------------
    //IpLink=0,可能是本連接斷開,“^IPSTATE: 1,0,0”;也可能是網絡註冊失效,“^IPSTATE: 7,0,2”
    //爲了能夠重新連接成功,所以,重複發送下面的三條語句。
ret=write_string("AT^IPCLOSE=1\r\n",__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
//return -1;
}
ret=write_string("AT^IPCLOSE=6\r\n",__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
//return -1;
}
ret=write_string("AT^IPCLOSE=7\r\n",__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
//return -1;
}
ret=write_string(ATIPINIT,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}

初始化網絡連接,能夠獲取一個IP
ret=write_string(ATIPCHECK,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}

查看獲取到的IP


ret=write_string(ATLISTEN,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}
sprintf(ATIPOPEN,"AT^IPOPEN=1,\"TCP\",%s,5000,8000\r\n",ip_3g);
printf("ATIPOPEN=%s\n", ATIPOPEN);

連接IP,就是上面初始化獲取到的第一個IP地址
ret=write_string(ATIPOPEN,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}

查看當前的鏈接
ret=write_string(ATIPOPENCHECK,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}

有2個link,如下所示


ret=write_string(IPSEND1,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}

發送數據


ret=write_string(IPSEND2,__LINE__);
if(!ret)
{
printf("read at error in %d\n",__LINE__);
return -1;
}

link1發送數據 “this is 3g tcp send test”


link2 接收到數據 如下所示


}

以上就是AT指令建立TCP鏈接進行自收發數據的過程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章