esp8266,使用python分別建立客戶端連接並實現數據互傳(透傳)

我沒有使用網絡調試助手直接連接esp8266,因爲我的網絡調試助手在連接的時候出現了錯誤,上網查還是什麼虛擬機的事兒,還需要更改電腦的相關網絡配置,太麻煩,本來學歷一點兒python,正好使用python建立和esp8266的連接!

esp8266通過串口連接到電腦上,打開串口調試助手的這個界面:
在這裏插入圖片描述

……………………………………………………………………………………………………

1、把esp8266作爲服務器端

需要向esp8266發送如下這些指令:

AT+CWMODE_CUR=1

設置模塊爲sta模式,即作爲設備去連接別人的WiFi熱點;

AT+CWJAP_DEF="vivo Y66","11111111"

連接我自己的手機WiFi,第一個是WiFi名字,第二個是WiFi密碼;

AT+CIPMUX=1

設置成服務器可以多連模式;

AT+CIPSERVER=1,8266

設置端口的端口號,可以自己定義;

AT+CIPSTA_CUR?

查詢當前8266的IP地址,得到第一個數據ip後面的就是TCP服務器的IP地址;

把命令全都輸入到多條發送的欄框內,如圖所示:
在這裏插入圖片描述

現在從頭到尾一條條發送吧,下面是我得到的結果:
在這裏插入圖片描述

設置成功。

接下來就是寫python的客戶端,源代碼如下:

#!/usr/bin/python3.7
# coding=utf-8
#客戶端與上一個沒有任何改變
from socket import *
import threading
address="192.168.43.10"   #8266的服務器的ip地址
port=8266           #8266的服務器的端口號
buffsize=1024        #接收數據的緩存大小
s=socket(AF_INET, SOCK_STREAM)
s.connect((address,port))

def fun():
    while True:
        recvdata=s.recv(buffsize).decode('utf-8')
        print("\n接收的數據是:"+recvdata)

t = threading.Thread(target=fun)  # t爲新創建的線程,專門用來接收從服務器發送過來的數據
t.start()

while True:
    senddata=input('\n想要發送的數據:')
    if senddata=='exit':
        break
    s.send(senddata.encode())
    #recvdata=s.recv(buffsize).decode('utf-8')
    #print(recvdata)
s.close()

運行後在串口調試助手裏出現:0,CONNECT 這句話就是連接成功了,0代表了設備的序號,表示0號設備已經連接。
在這裏插入圖片描述
在這裏插入圖片描述
接收成功!

在發送的時候需要設置數據透傳:
在串口助手裏先輸入:

AT+CIPSEND=0,6

表示要發送數據,等於號後面第一個值(這裏是0)是客戶端的序號,第二個值是你要發送的字母或者數字的個數,比如這裏我想發送“hahaha”,所以就是6;

hahaha

當出現 ok 和 > , 就可以發送hahaha了。

輸入完成結果:
在這裏插入圖片描述

在這裏插入圖片描述
發送成功!
………………………………………………………………………………………………

233333333

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