12、监测数据采集物联网应用开发步骤(9.1)

news2024/11/25 16:41:07
  1. 监测数据采集物联网应用开发步骤(8.2)

TCP/IP Server开发

com.zxy.common.Com_Para.py中添加如下内容

#锁机制
lock = threading.Lock()
#本机服务端端口已被连接客户端socket list
dServThreadList = {}
#作为服务端接收数据拦截器
ServerREFLECT_IN_CLASS = "com.plugins.usereflect.testServerReflectInClass1"
#本设备Server端口
AccSocketPort = 8090

com.zxy.business.Analyse_Data.py类的

def SubAnalyseRecBytes函数中添加如下内容

        #作为服务端接收数据拦截器
        elif inputIServ and Com_Para.ServerREFLECT_IN_CLASS != "":
            try:
                objC = importlib.import_module(Com_Para.ServerREFLECT_IN_CLASS)  #对模块进行导入                
                objName = Com_Para.ServerREFLECT_IN_CLASS.split(".")
                objN = getattr(objC,objName[len(objName) - 1])
                if hasattr(objN,"strResult"):
                    setattr(objN,"strResult",inputStrResult)
                    setattr(objN,"strIP",inputStrIP)
                    setattr(objN,"strPort",inputStrPort)
                    fun_us = getattr(objN,"init_start")
                    fun_us(objN)
                    temResult = getattr(objN,"strResult")
                    temSend = getattr(objN,"strSend")
                    temContinue = getattr(objN,"strContinue")
                    #发送到客户端数据
                    if temSend != "":
                        Com_Fun.SendSocket(temSend,inputMServSocket)
                    #不继续执行操作
                    if temContinue == "0":
                        return ""
            except Exception as e:
                if str(type(self)) == "<class 'type'>":
                    self.debug_in(self,Com_Para.ServerREFLECT_IN_CLASS+"=1=>"+repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息
                else:
                    self.debug_in(Com_Para.ServerREFLECT_IN_CLASS+"=1=>"+repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息
            finally:
                pass 

com.zxy.common.Com_Fun.py中添加代码

    @staticmethod
    def SetThreadList(inputStrkey, inputStrValue):
        if Com_Para.dServThreadList is None:
            Com_Para.dServThreadList = {}
        if Com_Para.lock.acquire():
            Com_Para.dServThreadList[inputStrkey] = inputStrValue
            Com_Para.lock.release()
            
    @staticmethod        
    def RemoveThreadList(inputStrkey):
        if Com_Para.lock.acquire():
            if Com_Para.dServThreadList.get(inputStrkey) is not None:
                Com_Para.dServThreadList.pop(inputStrkey)
            Com_Para.lock.release()

新建TCP/IP Server类com.zxy.tcp.TcpServer.py

#! python3
# -*- coding: utf-8 -
'''
Created on 2017年05月10日
@author: zxyong 13738196011
'''

import time

from com.zxy.business.Analyse_Data import Analyse_Data
from com.zxy.common import Com_Para
from com.zxy.common.Com_Fun import Com_Fun
from com.zxy.z_debug import z_debug

#监测数据采集物联网应用--TCP/IP Server
class TcpServer(z_debug):
    
    def __init__(self,skey):
        self.skey = skey
        
    def server_link(self, sock, addr):
        Com_Fun.SetThreadList(self.skey, sock)     
        while True:
            temInit_msg = b'' # 初始化流
            try:
                temInit_msg = sock.recv(1024*50) # 接收数据        
                temValue = temInit_msg.decode(Com_Para.U_CODE)
                if temValue == "Exit":
                    Com_Fun.RemoveThreadList(self.skey)
                    if sock is not None:
                        sock.close()
                    break
                elif len(temValue) > 0:
                    ad = Analyse_Data()
                    ad.SubAnalyseRecBytes(temValue,sock,True, sock.getpeername()[0],str(sock.getpeername()[1]))
                elif temValue == "":
                    Com_Fun.RemoveHashTable(Com_Para.dServThreadList,self.skey)
                    if sock is not None:
                        sock.close()
                    break
                time.sleep(0.1)
            except Exception as e:
                Com_Fun.RemoveThreadList(self.skey)
                if sock is not None:
                    sock.close()
                if str(type(self)) == "<class 'type'>":
                    self.debug_in(self,repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息
                else:
                    self.debug_in(repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息
                Break

监测数据采集物联网应用开发步骤(9.2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/953338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.2 BEV感知算法数据形式

本文来自自动驾驶之心知识星球的国内首个BEV感知全栈系列学习教程 Birds-eye-view (BEV) Perception: A Survey and Collection 什么是图像 1. 图像是由相机生成的&#xff0c;是将三维世界 中的坐标点&#xff08;单位为米&#xff09;映射到二维 图像平面&#xff08;单位像…

职场中的团队建设:超越任务,铸就默契

团队建设在职场中的重要性日益凸显。无论是初创公司还是大型企业&#xff0c;都需要一个高效、和谐且有创新能力的团队来推动业务发展。本文将深入探讨团队建设的活动和策略&#xff0c;帮助您构建一个卓越的团队。 1. 团队建设的重要性 提高团队凝聚力 团队凝聚力不仅仅是团…

python机器人编程——无人机python联动控制实现(VREP仿真)1——手搓一个类ROS机器人消息订阅发布模块

目录 一、前言二、总体设想三、系统的组成四、python代码构建构建一个MessageBroker消息代理类以下这个是常规的MessageBroker类&#xff1a;以下这个是引入协程的MessageBroker类&#xff1a;下面是使用MessageBroker消息代理类 构建一个DataProcessor消息预处理类构建一个Dat…

加入‘First Sowing’的公开部署马拉松(Deploy-a-Thon),共享巨额奖励

自从“First Sowing”启动以来已经有一段时间了&#xff0c;但等待终于结束&#xff01;“First Sowing”传奇的精彩结局以“部署马拉松&#xff08;Deploy-a-Thon&#xff09;”的形式到来&#xff0c;我们非常高兴能与大家分享这一消息&#xff01; 准备好与“First Sowing”…

【斗罗大陆】幽冥白虎再现,朱竹清后人继承衣钵,剧情逐渐高燃

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析斗罗大陆&#xff01; 绝世唐门最新的剧情已经更新&#xff0c;新生大赛再次出现了新的角色&#xff0c;也就是霍雨浩的哥哥戴华斌&#xff0c;他们也是霍雨浩冠军之路上最后的拦路虎&#xff0c;同样也拥有着当年叱咤风云…

MMCV安装指南

MMCV是一个开源的计算机视觉库,广泛用于基于Pytorch的深度学习项目中。本教程主要介绍MMCV的安装方法。 首先需要确认已安装Pytorch,CUDA及驱动版本。然后pip安装mmcv或从源码编译安装。需要注意 PyTorch、CUDA和MMCV版本匹配问题。 安装验证可以import mmcv测试是否成功。常…

优思学院|六西格玛中的概率分布有哪些?

为什么概率分布重要&#xff1f; 概率分布是统计学中一个重要的概念&#xff0c;它帮助我们理解随机变量的分布情况以及与之相关的概率。在面对具体问题时&#xff0c;了解概率分布可以帮助我们选择适当的检验或分析策略&#xff0c;以解决问题并做出合理的决策。 常见的概率…

Kafka系列四生产者

文章首发于个人博客&#xff0c;欢迎访问关注&#xff1a;https://www.lin2j.tech 一条消息从生产到发送成功&#xff0c;需要经过多个步骤&#xff0c;多个组件。首先要经过拦截器、序列化器、分区器对消息进行预处理&#xff0c;然后将消息按批次放入缓冲区&#xff0c;之后…

uniapp移动端h5设计稿还原

思路 动态设置html的font-size大小 实现步骤 先创建一个public.css文件&#xff0c;设置初始的font-size大小 /* 注意这样写 只能使用css文件, scss 是不支持的, setProperty 只适用于原生css上 */ html {--gobal-font-size: 0.45px; } .gobal-font-size {font-size: var(--g…

CRM通过哪四个特点赢得不同类型的客户

1.设置正确的目标 首先&#xff0c;在CRM系统中设置正确的目标是非常重要的。不同类型的客户有不同的需求和预期&#xff0c;需要使用不同的方法去处理。如果企业想吸引新客户&#xff0c;那么企业需要更加侧重于建立品牌形象和提供相关的信息。如果企业想留住老客户&#xff…

matplotlib绘图常见设置总结

绘图 官方API 头文件、画布初始化 首先要导入头文件&#xff0c;初始化画布 from matplotlib import pyplot as plt from matplotlib.pyplot import MultipleLocator # 从pyplot导入MultipleLocator类&#xff0c;这个类用于设置刻度间隔 import numpy as np # 常用的数据…

SQL求解用户连续登录天数

数据分析面试过程中&#xff0c;一般都逃不掉对SQL的考察&#xff0c;可能是笔试的形式&#xff0c;也可能是面试过程中面试官当场提问&#xff0c;当场在纸上写出&#xff0c;或者简单说一下逻辑。 今天&#xff0c;就来分享一道面试中常常被问到的一类SQL问题&#xff1a;连…

Vue3响应式原理 私

响应式的本质&#xff1a;当数据变化后会自动执行某个函数映射到组件&#xff0c;自动触发组件的重新渲染。 响应式的实现方式就是劫持数据&#xff0c;Vue3的reactive就是通过Proxy劫持数据&#xff0c;由于劫持的是整个对象&#xff0c;所以可以检测到任何对象的修改&#xf…

【传输层】网络基础 -- UDP协议 | TCP协议

再谈端口号端口号范围划分netstatpidof UDPUDP的特点面向数据报UDP的缓冲区 基于UDP的应用层协议 TCP认识TCP协议的报头理解封装解包理解可靠性TCP工作模式16位窗口大小6位标志位URGACKPSHRSTSYNFIN 再谈端口号 端口号(Port)标识了一个主机上进行通信的不同的应用程序 在TCP/I…

积分游戏小程序模板源码

积分游戏小程序模板源码是一款可以帮助用户快速开发小程序的工具&#xff0c;此模板源码包含五个静态页面&#xff0c;分别是首页、任务列表、大转盘、猜拳等五个页面&#xff0c;非常适合进行积分游戏等相关开发。 此模板源码的前端部分非常简单易用&#xff0c;用户可以根据…

KiCad 封装原件类型与封装焊盘不匹配 预期SMD 实际通孔

KiCad 7.0.6 PCB ERC 检查时弹出不匹配错误&#xff0c;提示&#xff1a; 封装原件类型与封装焊盘不匹配 预期SMD 实际通孔&#xff1a; 但实际的封装已经是 SMD 了呀。为啥&#xff0c;因为自己绘制的封装中属性不对。将自绘封装中的 原件类型由 通孔 改为 贴片即可&#xff1…

Python钢筋混凝土结构计算.pdf-T001-混凝土强度设计值

以下是使用Python求解上述问题的完整代码&#xff1a; # 输入参数 f_ck 35 # 混凝土的特征抗压强度&#xff08;单位&#xff1a;MPa&#xff09; f_cd 25 # 混凝土的强度设计值&#xff08;单位&#xff1a;MPa&#xff09; # 求解安全系数 gamma_c f_ck / f_cd # …

提高工作效率,轻松实现IP地址批量ping

在实际操作中&#xff0c;我们经常需要对一系列已分配的IP进行ping检测&#xff0c;以确认其是否正在运行。然而&#xff0c;我们的表格仅有一个标签页&#xff0c;且仅包含一个ip地址列。 iP192.168.196.106192.168.196.107192.168.196.108192.168.196.109 实现思路 我们的…

面对银行分支机构,UPS监控该如何应对?

UPS系统确保在电力中断或故障时&#xff0c;银行的关键系统和设备能够继续正常运行&#xff0c;从而防止因电力波动而可能导致的数据丢失和业务中断。 为了实现有效的UPS监控&#xff0c;银行需要应用监控系统。银行可以实时监测UPS系统的状态&#xff0c;及时发现潜在问题并采…

智能感测型静电中和设备由哪些部分构成

智能感测型静电中和设备是一种利用先进的传感技术和自动控制系统&#xff0c;以及适应性算法来实现静电电荷的中和和消除的设备。它主要用于消除静电带来的问题&#xff0c;比如电子元件的损坏、电磁干扰、火灾等。 智能感测型静电中和设备通常包括以下几个主要部分&#xff1…