Q1:PC如何接收到wifi模块发送过来的信息?
A1:可以通过python的socket模块,在某个端口建立服务器监听信息,当然发送和监听的端口号要一致。
Q2:如何将数据在界面上显示?
A2:pyqt5模块可以很好上手开发一些简单的小应用,可以将数据在上面显示,自学一天就好了。
Q3:为什么单片机发送过来的数据跟我想要的不一致?
A3:单片机发送的是字节流,想要显示还要转码decode(‘utf-8’)
Q4:如何实现服务端一边监听和pyqt5界面一直刷新显示?
A4:可以用Qthread类开启子线程,在子线程中执行服务端监听,至于刷新显示可以有两种方法,一种是使用定时器中断,另一种是由子线程直接emit()发送信号。

定义子线程监听

class WorkThread(QThread):def __init__(self):super(WorkThread,self).__init__()def run(self):ip = '192.168.2.100'port = 9999global data_list#创建服务端serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定ip端口号serversocket.bind((ip, port))  # ip也可以用Host代替# 最大连接数serversocket.listen(1)BUFSIZ = 1024       #最大读取字节数print("正在监听%s:%d" % (ip,port))while True:# 建立客户端连接,被动接受TCP客户端连接,(阻塞式)等待连接的到来clientsocket, addr = serversocket.accept()print("链接的客户端:%s" % str(addr))while True:try:data = clientsocket.recv(BUFSIZ)  # 读取已链接客户的发送的消息,bufsiz是字节数except Exception:print("断开的客户端", addr)breakprint(type(data))print("客户端发送的内容:", data.decode('utf-8'))if not data:breakdata_list = str(data.decode('utf-8')).split("=")msg = time.strftime("%Y-%m-%d %X")  # 获取结构化事件戳msg1 = '[%s]:温度 = %s°C  湿度 = %s%% 光照强度 = %sLX ' % (msg, data_list[0], data_list[1],data_list[2])print(msg1)time.sleep(1)clientsocket.close()  # 关闭客户端链接serversocket.close()

定义pyqt5界面

self.btnStart = QPushButton('开始监测')self.btnEnd = QPushButton('暂停监测')# 把控件放置在栅格布局中grid = QGridLayout()grid.setSpacing(10)grid.addWidget(temp, 1, 0)grid.addWidget(self.tempEdit, 1, 1)grid.addWidget(humi, 2, 0)grid.addWidget(self.humiEdit, 2, 1)grid.addWidget(light, 3, 0)grid.addWidget(self.lightEdit, 3, 1)grid.addWidget(review, 4, 0)grid.addWidget(self.reviewEdit, 4, 1,5,1)grid.addWidget(self.btnStart,10,1)grid.addWidget(self.btnEnd, 10, 2)

连接与槽函数:

# 信号与槽函数的连接self.btnStart.clicked.connect(self.slotStart)#self.btnEnd.clicked.connect(QCoreApplication.instance().quit)   #这是直接退出self.btnEnd.clicked.connect(self.slotPause)self.show()
 def Mytimer(self):self.timer = QTimer(self)# 信号与槽函数的连接self.timer.timeout.connect(self.update)      #过一段时间timeout触发,执行update。触发可以用这种定时器触发,也可以用emit发送self.timer.start(1000)                      #启动或重新启动一个超时时间间隔为毫秒的定时器。控制窗口刷新延迟,有两种方案实现刷新数据,一种是这种定时器,另一种是由子线程直接emit()发送信号def update(self):try:self.tempEdit.setText(data_list[0] + '°C')    #py默认unicode编码,所以不用加uself.humiEdit.setText(data_list[1] + "%")self.lightEdit.setText(data_list[2] + "LX")msg = time.strftime("%Y-%m-%d %X")  # 获取结构化事件戳self.reviewEdit.setText("今天又是充满希望的一天呢,加油! \n \n \n %s" %(msg))except:passdef slotStart(self):self.btnStart.setEnabled(False)      #点击开始后进入不可点击状态self.Mytimer()                       #开启定时器开始更新数据def slotPause(self):self.timer.stop()                   #关闭定时器self.btnStart.setEnabled(True)      #打开按键使能#清空信息self.tempEdit.setText("")self.humiEdit.setText("")self.lightEdit.setText("")self.reviewEdit.setText("")

实现效果
源码,之前没看到的消息,希望有用:https://pan.baidu.com/s/1DOKI72v7cRPjgGvM2RPWIw
提取码:c8t5

实现单片机通过传感器获取信息,并且将信息通过wifi模块发送信息给PC端,并在pyqt5界面上显示(PC端部分)相关推荐

  1. 在Android界面上显示和获取Logcat日志输出

    一.首先我们要获取Logcat中的日志 如何获取呢? 首先我们要先定义一个String[]数组,里面的代码是 //第一个是Logcat ,也就是我们想要获取的log日志 //第二个是 -s 也就是表示 ...

  2. 【QT】Qt项目demo:数据在ui界面上显示,鼠标双击可弹窗显示具体信息

    一.项目总览 二.运行结果 I.鼠标单击 II.鼠标双击 三.源文件代码 1.RecData.pro #------------------------------------------------ ...

  3. linux下怎么查看光模块信息,cisco交换机如何查看光模块的信息的相关推荐_ChinaUnix论坛...

    相关讨论 我想读去catalyst6509上vlan的信息? cisco的私有mib库中有个1.3.6.1.4.1.5.1.9(vlangrp) oid 可是我在我的6509上只有1.3.6.1.4. ...

  4. Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】

    目录 一.前言 二.效果展示 1.APP界面展示 2.C51硬件展示 三.Android Studio APP源代码 1.AndroidManifest.xml 1.请求联网: 2.开放明文传输: 2 ...

  5. 使用Linux命令来发送信息

    使用Linux命令来发送信息 使用Linux命令来发送信息(转贴)2007-10-08 12:13 Linux发展到今天,很多功能已经可以在可视化的界面中来完成.不过在很多情况下,命令还是非常有用的, ...

  6. 【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信

    文章目录 前言 一.ESP8266模块与STM32连接 二.单片机代码 三.总结 前言 承接上文WIFI上位机部分:[上位机]通过WIFI上位机与网络调试助手通信绘制曲线,现阶段实现了STM32单片机 ...

  7. C51单片机连接wifi模块,发送AT指令

    一.AT指令 AT 指令集是从终端设备( Terminal Equipment , TE) 或 数据终端设备 ( Data Terminal Equipment , DTE) 向终端适配器 (Term ...

  8. 使用“快速信息分发“功能将Excel表格中的信息点对点推送给员工(转)

    前言 在工作中经常会遇到需要将一些信息手动点对点分发给员工的情况.例如,部门管理员每月从绩效考核系统中将员工的绩效考核情况导出后,通过企业微信或电子邮件点对点发给部门的每位员工.为了满足这类需求,在E ...

  9. hx711c语言程序,51单片机HX711传感器电子秤设计(原理图、程序源码、BOM等)

    #include                  //调用单片机头文件 #define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255 #def ...

  10. STM32 FOC SDK2.0中使用hall传感器获取电角度的公式解析

    1. 概述:函数 在使用霍尔传感器获取位置信息时,使用函数 s16 HALL_GetRotorFreq ( void )获取转子电角度增量信息.函数简介原文如下: 2. 参数简介: dpp(digit ...

最新文章

  1. 【2017-2019】Gartner战略技术趋势一览
  2. 资深专家深度剖析Kubernetes API Server第1章(共3章)
  3. linux溢出总结+windows aslr地址随机化绕过
  4. linux内核网络协议栈--ip层报文转发之ip_local_out()函数(六)
  5. Webservice开发之xsd中开发list请求参数的接口
  6. C语言中“数组名”和“数组名”
  7. 多线程与高并发(二):解析自旋锁CAS操作与volatile
  8. 51 nod 1127最短的包含字符串(尺取法)
  9. Mybatis(11)连接池基本介绍
  10. Java教程:Java String字符串和整型int的相互转换
  11. 告别鼠标——【Windows下常见系统快捷键】
  12. paip.tree 生成目录树到txt后的折叠查看
  13. TPU原理技术与xPU
  14. 《学习之道》第十章学习方法28再次提到番茄时间
  15. med4way:中介效应和交互效应分析
  16. Leetcode 每日一题——845. 数组中的最长山脉
  17. 多目标优化系列(七)SPEA2
  18. Python之路【第十一篇】: 进程与线程
  19. Kmeans、Kmeans++、Birch和KNN四种聚类算法对二维坐标点的聚类分析对比实验
  20. shell入门之expr的使用

热门文章

  1. iphone5处理屏幕分辨率
  2. 前端 psd切片生成html.css,1个将PSD网页模板切片输出为DIV+CSS架构网页教程
  3. EAS开发单据分录和序时簿添加合计
  4. 360极速浏览器更换背景颜色
  5. 关于Intel酷睿(Core)品牌CPU的不同系列和不同代产品间的性能差异知识普及
  6. 开源看板 wekan docker-compose部署
  7. java更新word文档目录页码
  8. 悉尼大学计算机专业本科学费,悉尼大学
  9. 计算机显示不出桌面的文件夹,win10电脑保存文件路径不显示桌面怎么办?
  10. html li去掉前面的小黑点 项目符号