实现单片机通过传感器获取信息,并且将信息通过wifi模块发送信息给PC端,并在pyqt5界面上显示(PC端部分)
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端部分)相关推荐
- 在Android界面上显示和获取Logcat日志输出
一.首先我们要获取Logcat中的日志 如何获取呢? 首先我们要先定义一个String[]数组,里面的代码是 //第一个是Logcat ,也就是我们想要获取的log日志 //第二个是 -s 也就是表示 ...
- 【QT】Qt项目demo:数据在ui界面上显示,鼠标双击可弹窗显示具体信息
一.项目总览 二.运行结果 I.鼠标单击 II.鼠标双击 三.源文件代码 1.RecData.pro #------------------------------------------------ ...
- linux下怎么查看光模块信息,cisco交换机如何查看光模块的信息的相关推荐_ChinaUnix论坛...
相关讨论 我想读去catalyst6509上vlan的信息? cisco的私有mib库中有个1.3.6.1.4.1.5.1.9(vlangrp) oid 可是我在我的6509上只有1.3.6.1.4. ...
- Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】
目录 一.前言 二.效果展示 1.APP界面展示 2.C51硬件展示 三.Android Studio APP源代码 1.AndroidManifest.xml 1.请求联网: 2.开放明文传输: 2 ...
- 使用Linux命令来发送信息
使用Linux命令来发送信息 使用Linux命令来发送信息(转贴)2007-10-08 12:13 Linux发展到今天,很多功能已经可以在可视化的界面中来完成.不过在很多情况下,命令还是非常有用的, ...
- 【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信
文章目录 前言 一.ESP8266模块与STM32连接 二.单片机代码 三.总结 前言 承接上文WIFI上位机部分:[上位机]通过WIFI上位机与网络调试助手通信绘制曲线,现阶段实现了STM32单片机 ...
- C51单片机连接wifi模块,发送AT指令
一.AT指令 AT 指令集是从终端设备( Terminal Equipment , TE) 或 数据终端设备 ( Data Terminal Equipment , DTE) 向终端适配器 (Term ...
- 使用“快速信息分发“功能将Excel表格中的信息点对点推送给员工(转)
前言 在工作中经常会遇到需要将一些信息手动点对点分发给员工的情况.例如,部门管理员每月从绩效考核系统中将员工的绩效考核情况导出后,通过企业微信或电子邮件点对点发给部门的每位员工.为了满足这类需求,在E ...
- hx711c语言程序,51单片机HX711传感器电子秤设计(原理图、程序源码、BOM等)
#include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #def ...
- STM32 FOC SDK2.0中使用hall传感器获取电角度的公式解析
1. 概述:函数 在使用霍尔传感器获取位置信息时,使用函数 s16 HALL_GetRotorFreq ( void )获取转子电角度增量信息.函数简介原文如下: 2. 参数简介: dpp(digit ...
最新文章
- 【2017-2019】Gartner战略技术趋势一览
- 资深专家深度剖析Kubernetes API Server第1章(共3章)
- linux溢出总结+windows aslr地址随机化绕过
- linux内核网络协议栈--ip层报文转发之ip_local_out()函数(六)
- Webservice开发之xsd中开发list请求参数的接口
- C语言中“数组名”和“数组名”
- 多线程与高并发(二):解析自旋锁CAS操作与volatile
- 51 nod 1127最短的包含字符串(尺取法)
- Mybatis(11)连接池基本介绍
- Java教程:Java String字符串和整型int的相互转换
- 告别鼠标——【Windows下常见系统快捷键】
- paip.tree 生成目录树到txt后的折叠查看
- TPU原理技术与xPU
- 《学习之道》第十章学习方法28再次提到番茄时间
- med4way:中介效应和交互效应分析
- Leetcode 每日一题——845. 数组中的最长山脉
- 多目标优化系列(七)SPEA2
- Python之路【第十一篇】: 进程与线程
- Kmeans、Kmeans++、Birch和KNN四种聚类算法对二维坐标点的聚类分析对比实验
- shell入门之expr的使用