TCP協(xié)議用在python和wifi模塊之間詳解
TCP協(xié)議用在python和wifi模塊之間
python建立TCP連接需要用到socket協(xié)議
如果是TCP Server,建立TCP連接的步驟是:
- 1.創(chuàng)建socket套接字
- 2.綁定(bind())本地的ip地址和端口號
- 3.監(jiān)聽端口(listen),如果有socket連接,便接收(accept)。
如果是TCP Client,建立TCP連接的步驟是:
- 1.創(chuàng)建socket套接字
- 2.連接(connect)遠程主機的ip地址和端口號。
我的計算機最初使用的是TCP Server模式,讓wifi模塊作為client來連接計算機,但是這種模式缺陷很多,比如,連接的主動性在wifi模塊上,wifi模塊是否連接還需要把握時機,如果wifi模塊先聯(lián)網(wǎng),而服務器后打開,則兩者無法建立TCP連接。
而且計算機作為服務器,那么對于wifi模塊的SDK來說,需要連接的服務器地址就是固定的,也就是說,如果換一臺電腦運行服務器,那么wifi模塊就需要重新燒寫一次ip地址,十分不便,也不人性化。
因此,后來我將wifi模塊的SDK和計算機python軟件重寫,將兩者地位交換,wifi模塊作為服務器,計算機作為客戶端去連接wifi模塊,這樣,連接的主動權就回到了計算機手里,這樣,wifi模塊一直處在監(jiān)聽模式,只要計算機去運行這個軟件,并且與wifi模塊處在一個局域網(wǎng)下,那么就能夠連接上wifi模塊,并且向wifi模塊發(fā)送數(shù)據(jù)。
wifi模塊SDK的編寫
wifi模塊采用定時器的機制,每隔一段時間會調(diào)用回調(diào)函數(shù)。如上面檢查wifi狀態(tài)部分第三句代碼,那么wifi模塊如果狀態(tài)是良好的,則進入下一個函數(shù),如果wifi信號不好,它就會一直檢查wifi狀態(tài),不會進入到連接wifi的模塊。
同理,連接wifi部分也是一樣,如果wifi連接失敗,也不會進入下一個部分,即建立TCP Server部分,但是由于os_timer_arm函數(shù)中的第三個參數(shù)為0,它不會一直阻塞在連接wifi的部分,它會回到上一個檢查wifi狀態(tài)的定時器模塊上。
同理,如果建立TCP失敗,就會回到上一個定時器。
python的tcp協(xié)議交互
服務端:

客戶端:

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
關于Python?Tkinter?復選框?->Checkbutton
這篇文章主要介紹了關于Python?Tkinter復選框Checkbutton,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09

