我是靠谱客的博主 爱笑草莓,最近开发中收集的这篇文章主要介绍002转载----C# 基于OneNet 的物联网数据通信,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

002转载----C# 基于OneNet 的物联网数据通信
作者:lnwin521
来源:CSDN
原文:https://blog.csdn.net/lnwin521/article/details/84549606
(遇到404情况请复制粘贴后再打开)
版权声明:本文为博主原创文章,转载请附上博文链接!

首先非常感谢这位大佬的文章,对于连接onenet很有用。

C# 基于OneNet 的物联网数据通信

本篇简介包含两部分:1、数据向OneNet平台的上传;2、数据从OneNet平台的下载。

1、数据向OneNet平台的上传

1.1 上传数据采用POST方式:

public void Post()
        {
            pictureBox1.BackColor = Color.Gray;
            string url = "http://api.heclouds.com/devices/503683965/datapoints?";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            SetHeaderValue(request.Headers, "api-key", "dTOsflbiN1YGgUjIgNYjY3TBigw=");//设备API地址和 首部参数
            request.Host = "api.heclouds.com";
            request.ProtocolVersion = new Version(1, 1);
            string Cod = "{"datastreams":[{"id":"temperature","datapoints":[{"value":"" + textBox4.Text + ""}]},{"id":"RH","datapoints":[{"value":"" + textBox5.Text + ""}]},{"id":"state","datapoints":[{"value":"" + textBox3.Text + ""}]}]}";
            byte[] data = Encoding.UTF8.GetBytes(Cod);
            request.ContentLength = data.Length;
            using (Stream reqStream = request.GetRequestStream())
            {
                reqStream.Write(data, 0, data.Length);
                reqStream.Close();
            }

            HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
            Stream stream = resp.GetResponseStream();
            //获取响应内容 
            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                textBox6.Text = reader.ReadToEnd();
                pictureBox1.BackColor = Color.Lime;
            }
            // return result;
        }//面向OneNet的发送

1.2 HTTP协议报文头编辑函数

public static void SetHeaderValue(WebHeaderCollection header, string name, string value)// HTTP协议报文头加入

        {
            var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", BindingFlags.Instance | BindingFlags.NonPublic);
            if (property != null)
            {
                var collection = property.GetValue(header, null) as NameValueCollection;
                collection[name] = value;
            }
        }

2、数据从OneNet平台的下载

2.1 数据获取采用Get模式

private void Get(object sender, EventArgs e)//连接服务器并获取数据
        {
            
            string url = "http://api.heclouds.com/devices/503683965/datapoints?";//设备地址
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "GET";
            SetHeaderValue(request.Headers, "api-key", "dTOsflbiN1YGgUjIgNYjY3TBigw=");//设备API地址和 首部参数
            request.Host = "api.heclouds.com";
            request.ProtocolVersion = new Version(1, 1);
            request.ContentType = "text/html;charset=UTF-8";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            textBox5.Text = retString;
           

        }

2.2 HTTP协议报文头编辑

public static void SetHeaderValue(WebHeaderCollection header, string name, string value)// HTTP协议报文头加入

        {
            var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", BindingFlags.Instance | BindingFlags.NonPublic);
            if (property != null)
            {
                var collection = property.GetValue(header, null) as NameValueCollection;
                collection[name] = value;
            }
        }

在这里插入图片描述
之前自己做的一个小程序,可以参考:https://download.csdn.net/download/lnwin521/10808227

/神奇的分割线/

那么当下载原文大佬的资源后,我们得到两个C#的源码
在这里插入图片描述

  1. 分析了Monitor里面的源码,在onenet中使用的是HTTP协议

  2. 将源码中的设备地址和秘钥替换成自己云端中去,程序中有两个的地方都要替换

云端的:
在这里插入图片描述
程序中的:在这里插入图片描述

  1. 将源码中的一部分程序注销掉,因为我们云端没有这个东西,不然的话程序运行会出现错误
    在这里插入图片描述

  2. 将源码注销之后运行点击自动运行就OK了,就可以看到我们云端的数据了

  3. 得到云端数据之后那就好办了,用我们以前学的知识来进行制作我们的应用软件

忘记了的可以看。

001_C#我的第一个串口上位机软件
/神奇的分割线/

在这里插入图片描述

最后

以上就是爱笑草莓为你收集整理的002转载----C# 基于OneNet 的物联网数据通信的全部内容,希望文章能够帮你解决002转载----C# 基于OneNet 的物联网数据通信所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部