eqmx上读取数据处理以后添加到数据库中

news2024/11/16 7:53:38

目录

定义一些静态变量

定时器事件的处理器

订阅数据的执行器

处理json格式数据和将处理好的数据添加到数据库中

要求和最终效果

总结一下


定义一些静态变量
// 在这里都定义成全局的  一般都定义成静态的
        private static MqttClient mqttClient; // mqtt客户端 
        private static string mqttServer = "121.37.84.114"; // mqtt服务器地址
        private static string mqttClientId = "frank_writer"; // 客户端id 随便写
        private static string SubscribedTopic = "fb5756"; // 订阅主题
        //连接数据库字符串
        private static string connectionString = "Data Source=MOGFPLQEEJOTGON\\SQLEXPRESS;Initial Catalog=frank;User ID=frank;Password=root123";
        //  JObject用来生成一个JSON对象,简单来说就是生成”{}”,
        //  JArray用来生成一个JSON数组,也就是”[]”,
        //  JProperty用来生成一个JSON数据,格式为key/value的值,
        //  而JValue则直接生成一个JSON值
        private static JObject jsonObject; //
        private Timer timer;// 添加一个定时器
定时器事件的处理器
 private void File_access_date(object sender, EventArgs e) {
            //public MqttClient(string brokerHostName, int brokerPort, bool secure, X509Certificate caCert);
            // 四个参数   服务器ip   端口号   不需要  网络传输证书
            mqttClient = new MqttClient(mqttServer, 1883, false, null); //  连接服务器
            // 给客户端订阅数据 添加事件执行器
            mqttClient.MqttMsgPublishReceived += MqttClient_MqttMsgPublishReceived;// 给mqtt添加事件执行器
            mqttClient.Connect(mqttClientId); // 添加连接服务的id
            // 订阅主题,连接质量为2 ,这个两个数组目前就两个参数
            mqttClient.Subscribe(new string[] { SubscribedTopic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
           
        }
订阅数据的执行器
​
        // 事件具体处理器,处理具体读取的数据
        private static void MqttClient_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
        {
            // Handle the message, e.g., write to SQL 获取json格式的数据
            string message = System.Text.Encoding.UTF8.GetString(e.Message);
​
            //MessageBox.Show("Subscribed to " + e.Message); 查看内容
            WriteToDatabase(message);// 写到数据库里面
        }
处理json格式数据和将处理好的数据添加到数据库中
 private static void WriteToDatabase(string data)
        {
            // sql语句
            string sql = "INSERT INTO FLF800(REG001,REG002,REG003,REG004,REG005,REG006,REG007) VALUES (@REG001,@REG002,@REG003,@REG004,@REG005,@REG006,@REG007) ";
            string newDate = data.Replace("08", ""); //去掉多余的字符
            string endDate = newDate.Replace("-","");//去掉'-'字符
            JObject jsonObject = JObject.Parse(endDate);// 将字符串重新转为JSON格式的数据
​
            string senserDatas = jsonObject["sensorDatas"].ToString();//获取json数据的第一个元素
​
            // 转为json数据,转之前数据格式必须是一样的不可以又多余的格式,不然就会报错
            JArray jsonArray = JArray.Parse(senserDatas); // 将json其转化为数据
            int sum = jsonArray.Count; // 获取数据的大小
            Dictionary<string, string> dictionary = new Dictionary<string, string>();// 字典来存储数据
            // 
            for (int i = 0; sum > 0;i++)
            {
                jsonObject = jsonArray[i] as JObject;// 将每一个json元素重新转为json对象
                dictionary.Add(jsonObject["flag"].ToString(), jsonObject["value"].ToString());
                sum--;
            }
​
            //power = JsonConvert.DeserializeObject<PowerData>(endDate);
​
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.Parameters.AddWithValue("@REG001", dictionary["REG001"]);
                    cmd.Parameters.AddWithValue("@REG002", dictionary["REG002"]);
                    cmd.Parameters.AddWithValue("@REG003", dictionary["REG003"]);
                    cmd.Parameters.AddWithValue("@REG004", dictionary["REG004"]);
                    cmd.Parameters.AddWithValue("@REG005", dictionary["REG005"]);
                    cmd.Parameters.AddWithValue("@REG006", dictionary["REG0061"]);
                    cmd.Parameters.AddWithValue("@REG007", dictionary["REG0062"]);
                    cmd.ExecuteNonQuery();
                }
            }
            //MessageBox.Show("数据添加成功");
        }
要求和最终效果

总结一下
        //  JObject用来生成一个JSON对象,简单来说就是生成”{}”,
        调用静态方法,重新变成json对象
        JObject jsonObject = JObject.Parse(endDate);// 将字符串重新转为JSON格式的数据
        string senserDatas = jsonObject["sensorDatas"].ToString();//获取json数据的第一个元素
        
        //  JArray用来生成一个JSON数组,也就是”[]”,
        // 转为json数据,转之前数据格式必须是一样的不可以又多余的格式,不然就会报错
            JArray jsonArray = JArray.Parse(senserDatas); // 将json其转化为数据
            int sum = jsonArray.Count; // 获取数据的大小
         
        // 这两个没有用到,但在百度上查到了,在这里也提一下 
        //  JProperty用来生成一个JSON数据,格式为key/value的值,
        //  而JValue则直接生成一个JSON值

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

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

相关文章

科研绘图系列:R语言组合堆积图(stacked barplot with multiple groups)

介绍 通常堆积图的X轴表示样本,样本可能会存在较多的分组信息,通过组合堆积图和样本标签分组信息,我们可以得到一张能展示更多信息的可发表图形。 加载R包 knitr::opts_chunk$set(warning = F, message = F) library(tidyverse) library(cowplot) library(patchwork)导入…

R包:plot1cell单细胞可视化包

介绍 plot1cell是用于单细胞数据seurat数据对象的可视化包。 安装 ## You might need to install the dependencies below if they are not available in your R library. bioc.packages <- c("biomaRt","GenomeInfoDb","EnsDb.Hsapiens.v86&qu…

基于飞腾FT2000的嵌入式计算机系统

作为中国嵌入式计算机的领导厂家&#xff0c;是最早进入轨道交通领域的 工业级AFC嵌入式计算机系列产品&#xff0c;充分体现了轨道交通新一代AFC主流新技术的各种特点&#xff0c;为轨道交通AFC系统的升级换代提供了良好的系统平台。 标准化 采用开放式架构的Intel新一代主流…

力扣高频SQL 50题(基础版)第八题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第八题1581. 进店却未进行过交易的顾客题目说明思路分析实现过程准备数据&#xff1a;实现方式&#xff1a;结果截图&#xff1a;总结&#xff1a; 力扣高频SQL 50题&#xff08;基础版&#xff09;第八题 1581. 进店…

操作系统杂项(十)

目录 一、简述socket中select、epoll的使用场景和区别 1、使用场景 2、区别 二、epoll水平触发和边缘触发的区别 三、简述Reactor和Proactor模式 1、Reactor 2、Proactor 3、区别 四、简述同步和异步的区别&#xff0c;阻塞和非阻塞的区别 1、同步与异步 2、阻塞与非…

SpringBoot入门:如何新建SpringBoot项目(保姆级教程)

在本文中&#xff0c;我们将演示如何新建一个基本的 Spring Boot 项目。写这篇文章的时候我还是很惊讶的&#xff0c;因为我发现有些java的初学者&#xff0c;甚至工作10年的老员工居然并不会新建一个SpringBoot项目&#xff0c;所以特别出了一篇文章来教大家新建一个SpringBoo…

状态机 XState 使用

状态机 一般指的是有限状态机&#xff08;Finite State Machine&#xff0c;FSM&#xff09;&#xff0c;又可以称为有限状态自动机&#xff08;Finite State Automation&#xff0c;FSA&#xff09;&#xff0c;简称状态机&#xff0c;它是一个数学模型&#xff0c;表示有限个…

Java链接elasticsearch8.14.1

项目需求&#xff0c;需要实现海量数据的聚合、查询。因为职业生涯开发使用springboot微服务架构、Java开发的方式&#xff0c;所以&#xff0c;项目前期准备了elasticsearch、kibana、logstash的集群环境&#xff0c;作为服务端&#xff0c;用于数据的收集、存储&#xff1b;但…

masscan 端口扫描——(Golang 简单使用总结)

1. 前言 最近要做一个扫描 ip 端口的功能 扫描的工具有很多&#xff0c;但是如何做到短时间扫描大量的 ip 是个相对困难的事情。 市场上比较出名的工具有 masscan和nmap masscan 支持异步扫描&#xff0c;对多线程的利用很好&#xff0c;同时仅仅支持 syn 半开扫描&#xff…

Emacs之解决无法输入中文问题(一百四十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

研究生选择学习Android开发的利与弊?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Android的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;产品经理可以学学Axure快…

ForCloud赢战攻防 无惧突发0day漏洞 ForCloud虚实结合快速处置

攻防演练前夕&#xff0c;亚信安全威胁情报中心监测到一个存在于Nacos Derby中的0day漏洞&#xff0c;漏洞利用代码为公开状态&#xff0c;攻击者利用此漏洞可在目标服务器上执行任意代码。 造成的破坏程度&#xff1f;你可能正在使用&#xff01; Nacos&#xff08;Dynamic …

【React】事件绑定:深入解析高效处理用户交互的最佳实践

文章目录 一、什么是事件绑定&#xff1f;二、基本事件绑定三、绑定 this 上下文四、传递参数五、事件对象六、事件委托七、常见事件处理八、优化事件处理 React 是现代前端开发中最受欢迎的框架之一&#xff0c;其组件化和高效的状态管理能力使得构建复杂的用户界面变得更加容…

Java成为最适合中国人体质编程语言的缘由

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c;点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 语言的流行度Java在中国的普及…

被工信部认可的开源软件治理解决方案

近日&#xff0c;工信部网络安全产业发展中心正式发布了“2023年信息技术应用创新解决方案”&#xff0c;开源网安凭借“基于SCA技术开源软件治理解决方案”顺利入选&#xff0c;成为经工信部认可的优秀解决方案&#xff0c;这是开源网安连续两届荣获此荣誉。 工业和信息化部网…

线性表的链式存储结构————循环链表(java)

线性表的链式存储结构————循环链表&#xff08;java&#xff09; 文章目录 线性表的链式存储结构————循环链表&#xff08;java&#xff09;什么是循环链表循环链表的实现结语 嗨&#xff01;收到一张超级美丽的风景图&#xff0c;愿你每天都能顺心&#xff01; 什么是…

【Django】anaconda环境变量配置及配置python虚拟环境

文章目录 配置环境变量配置python虚拟环境查看conda源并配置国内源在虚拟环境中安装django 配置环境变量 control sysdm.cpl,,3笔者anaconda安装目录为C:\ProgramData\anaconda3 那么需要加入path中的有如下三个 C:\ProgramData\anaconda3 C:\ProgramData\anaconda3\Scripts C:…

由bext安装“异常”引出的话题:windows上转义字符的工作原理

由bext安装“异常”引出的话题&#xff1a;Windows上转义字符的工作原理&#xff0c;与ai“闲扯”不经意学习知识点。 (笔记模板由python脚本于2024年07月25日 19:21:13创建&#xff0c;本篇笔记适合喜欢用ai学习的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff…

【反转链表 II】python刷题记录

印象中&#xff0c;这是遍历r2了&#xff0c;还好没放弃。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def reverseBetween(self, head: Optional…

RFID温度标签: 冷链管理迈向智能化、精准化的新时代。

在现代商业和社会发展中&#xff0c;冷链物流扮演着至关重要的角色。它不仅涉及食品、药品等敏感物资的安全运输&#xff0c;更是保障公众健康与福祉的重要环节。随着人们对生鲜冷链需求的日益增长&#xff0c;冷链物流行业也迎来了以物联网技术为主导发展新阶段。我国冷链物流…