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(, );
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, , 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(, );
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. 将源码中的设备地址和秘钥替换成自己云端中去,程序中有两个的地方都要替换
云端的:

程序中的:

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

2.

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

4. 得到云端数据之后那就好办了,用我们以前学的知识来进行制作我们的应用软件
忘记了的可以看。
001_C#我的第一个串口上位机软件
/********************************神奇的分割线********************************/

002转载----C# 基于OneNet 的物联网数据通信的更多相关文章
- 转载:基于Redis实现分布式锁
转载:基于Redis实现分布式锁 ,出处: http://blog.csdn.net/ugg/article/details/41894947 背景在很多互联网产品应用中,有些场景需要加锁处理,比如 ...
- (转载)Eclipse基金会涉足物联网,M2M标准是否已获东风?
摘要:相信大部分的开发者都使用过Eclipse IDE,然而Eclipse基金会有的不只是集成开发环境,其托管的开源项目已达250余个.近日该基金会宣布启动物联网项目,旨在推动M2M标准的前行! Ec ...
- GPS部标监控平台的架构设计(八)-基于WCF的平台数据通信设计
总体来讲,GPS部标平台的软件开发是一个对网络通信和应用程序之间通信的技术应用密集型的开发工作,也是有一定设计技术含量的工作. 1.设计通信接口 在设计的时候,根据职责划分,拆分成不同的应用子系统,对 ...
- 【转载】基于rasa的对话系统搭建(上)
文章介绍使用rasa nlu和 rasa core 实现一个电信领域对话系统demo,实现简单的业务查询办理功能,更完善的实现需要进一步数据的收集.demo基于玩具数据集,可以达到下面的效果: Bot ...
- 转载:基于HALCON的模板匹配方法总结
转载链接: http://blog.csdn.net/b108074013/article/details/37657801 很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总 ...
- 转载 vue-awesome-swiper - 基于vue实现h5滑动翻页效果
说到h5的翻页,很定第一时间想到的是swiper.但是我当时想到的却是,vue里边怎么用swiper?! 中国有句古话叫:天塌下来有个高的顶着. 在前端圈里,总有前仆后继的仁人志士相继挥洒着热汗(这里 ...
- Obloq模块:基于ESP8266的物联网模块
OBLOQ 物联网模块 OBLOQ模块是DFRobot公司开发的一款基于ESP8266芯片的物联网通信模块.模块使用串口(TTL UART)和Arduino(或者其他单片机)通信,支持MQTT,HTT ...
- (转载)基于比较的少样本(one/few-shoting)分类
基于比较的方法 先通过CNN得到目标特征,然后与参考目标的特征进行比较. 不同在于比较的方法不同而已. 基本概念 数据集Omniglot:50种alphabets(文字或者文明); alphabet中 ...
- (转载)基于Linux C的socket抓包程序和Package分析
转载自 https://blog.csdn.net/kleguan/article/details/27538031 1. Linux抓包源程序 在OSI七层模型中,网卡工作在物理层和数据链路层的MA ...
随机推荐
- css中字体常用单位px、em、rem和%的区别及用法总结
一.px.em.rem和%的定义 1.px(像素) px单位的名称为像素,它是一个固定大小的单元,像素的计算是针对(电脑/手机)屏幕的,一个像素(1px)就是(电脑/手机)屏幕上的一个点,即屏幕分辨率 ...
- (二十六)JavaBean
一.定义 1 JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法暴露给其它程序 ...
- 【微信支付】公众号 JSAPI支付 HTML5(使用MUI前端框架)+WebApi 实现流程
必要参数: 1) AppID,AppSecret : 在微信公众号后台管理—>(菜单栏)开发 —> 基本设置 2)商户号 :在微信公众号后台管理—>(菜单栏)微信支 ...
- MYSQL编码转换的问题latin1转utf8
1.先导出 mysqldump --default-character-set=latin1 --create-options=false --set-charset=false -u root - ...
- Genymotion上运行ARM架构Android项目
问题 Genymotion是x86的模拟器,在集成一些第三方的SDK时需要添加一些放在armeabi.armeabi-64文件夹下面的.so文件,这些文件在arm架构下才能运行.这时模拟器就不能用了. ...
- C++ DLL debug版本在其他PC上缺少依赖的处理方式
1.正常情况提供给其他人的都是Release版本DLL 2.在需要提供Debug版本时,目标机器上可能会缺少环境,或者和生成DLL的环境不匹配导致DLL无法加载,提示DLL无法找到. 3.使用DLL依 ...
- 整理一下Promise 的用法
Promise 的定义 Pormise是JS的异步编程的一种解决方案,在ES6将其写进了语言标准,提供了原生的Promise对象. Promise简单来理解就是一个容器,里面存放着某个未来才会结束的事 ...
- SourceTree撤销commit
参考链接:http://blog.csdn.net/gang544043963/article/details/71511958 重点是:选中提交之前的版本,再进行撤销回退
- ajax简单页面
简单的注册页面运用ajax 主页面 <head><meta http-equiv="Content-Type" content="text/html; ...
- 树莓派二:apt-get出错、蓝牙、汉化、输入法
用apt-get install一个软件的时候出现了一个错误: E: Encountered a section with no Package: header E: Problem with Mer ...