计算机课程设计之基于pyqt的服务端客户端通信(实现一个简易的传感器数据采集系统)

1 简介

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、编程领域优质创作者,博客之星、各平台优质作者、专注于Java,python等技术领域和毕业项目实战✌

🍅文末获取源码联系🍅
计算机课程设计之基于pyqt的服务端客户端通信

实现一个简易的传感器数据采集系统

2 设计概要

pyqt 不同窗口怎么相互通讯?
在 PyQt 中,不同窗口之间可以使用信号(signal)和槽(slot)的机制进行通信。具体来说,一个窗口可以发出一个信号,另一个窗口可以连接这个信号,并在收到信号时执行对应的槽函数。

以下是一个简单的示例代码,演示了如何在两个窗口之间传递文本数据:

from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QLineEdit
from PyQt5.QtCore import pyqtSignal, QObject

class Window1(QMainWindow):
text_changed = pyqtSignal(str)

def __init__(self):
    super().__init__()
    self.setWindowTitle('Window 1')
    self.line_edit = QLineEdit()
    self.line_edit.textChanged.connect(self.on_text_changed)
    self.setCentralWidget(self.line_edit)

def on_text_changed(self, text):
    self.text_changed.emit(text)

class Window2(QMainWindow):
def init(self):
super().init()
self.setWindowTitle(‘Window 2’)
self.label = QLabel()
layout = QVBoxLayout()
layout.addWidget(self.label)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)

def on_text_changed(self, text):
    self.label.setText(text)

class Communicate(QObject):
text_changed = pyqtSignal(str)

def main():
app = QApplication([])
window1 = Window1()
window2 = Window2()
communicate = Communicate()
communicate.text_changed.connect(window2.on_text_changed)
window1.text_changed.connect(communicate.text_changed)
window1.show()
window2.show()
app.exec_()

if name == ‘main’:
main()

在这个示例中,我们创建了两个窗口 Window1 和 Window2,以及一个通信类 Communicate。Window1 中有一个文本框,当文本框中的文本发生变化时,就会发出 text_changed 信号。Communicate 类中有一个同名的信号,用于将 Window1 的信号连接到 Window2 的槽函数 on_text_changed 中。当 Window2 接收到 text_changed 信号时,就会调用 on_text_changed 方法,将文本设置为标签的文本。

在 main 函数中,我们创建了 Window1、Window2 和 Communicate 的实例,并将它们连接起来。最后,我们显示这两个窗口,启动 PyQt 的事件循环。

这样,当在 Window1 的文本框中输入文本时,Window2 的标签就会立即更新为相同的文本。

本系统的功能主要包括本系统的功能主要包括:

(1) 数据采集客户端。能够随机产生等模拟数据(如:温度、湿度),并发送到服务器端。

(2) 数据采集服务器,接收多个客户端的数据并进行展示。

(3) 通讯协议设计,包括:心跳协议、数据上报、客户端上线、下线等。

3 系统关键技术

使用springboot,vue,mysql, mybaties, typescript, html ,css, js 等进行开发

4 开发工具

开发工具主要有:idea、jdk1.8、maven、mysql5.7、Navicat等。

5 代码展示

@RequestMapping("/strategy")
@RestController
@Scope("prototype")
public class StrategyController {
    @Autowired
    private StrategyService strategyService;
    @Value("${web.upload-path}")
    private String path;

    @RequestMapping("/findPage")
    public ObjDat<Strategy> findPage(Strategy strategy, @RequestParam(value="page", defaultValue="1") int page, @RequestParam(value="limit", defaultValue="10") int limit){
        return strategyService.findPage(strategy,page-1,limit);
    }

    @RequestMapping("/edit")
    public JsonResult edit(HttpServletRequest request, Strategy strategy) throws IOException {
        User user=(User)request.getSession().getAttribute("user");
        if(user==null){
            return JsonResult.error("请登录");
        }
        String str=strategyService.edit(request,strategy);
        if(str.equals("成功")){
            return JsonResult.success("操作成功");
        }else{
            return JsonResult.error("操作失败");
        }
    }

6 系统功能描述

项目功能演示

在这里插入图片描述
在这里插入图片描述

7 最后

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值