使用C#编写STM32对接物联网平台IoTSharp发送遥测数据

在之前的文章中,  我们阐述了如何用C#在STM32上写第一个Hello world  , 有朋友抱怨国内介绍文章, 都是一个 Hello world , 然后再也没有音讯, 写到这里我想提一下我的初心, 那就是告诉所有人C#无所不能, C#可以写单片机, 也可以写Web应用, 也可以写移动应用, 也可以写桌面应用, 又有人提到 nanoFramework 的性能问题, 这点我认为跟MicroPython 等解释型STM32应用一致的, 跟C写的 代码我认为是无法匹敌的!工作中长期使用C来写应用, 这点是公认也是非常有感触的。 那么今天我再介绍一下如何使用 nanoFramework 在STM32下面对接物联网平台IoTSharp !

一、选用开发板

这次我们选择了开发板 ST NUCLEO-F746ZG 

NUCLEO-F746ZG 是ST公司推出的一款针对STM32F7系列设计的Cortex-M7 Nucleo-144开发板,支持mbed,兼容Arduino、还带有ST Zio和 ST Morpho 扩展接口,可连接微控制器的所有周边外设。

开发板基于STM32F746ZGT6设计,开发板还集成了ST-LINK/V2-1仿真下载器(但仅对外提供SWD接口),免除您另外采购仿真器或下载器的麻烦。并且具备Arduino接口,可接入 Arduino 巨大生态系统的各种 Shield 扩展板,让您能够轻松快速增加特殊功能。

之所以选择NUCLEO-F746ZG 是因为 他具有网口, 用C#在STM32上写第一个Hello world  文章中选择的开发板不具有网络功能。 

二、创建应用:

如果看过用C#在STM32上写第一个Hello world  这篇文章, 我们就不必再阐述如何创建项目了, 具体demo 我已经提交到了 https://github.com/IoTSharp/IoTSharp.Edge.nanoFramework , 项目中需要引用到 nanoFramework.M2Mqtt , 我们通过他来连接 IoTSharp的 Mqtt Broker , 首先, 启动IoTSharp 项目 https://github.com/IoTSharp/IoTSharp ,  启动项目https://github.com/IoTSharp/Cicada  , 这里如果有所有问题, 可以到相关项目里面提问, 这里不再阐述, 我们首先在Cicada 中创建一个设备

, 复制粘贴 Token , 

在项目  oTSharp.Edge.nanoFramework 的 Program.cs 中 修改 

private const string _token = "581e918118a34c9faf2b9ede8245be33";//修改合理为Tokenprivate const string   BrokerAddress = "192.168.0.23";//启动IoTSharp的IP地址

三、连接并部署项目至ST NUCLEO-F746ZG 

由于ST NUCLEO-F746ZG 跟之前文章不同 , 一个Micro USB线 即能跟ST-LINK连接, 又支持串口, 还能识别出来存储, 因此一根线搞定一切, 也不需要弄乌七八糟的杜邦线之类的, 因此简单很多。 按照用C#在STM32上写第一个Hello world  的方法, 我们依然需要下载他的  https://bintray.com/nfbot/nanoframework-images-community-targets/ST_NUCLEO144_F746ZG/_latestVersion   解压后, 烧写, 然后VS中Device Explorer 中就可以看到设备, 如下图:

点击VS中的启动, 来启动调试项目

启动后, 你可以看到我们的应用已经启动了, 如下图所示:

, 通过IoTSharp的客户端可以看到上传的遥测数据和客户端属性数据:

关于rpc和属性更新, 我们会在基于此项目基础上进行进一步完善。 

如果有任何相关问题, 大家可以在相关项目提Issuse 或者加入QQ群: 63631741 , 共同学习, 共同进步。 

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

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

相关文章

JavaMVC之JSON

JSON 8.1、什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写…

Java源文件声明规则

源文件声明规则: 当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。 一个源文件中只能有一个 public 类 一个源文件可以有多个非 public 类 源文件的名称应该和 public 类的类名保持一致。例如:源文件中…

Java内置数据类型

内置数据类型 Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 byte: byte 数据类型是8位、有符号的,以二进制补码表示的整数; …

龙芯团队完成CoreCLR MIPS64移植,在github开源

国产龙芯的软件生态之中.NET不会缺席,毕竟 C# 与 .NetCore/Mono 也是全球几大主流的编程语言和运行平台之一,最近一段时间听到太多的鼓吹政务领域不支持.NET, 大家都明白这是某些人为了自己的利益打压使用.NET技术的公司,我今天写…

alibaba实习生代码大赛

文章目录题目Explanation代码(此代码排名13,前十名有奖233333)结果题目 在一个风雨交加的周末下午,大部分人都很不开心,因为出行不变,计划的娱乐活动都取消了,但菜鸟快递员小王却异常高兴&…

Java自动类型转换和强制类型转换(隐含)

自动类型转换 整型、实型(常量)、字符型数据可以混合运算。 运算中,不同类型的数据先转化为同一类型,然后进行运算。 转换从低级到高级。 低 ------------------------------------> 高 byte,short,char—> int —> …

来谈一谈专注力的真相

这是头哥侃码的第205篇原创在日常生活(或工作)中,你有没有遇上过这样的情况?比如你正在跟小伙伴讨论一个技术方案,聊着聊着,突然小A脑袋一抽筋,问你:“老大,咱们这周五晚…

成功陷阱有感

分享一下看到的关于成功陷阱的段落,关于成功陷阱,主要是最近面试字节跳动时,面试官向我推荐的,虽然也没有找到名叫《成功陷阱》的书(后来发现书名应该是叫《能力陷阱》),但看了一些文章 最近听了…

Java访问控制修饰符

访问控制修饰符 Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。 Java 支持 4 种不同的访问权限。 default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。 使用对象:类、接口、变量…

数据结构与算法专题——第三题 最长公共子序列

一:作用最长公共子序列的问题常用于解决字符串的相似度,是一个非常实用的算法,作为码农,此算法是我们的必备基本功。二:概念举个例子,cnblogs这个字符串中子序列有多少个呢?很显然有27个&#x…

Java实现两个递增有序链表合并成一个递增有序链表和两个非递减有序链表合成一个非递增有序链表

代码如下: package sjjgniub;import java.util.LinkedList; import java.util.Scanner;SuppressWarnings("all") public class LinkList {private class Node{int data;Node next;public Node(){}public Node(int data){this.data data;next null;}}Node head nu…

职场PUA到底有多可怕?

阅读本文大概需要 5.2分钟。“小张,好好干啊,明年一定给你加薪!” 。从小张入职这家公司起,这是老板对小张第三次这么说了。小张每天干到晚上12点,任劳任怨,虽然一直没涨过工资,但是老板的不断认…

SQL5 将查询后的列重新命名(数据库的几种去重方法)

牛客网题目 描述 题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。 示例:user_profile 根据示例,你的查询应返回以下结果: 示例1 输入: drop table if exists user_profile; CREA…

数据结构与算法专题——第二题 优先队列

前段时间玩小爬虫的时候,我把url都是放在内存队列里面,有时我们在抓取url的时候,通过LCS之类的相似度比较,发现某些url是很重要的,需要后端解析服务器优先处理,针对这种优先级比较大的url,普通的…

SQL9 查找除复旦大学的用户信息(数据库否定语句写法)

描述 题目:现在运营想要查看除复旦大学以外的所有用户明细,请你取出相应数据 示例:user_profile 根据输入,你的查询应返回以下结果: 示例1 输入: drop table if exists user_profile; CREATE TABLE use…

SQL10 用where过滤空值练习

描述 题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户明细数据。 示例:user_profile 根据输入,你的 查询应返回以下结果: 示例1 输入…

数据结构与算法专题——第一题 Bitmap算法

在所有具有性能优化的数据结构中,我想大家使用最多的就是hash表,是的,在定位查找场景上具有O(1)的常量时间,多么的简洁优美,但是在特定的场合下:①:对10亿个不重复的整数进行排序。②&#xff1…

Java阻止继承(sealed,permits)

阻止继承 正常情况下,只要某个class没有final修饰符,那么任何类都可以从该class继承。 从Java 15开始,允许使用sealed修饰class,并通过permits明确写出能够从该class继承的子类名称。 例如,定义一个Shape类&#xf…

SQL15 查看学校名称中含北京的用户(通配符使用)

描述 题目:现在运营想查看所有大学中带有北京的用户的信息,请你取出相应数据。 示例:用户信息表:user_profile 根据示例,你的查询应返回如下结果: 示例1 输入: drop table if exists user_p…

Telegraf和Grafana监控多平台上的SQL Server

问题SQL Server在很多企业中部署在多个平台上(Windows,Linux和Container),需要一种能支持多平台的解决方案用于收集和展示相关的监控指标。我选择企业中比较流行的监控展示工具Grafana和监控指标收集工具Telegraf进行实现。这也是为了方便与企业中已经在存在监控平台…