您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么”吧!
開發(fā)板
M26通信模組
QCOM串口助手
M26 AT命令手冊(cè)
此文檔來(lái)自于移遠(yuǎn)官方!閱讀本教程時(shí),關(guān)于AT指令的詳細(xì)說(shuō)明請(qǐng)參考該文檔!
小熊派開發(fā)板右上角的開關(guān)撥到AT-PC一端,則模組直接與PC相連,方便調(diào)試。
所有工具和文檔均在『小熊派開源社區(qū)』公眾號(hào)回復(fù)“通信模組”獲取!
指令:AT
功能:測(cè)試AT指令功能是否正常
示例:
AT OK
指令:AT+CPIN?
功能:查詢SIM卡是否正常,返回ready則表示SIM卡正常
示例:
AT+CPIN? +CPIN: READY OK
指令:AT+CSQ
功能:查詢模組的信號(hào)強(qiáng)度,第一個(gè)值為0-31則正常,99為不正常
示例:
AT+CSQ +CSQ: 17,0 OK
指令:AT+CREG?
功能:查詢模組是否注冊(cè)上GSM網(wǎng)絡(luò),+CREG:0,1 表示已注冊(cè)上本地網(wǎng),+CREG:0,5表示注冊(cè)上漫游網(wǎng)。
示例:
AT+CREG? +CREG: 0,1 OK
指令:AT+CERGE?
功能:查詢模組是否注冊(cè)上GPRS網(wǎng)絡(luò),+CGREG:0,1 表示已注冊(cè)上本地網(wǎng),+CGREG:0,5表示注冊(cè)上漫游網(wǎng)。
示例:
AT+CGREG? +CGREG: 0,1 OK
必須在查詢GPRS網(wǎng)絡(luò)已正常注冊(cè)網(wǎng)絡(luò)的情況下進(jìn)行本節(jié)實(shí)驗(yàn)!
指令:AT+QIFGTCNT=0
功能:配置當(dāng)前場(chǎng)景
示例:
AT+QIFGCNT=0 OK
指令:AT+QICSGP=1, "CMNET"
功能:設(shè)置GPRS的APN,移動(dòng)CMNET,聯(lián)通UNINET
示例:
AT+QICSGP=1, "CMNET" OK
指令:AT+QIMODE=0
功能:設(shè)置數(shù)據(jù)傳輸模式,0表示非透?jìng)髂J剑?表示透?jìng)髂J?/p>
示例:
AT+QIMODE=0 OK
指令:AT+QIDEACT
功能:在激活GPRS場(chǎng)景之前先關(guān)閉GPRS場(chǎng)景,確保連接正確
示例:
AT+QIDEACT DEACT OK
指令:AT+QIREGAPP
功能:?jiǎn)?dòng)任務(wù)并設(shè)置接入點(diǎn)APN、用戶名和密碼
示例:
AT+QIREGAPP OK
指令:AT+QIACT
功能:激活移動(dòng)場(chǎng)景
示例:
AT+QIACT OK
指令:AT+QILOCIP
功能:查看模組獲取的IP地址
示例:
AT+QILOCIP 100.125.208.23
首先我們需要搭建一個(gè)TCP服務(wù)器,有兩種方式:
在服務(wù)器上使用Python、Java、C#等語(yǔ)言自行編寫服務(wù)器程序;
在本地PC上使用網(wǎng)絡(luò)調(diào)試助手開啟TCP服務(wù)器;
因?yàn)镸26模組直接注冊(cè)的是公網(wǎng)ip地址,所以這里我們使用第一種方式,在Linux服務(wù)器上運(yùn)行一個(gè)Python編寫的tcp測(cè)試服務(wù)器:
本地PC使用的是局域網(wǎng),公網(wǎng)不可以直接根據(jù)ip地址訪問(wèn)到本PC,需要進(jìn)行內(nèi)網(wǎng)穿透,不推薦使用。
這里的Python程序如下:
# tcp-server.py from socket import * host = '' port = 8000 # 創(chuàng)建server socket server_socket = socket(AF_INET,SOCK_STREAM) # 綁定socket監(jiān)聽(tīng)地址 server_addr = (host,port) server_socket.bind(server_addr) # 開始監(jiān)聽(tīng),最大允許連接數(shù)5 server_socket.listen(5) # 處理連接請(qǐng)求 try: while True: print('waiting for connect...') #阻塞等待客戶端的連接 client_socket, client_addr = server_socket.accept() # 連接成功后,打印客戶端信息 print('a client connnect from:', client_addr) while(True): # 向客戶端發(fā)送數(shù)據(jù) client_socket.send('Hello, client!'.encode()) # 接收客戶端的數(shù)據(jù) data = client_socket.recv(1024) print('recv data is ', data.decode()) # 接收到quit則關(guān)閉socket if "quit" in data.decode(): break # 關(guān)閉socket client_socket.close() server_socket.close() print("socket closed.") break except: client_socket.close() server_socket.close() print("socket closed.")
運(yùn)行:
python3 tcp-server.py
效果如下:
查詢ip地址:
AT+QILOCIP 100.125.208.23
使用AT命令連接TCP服務(wù)器,其中第一個(gè)參數(shù)是協(xié)議類型,“TCP”則表示使用TCP協(xié)議,第二個(gè)參數(shù)是TCP服務(wù)器ip地址,也可以使用域名,最一個(gè)參數(shù)是TCP服務(wù)器開啟監(jiān)聽(tīng)的端口:
AT+QIOPEN=<mode>,<IPaddress>/<domain name>,<port>
示例:
AT+QIOPEN="TCP","122.51.89.94","8000" OK CONNECT OK
連接之后,在服務(wù)器端也可以看到:
模組連接到服務(wù)器后,服務(wù)器會(huì)自動(dòng)發(fā)送消息,模組會(huì)打印出收到的信息:
Hello, client!
使用如下的命令即可向TCP服務(wù)器發(fā)送消息,首先設(shè)置要發(fā)送數(shù)據(jù)的字節(jié)數(shù),等待模組返回>
后,輸入要發(fā)送的數(shù)據(jù)即可,如果發(fā)送的數(shù)據(jù)超過(guò)了設(shè)置的n個(gè)字節(jié),則只發(fā)送前n個(gè)字節(jié),后面的數(shù)據(jù)被認(rèn)為是無(wú)效數(shù)據(jù),不會(huì)發(fā)送:
AT+QISEND >hello<0x1a>
示例:
Hello, client!AT+QISEND > hello SEND OK
發(fā)送成功看服務(wù)器上運(yùn)行的TCP服務(wù)器是否收到:
通信完畢之后,可以使用下面的命令關(guān)閉TCP連接:
AT+QICLOSE
示例:
AT+QICLOSE CLOSE OK
到此,相信大家對(duì)“基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。