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

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

TCP/IP Client开发

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

#socket链接的自动链接时间,定时清除无效tcp连接
dSockList = {}
#本机作为客户端连接socket list
dClientThreadList = {}
#作为客户端接收数据拦截器
ClientREFLECT_IN_CLASS = "com.plugins.usereflect.testClientReflectClass1"

新建接收数据解析类com.zxy.business.Analyse_Data.py

#! python3
# -*- coding: utf-8 -
'''
Created on 2017年05月10日
@author: zxyong 13738196011
'''import importlib
from com.zxy.common import Com_Para
from com.zxy.common.Com_Fun import Com_Fun
from com.zxy.z_debug import z_debug#监测数据采集物联网应用--接收数据解析
class Analyse_Data(z_debug):attTemChildNode = ""def __init__(self):pass#接收到数据包iServ是否作为服务端接收到数据def SubAnalyseRecBytes(self,inputStrResult, inputMServSocket, inputIServ, inputStrIP,inputStrPort):#作为客户端接收数据拦截器if not inputIServ and Com_Para.ClientREFLECT_IN_CLASS != "":try:objC = importlib.import_module(Com_Para.ClientREFLECT_IN_CLASS)  #对模块进行导入                objName = Com_Para.ClientREFLECT_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.ClientREFLECT_IN_CLASS+"=>"+repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息else:self.debug_in(Com_Para.ClientREFLECT_IN_CLASS+"=>"+repr(e)+"=>"+str(e.__traceback__.tb_lineno))#打印异常信息finally:Pass

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

    @staticmethoddef SendSocket(inputValue, inputSc):return inputSc.send(inputValue.encode(Com_Para.U_CODE))

新建TCP/IP Client类com.zxy.tcp.TcpClient.py

#! python3
# -*- coding: utf-8 -
'''
Created on 2017年05月10日
@author: zxyong 13738196011
'''import time
from com.zxy.z_debug import z_debug
from com.zxy.adminlog.UsAdmin_Log import UsAdmin_Log
from com.zxy.common import Com_Para
from com.zxy.common.Com_Fun import Com_Fun
from com.zxy.business.Analyse_Data import Analyse_Data#监测数据采集物联网应用--TCP/IP Client
class TcpClient(z_debug):def __init__(self, skey):self.skey = skeypassdef client_link(self):sock = Com_Fun.GetHashTableNone(Com_Para.dClientThreadList,self.skey)while True:temInit_msg = b''#初始化流try:temInit_msg = sock.recv(1024*50)temValue = temInit_msg.decode(Com_Para.U_CODE)if temValue.replace("\r","").replace("\n","") == "Exit":Com_Fun.RemoveHashTable(Com_Para.dClientThreadList,self.skey)if sock is not None:sock.close()uL = UsAdmin_Log(Com_Para.ApplicationPath, Com_Fun.GetTime("%Y-%m-%d %H:%M:%S") + "1 close server","NetWork")uL.WriteLog()breakelif len(temValue) > 0:ad = Analyse_Data()#解析作为客户端收到数据ad.SubAnalyseRecBytes(temValue,sock,False, sock.getpeername()[0],str(sock.getpeername()[1]))elif len(temInit_msg) == 0:Com_Fun.RemoveHashTable(Com_Para.dClientThreadList,self.skey)if sock is not None:sock.close()uL = UsAdmin_Log(Com_Para.ApplicationPath, Com_Fun.GetTime("%Y-%m-%d %H:%M:%S") + "2 close server","NetWork")uL.WriteLog()breaktime.sleep(0.1)except Exception as e:Com_Fun.RemoveHashTable(Com_Para.dClientThreadList,self.skey)if sock is not None:sock.close()temLog = ""if str(type(self)) == "<class 'type'>":temLog = self.debug_info(self)+repr(e)else:temLog = self.debug_info()+repr(e)uL = UsAdmin_Log(Com_Para.ApplicationPath, temLog+"=>"+str(e.__traceback__.tb_lineno))uL.WriteLog()break
  1. 监测数据采集物联网应用开发步骤(8.2)

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

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

相关文章

ES6 新特性

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理前端技术的JavaScript的知识点ES6 新特性文件上传下载&#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以…

关于linux openssl的自签证书认证与nginx配置

自签文档链接 重点注意这块&#xff0c;不能写一样的&#xff0c;要是一样的话登录界面锁会报不安全 域名这块跟最后发布的一致 nginx配置的话 server {listen 443 ssl; //ssl 说明为https 默认端口为443server_name www.skyys.com; //跟openssl设置的域名保持一致s…

传送带下料口堵塞识别检测算法 yolov5

传送带下料口堵塞识别检测算法通过python基于yolov5网络深度学习框架模型&#xff0c;下料口堵塞识别检测算法能够准确判断下料口是否出现堵塞现象&#xff0c;一旦发现下料口堵塞&#xff0c;算法会立即抓拍发出告警信号。Python是一种由Guido van Rossum开发的通用编程语言&a…

【测试】笔试03

文章目录 1. 哪种测试模型把测试过程作为需求分析、概要设计、详细设计及编码之后的阶段&#xff08; &#xff09;2. 在下面所列举的逻辑测试覆盖中&#xff0c;测试覆盖最强的是&#xff1f;3. 网络管理员编写了shell程序prog1.sh,测试时程序死循环无法结束,可以通过下列方式…

OpenCV处理图像和计算机视觉任务时常见的算法和功能

当涉及到OpenCV处理图像和计算机视觉任务时&#xff0c;有许多常见的具体算法和功能。以下是一些更具体的细分&#xff1a; 图像处理算法&#xff1a; 图像去噪&#xff1a;包括均值去噪、高斯去噪、中值滤波等&#xff0c;用于减少图像中的噪声。 直方图均衡化&#xff1a;用…

CVPR2023 Deblur论文整理

Paper list 来自 https://github.com/DarrenPan/Awesome-CVPR2023-Low-Level-Vision#image-deblurring 简单用GPT翻译一下摘要 1 Structured Kernel Estimation for Photon-Limited Deconvolution Paper: Structured Kernel Estimation for Photon-Limited Deconvolution Cod…

Power BI 连接 MySQL 数据库

Power Query 或 Power BI 只提供了对 SQL Server 的直接连接&#xff0c;而不支持其它数据库的直连。所以第一次连接 MySQL 数据库时&#xff0c;就出现下面的错误信。 这就需要我们自己去安装一个连接器组件。https://downloads.mysql.com/archives/c-net/ 错误解决方案 我一…

C语言sizeof和strlen的区别?

sizeof和strlen有什么区别&#xff1f; sizeof本质是运算符&#xff08;sizoof既是关键字也是运算符&#xff0c;不是函数哈&#xff09;&#xff0c;而strlen就是函数。sizeof后面如果是类型&#xff0c;则必须加括号&#xff0c;如果是变量&#xff0c;可以不加括号。 sizeof…

【Unity】终极移动指南-注解【理解移动到抓钩,再到贪吃蛇的实现】

文章目录 【Unity】终极移动指南-注解&#xff08;从移动、抓钩到贪吃蛇&#xff09;观前提醒链接地址&#xff1a; 内容一、 transform移动操作【1】transform.position变换位置【2】transform.Translate平移【3】transform.position 类似平移的操作【4】定向矢量【5】停在指定…

定位与轨迹-百度鹰眼轨迹开放平台-学习笔记

1. 百度鹰眼轨迹的主要功能接口 百度的鹰眼轨迹平台&#xff0c;根据使用场景不同&#xff0c;提供了web端、安卓端等各种类型的API与SDK&#xff0c;本文章以web端API为例&#xff0c;介绍鹰眼轨迹的使用。 2. API使用前的准备 使用鹰眼轨迹API&#xff0c;需要两把钥匙&…

Java单元测试 JUnit 5 快速上手

一、背景 什么是 JUnit 5&#xff1f;首先就得聊下 Java 单元测试框架 JUnit&#xff0c;它与另一个框架 TestNG 占据了 Java领域里单元测试框架的主要市场&#xff0c;其中 JUnit 有着较长的发展历史和不断演进的丰富功能&#xff0c;备受大多数 Java 开发者的青睐。 而说到…

SpringBoot整合JUnit、MyBatis、SSM

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 SpringBoot整合 一、SpringBoot整合JUnit二、Spri…

Vue脚手架中安装ElementUi

目录 ElementUi简介&#xff1a; ElementUi下载&#xff1a; npm 安装&#xff1a; 引入ElementUi: 测试是否引入成功&#xff1a; Element-ui官网&#xff1a;组件 | Element ElementUi简介&#xff1a; ElementUi&#xff0c;是由国内的饿了么团队开发并开源的一套为开…

砍价活动制作秘籍,打造抢购风潮

砍价活动作为一种吸引用户参与、提高销售量的营销手段&#xff0c;已经成为了电商行业的热门选择。在如今竞争激烈的市场环境下&#xff0c;如何制作出成功的砍价活动&#xff0c;成为了每位电商从业者亟需解决的问题。在本文中&#xff0c;我们将为大家揭秘一种制作成功砍价活…

基于Thinkphp6框架全新UI的AI网址导航系统源码

2023全新UI的AI网址导航系统源码&#xff0c;基于thinkphp6框架开发的 AI 网址导航是一个非常实用的工具&#xff0c;它能够帮助用户方便地浏览和管理自己喜欢的网站。 相比于其他的 AI 网址导航&#xff0c;这个项目使用了更加友好和易用的 ThinkPHP 框架进行搭建&#xff0c;…

[管理与领导-60]:IT基层管理者 - 扩展技能 - 3 - 通过面试招到合适的人选

目录 前言&#xff1a; 一、招聘 1.1 什么是招聘 1.2 招聘 VS 招募 1.3 甄选 1.4 招聘中的重要原则 1.5 招聘的本质 1.6 人才匹配的维度 1.7 人员招聘中的误区 二、面试 2.1 何为面试 2.2 为什么面试 2.3 面试的注意事项 2.4 面试的误区 2.5 如何进行面试 前言…

ffmpeg把RTSP流分段录制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音视频开发的难度直接就降一个维度啊

比如&#xff0c;原来我们要用ffmpeg录一段RTSP视频流转成MP4&#xff0c;我们有两种方案&#xff1a; 方案一&#xff1a;可以使用以下命令将rtsp流分段存储为mp4文件 ffmpeg -i rtsp://example.com/stream -vcodec copy -acodec aac -f segment -segment_time 3600 -reset_t…

springMVC之拦截器

文章目录 前言一、拦截器的配置二、拦截器的三个抽象方法三、多个拦截器的执行顺序总结 前言 拦截器 一、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置&…

OpenCV(三):Mat类数据的读取

目录 1.Mat类矩阵的常用属性 2.Mat元素的读取 1.at方法读取Mat矩阵元素 at (int row,int col) 2.矩阵元素地址定位方式访问元素 3.Android jni demo 1.Mat类矩阵的常用属性 下面是一些Mat类的常用属性&#xff1a; rows: 返回Mat对象的行数。 cols: 返回Mat对象的列数。 …

数据结构之算法

算法的基本概念 计算机解题的过程实际上是在实施某种算法&#xff0c;这种算法称为计算机算法 算法的基本要素 一个算法是由两种基本要素组成&#xff1a;一是对数据对象的运算和操作&#xff1b;二是算法的控制结构 算法中对数据的运算和操作 在一般计算机系统中&#xf…