ESP32(MicroPython) 对socket通信的几项测试

news/2024/11/8 23:52:10/

MicroPython有socket通信功能,但实测得出仅适用于字符串收发,不适合对设备进行控制。以下是测试的具体情况。

ESP32上直接使用例程,要填写wifi名称再运行。实际使用时不能上电启动,原因不明确。

#导入Pin模块
from machine import Pin
import time
import network
import usocket#定义LED控制对象
led1=Pin(15,Pin.OUT)#路由器WIFI账号和密码
ssid=" "
password=" "#服务器地址和端口
dest_ip="192.168.1.100"
dest_port=10000#WIFI连接
def wifi_connect():wlan=network.WLAN(network.STA_IF)  #STA模式wlan.active(True)  #激活start_time=time.time()  #记录时间做超时判断if not wlan.isconnected():print("conneting to network...")wlan.connect(ssid,password)  #输入WIFI账号和密码while not wlan.isconnected():led1.value(1)time.sleep_ms(300)led1.value(0)time.sleep_ms(300)#超时判断,15 秒没连接成功判定为超时if time.time()-start_time>15:print("WIFI Connect Timeout!")breakreturn Falseelse:led1.value(0)print("network information:", wlan.ifconfig())return True#程序入口
if __name__=="__main__":if wifi_connect():socket=usocket.socket()  #创建socket连接addr=(dest_ip,dest_port)  #服务器IP地址和端口socket.connect(addr)socket.send("Hello PRECHIN")while True:text=socket.recv(128)  #单次最多接收128字节if text==None:passelse:print(text)socket.send("I get:"+text.decode("utf-8"))time.sleep_ms(300)

电脑上可以用网络调试工具,或者用下面的python程序。由于上面的ESP32程序上电不能正常启动,需要在电脑上启动,而IDE上不能同时使用两个解释器,因此需要在文件所在目录打开命令行,使用 python+空格+文件名 运行程序。

#!/usr/bin/python3
# 文件名:server.py# 导入 socket、sys 模块
import socket
import sys
import time
# 创建 socket 对象
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 获取本地主机名
host = socket.gethostname()port = 10000# 绑定端口号
serversocket.bind((host, port))# 设置最大连接数,超过后排队
serversocket.listen(5)while True:# 建立客户端连接clientsocket,addr = serversocket.accept()      print("连接地址: %s" % str(addr))i=1while True:msg='welcome!'+ "\r\n"clientsocket.send(msg.encode('utf-8'))text = clientsocket.recv(1024)if text==None:passelse:print(text)time.sleep(1)

实际测试时能正常收发数据。

如果要通过socket通信操作ESP32,需要判断接收的数据的内容。本人尝试直接判断字符串内容,但不能正常运行。又测试了编码数字进行发送,测试结果是电脑上能正常发布,但MicroPython不支持对数字进行解码的功能。

总的来说,通过常规的socket通信实现物联网不是一种好方案。如果要在局域网控制设备,可以选择制作网页或使用物联网工具。


http://www.ppmy.cn/news/709542.html

相关文章

微信秘笈之--微信多开

微信多开 1、首先百度网盘下载软件 很小很小 不是安装包 链接:https://pan.baidu.com/s/1tjSGoSfRQlMi8VnMXGW6_A 提取码:2mqh 2、打开找到微信 在下面找到m开头的 关闭就可以再开个微信了 觉得好的话点个赞吧 花开一千年,花落一千年,花叶永不见

微信(电脑版)多开教程

对于有些人想将将工作和生活区分开,所以会申请两个微信号(一个用于生活,一个用于工作).有时我们希望在电脑上同时登陆两个微信,通常情况下电脑段只能登陆一个微信号,对于微信在电脑多开请看以下教程: (1)、新建一个TXT文档&#…

电脑版微信多开方法

新建一个 wx.txt 文件,在里面写一下内容: TASKKILL /F /IM wechat.exe start "" "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" start "" "D:\Program Files (x86)\Tencent\WeChat\WeChat.exe" 第一行不要动, 第二行 D:\Pro…

Android开发:TVBox智能机顶盒开发实用技巧分享

本文旨在指导想要进入Android TVBox智能机顶盒开发领域或刚刚进入Android 源码开发领域的新人带路,愿你们越走越远! 转载请注明出处和链接:http://blog.csdn.net/xiong_it/article/details/45174207,谢谢! 实用工具篇…

解决用一根网线同时传输IPTV和网络的问题

解决用一根网线同时传输IPTV和网络的问题 背景:解决方案:实现教程:路由器设置:第一步:设置上网方式;第二步:设置IPTV 网管交换机设置:第一步:连线第二步:VLAN…

机顶盒开发前奏---电脑adb无线连接机顶盒

今天拿到一个智能机顶盒,发现并不能像是连接手机一样直接调试,只能使用无线连接的方式调试(电脑、机顶盒必须在同一个局域网,wifi和有限连接都可以) 1. 首先要获得机顶盒adb调试密码(不同型号的机顶盒&…

电脑如何实现微信多开

首先,电脑肯定是要下载微信电脑版的,右键点击微信图标,选择“属性”,左键点开,找到“目标”路径,复制下来,这里要注意,由于cmd窗口在识别路径的时候默认空格为结束符,所以如果有空格…

上网和IPTV单线复用的方法

很多家庭网络布线中,电信信息箱只有一条线到客厅电视,智能电视本身需要一条能上网的网线,IPTV盒子需要一条IPTV的专用信号线,这个时候光猫的Vlan功能就派上用场上,把IPTV和上网合2为1,用1条网线传输&#x…