TCP协议用在python和wifi模块之间详解
作者:John_Y97 发布时间:2021-02-04 05:43:08
TCP协议用在python和wifi模块之间
python建立TCP连接需要用到socket协议
如果是TCP Server,建立TCP连接的步骤是:
1.创建socket套接字
2.绑定(bind())本地的ip地址和端口号
3.监听端口(listen),如果有socket连接,便接收(accept)。
如果是TCP Client,建立TCP连接的步骤是:
1.创建socket套接字
2.连接(connect)远程主机的ip地址和端口号。
我的计算机最初使用的是TCP Server模式,让wifi模块作为client来连接计算机,但是这种模式缺陷很多,比如,连接的主动性在wifi模块上,wifi模块是否连接还需要把握时机,如果wifi模块先联网,而服务器后打开,则两者无法建立TCP连接。
而且计算机作为服务器,那么对于wifi模块的SDK来说,需要连接的服务器地址就是固定的,也就是说,如果换一台电脑运行服务器,那么wifi模块就需要重新烧写一次ip地址,十分不便,也不人性化。
因此,后来我将wifi模块的SDK和计算机python软件重写,将两者地位交换,wifi模块作为服务器,计算机作为客户端去连接wifi模块,这样,连接的主动权就回到了计算机手里,这样,wifi模块一直处在监听模式,只要计算机去运行这个软件,并且与wifi模块处在一个局域网下,那么就能够连接上wifi模块,并且向wifi模块发送数据。
wifi模块SDK的编写
wifi模块采用定时器的机制,每隔一段时间会调用回调函数。如上面检查wifi状态部分第三句代码,那么wifi模块如果状态是良好的,则进入下一个函数,如果wifi信号不好,它就会一直检查wifi状态,不会进入到连接wifi的模块。
同理,连接wifi部分也是一样,如果wifi连接失败,也不会进入下一个部分,即建立TCP Server部分,但是由于os_timer_arm函数中的第三个参数为0,它不会一直阻塞在连接wifi的部分,它会回到上一个检查wifi状态的定时器模块上。
同理,如果建立TCP失败,就会回到上一个定时器。
python的tcp协议交互
服务端:
客户端:
来源:https://blog.csdn.net/John_Y97/article/details/75269782
猜你喜欢
- 事件处理,是 GUI 程序中不可或缺的重要组成部分,相比来说,控件只是组成一台机器的零部件, 而事件处理则是驱动这台机器&ldquo
- 模板继承是ThinkPHP3.1.2版本添加的一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层。模板继承其
- 解决项目pycharm能运行,在终端却无法运行的问题报 ModuleNotFoundError: No module named '
- 方法一:简单,得不到参数,只有一个虚拟路径 代码如下:GetUrl =request("url") 例如:http://
- isset和is_null啥区别,看手册上讲的话, isset和is_null的功能几乎完全”相反的一样”..是不是isset就是一个is_
- 请问如何使用CDONTS组件来发送电子邮件?我们可以在IIS4下使用CDONTS来完成。首先要确认是否安装了SMTP服务(OPTIONPAC
- 本文实例讲述了Python简单计算数组元素平均值的方法。分享给大家供大家参考,具体如下:Python 环境:Python 2.7.12 x6
- 本文主要讲述的是Python中的模块的概念,具体如下。模块是python组织代码的基本方式:python的脚本都是用扩展名为py的文本文件保
- 今天安装了几个模块,在cmd测试都正常,但是在pycharm就不行,后面试了以下方法:1、2、3、选择python.exe4、然后在回到se
- 场景针对园区停车信息,需要对各个公司提供的停车数据进行整合并录入自家公司的大数据平台数据的录入无外乎就是对数据的增删改查下面上一个常规的写法
- 由于存在函数内部不能访问全局作用的,所以就需要一种可以引入上一级作用域的语法结构,可以通过use使用函数声明时所在作用域的变量的值。php的
- 本文主要研究的是Python编程删除服务器文件,具体实现 代码如下。实例1#coding:utf-8import paramiko"
- 一、数学相关1、绝对值:abs(-1)2、最大最小值:max([1,2,3])、min([1,2,3])3、序列长度:len('ab
- 本文实例为大家分享了Python绑定方法与非绑定方法,供大家参考,具体内容如下定义:绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数
- 当我想要完美的使用:nth-child或者:nth-of-type的时候有点儿头晕。你越理解它们,就能写出越好的CSS规则!在这些简单的”秘
- Python3 正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。本文主要阐述re包中的主要函数。
- 如何编写一个只在Web服务关闭时执行的程序?如:<SCRIPT LANGUAGE="VBScript"&
- 1.什么是FBV和CBVFBV是指视图函数以普通函数的形式;CBV是指视图函数以类的方式。2.普通FBV形式def index(reques
- 本文介绍了python+opencv像素的加减和加权操作的实现,分享给大家。# 目标:# 1、在图像上进行算术操作,如加减以及按位操作# 2
- 本文实例讲述了python使用socket连接远程服务器的方法。分享给大家供大家参考。具体如下:import socketprint &qu