( .NET Core 七龙珠 )

一、IOT 平台的支持

先看国内优秀的云计算IOT平台(不含QQ互联、小米IOT等针对特定产品的开发者平台,仅列出部分云计算厂商的IOT平台)

阿里云 IOT

https://iot.aliyun.com/

华为物联网

https://developer.huawei.com/ict/cn/site-iot-next

腾讯云 物联网通讯

https://cloud.tencent.com/product/iothub

百度云 天工

https://cloud.baidu.com/solution/iot/index.html

中国移动 OneNET

https://open.iot.10086.cn

说到 IOT ,要做开发,有多方面的,模式也不同:设备认证、设备接入、网关、设备管理、订阅、数据管理与分析、应用开发等。这里单纯说嵌入式设备的开发。

这几家平台中,仅有阿里云提供 C# 的设备端 SDK,并且不开源、不能跨平台 (只能在 .NET Framework 4.7下使用,别问我怎么知道),设备接入方式是 HTTP/2。对于 C#/.NET 友好度最高的应该就是阿里云了,腾讯云的 IOT 相对来说搞得不太像样。

提供的设备端接入和应用开发,以 C 语言和 Python 为主(C语言是嵌入式开发之王),通讯协议有 HTTPS、MQTT/MQTTS 等。

阿里云 IOT 设备端 SDK 文档

https://help.aliyun.com/document_detail/101488.html?spm=a2c4g.11186623.2.26.554a5b3eaMSYnh#concept-xlx-dzz-ggb

阿里云 IOT 云端 SDK 文档

https://help.aliyun.com/document_detail/63638.html?spm=a2c4g.11186623.6.678.1ede4c07i0qvHR

国外的话,就只列举 亚马逊云 和 Azure 云。

https://www.amazonaws.cn/iot/

https://www.azure.cn/zh-cn/

他们有中国区、国际区之分,其中微软的 Azure 中国区由世纪互联运营(很不舒服)。

看图,说明亚马逊也不支持 C#,嵌入式仅 C 语言,其它方面也不支持 C#/.NET。

只有 Azure 大量、无保留地支持 .NET。

二、嵌入式设备

物联网设备的设备端,不限于例如树莓派、手表、无人机、蓝牙之类的设备,包括手机、手表、电脑等都可以当作 IOT 设备端。

这里只讨论 ARM32/64 嵌入式开发板,举个栗子,树莓派、国产香橙派。

操作系统有 Win 10 IOT Core、Ubuntu、Debain 等。

要买就买树莓派,别买别的牌子,不然你得哭。

1 系统支持,

树莓派支持大量系统,并且系统内核较新,装 .NET Core SDK 和 Runtime,几乎一套直接安装完成。

国产香橙派呢,就是个坑货,系统内核较旧,GCC版本也低,驱动各种不兼容,系统也没几个能正常使用,而且发热量特大。

不久前我就买了 Orange PI 3,安装 .NET Core SDK 2.2,要先更换 apt 源,然后更新 apt 列表,装上新版本的 gcc (.NET Core 需要 gcc 大于 5.2以上,Debain 系统必须大于等于9 )。

(好想砸了这辣鸡板子,但是毕竟花了 300 大洋呢。。。)

2 是资源文档

树莓派流行度很高,很多软件都是支持树莓派的,与嵌入式有关的技术几乎都会提及树莓派,你不怕没有学习资料,不怕没有相应的传感器。

其它就不赘述了。

也只有内存较大、CPU较大的开发板可以使用 .NET 开发的程序,底层 C 语言才是王道,特么一个单片机得内存才那么几KB,光 ARM 版本的 .NET Core 就需要至少 300MB 的内存。

三、目前笔者了解到的 .NET 开发嵌入式应用方式

1,使用 C/C++生成的动态链接库

笔者文章 -- 跨平台开发 -- C# 使用 C/C++ 生成的动态链接库

https://www.cnblogs.com/whuanle/p/10582654.html

通过使用 C/C++ 封装的接口,控制 GPIO (就是板子的那些针脚) 等,这一方式只能在Linux下使用。开发C#程序不需要直接跟底层打交道,通过预留的 C/C++ 接口,间接操控。C/C++ 写好各类通讯协议、逻辑处理、电路控制等,与硬件打交道,封装好 .SO 库,给 C# 使用。这样开发项目时无需关心底层实现,专注于业务开发。

笔者有篇文章 .NET Core 跨平台 串口通讯 ,用到 SerialPortStream 库,这个库可以在 Windows/Linux 下使用,如果要在 Linux 下使用,必须先把官方用 C 写的项目编译、生成动态链接库放到项目里再运行,底层使用 C语言,实现与通讯方式无关的应用开发。

2,使用 Windows 10 IoT Core

就是说使用 Windows 10 IoT Core 系统,在此系统上进行开发。

好处:

  太子殿下

先来几个图

一套 C# 就可以搞好各方面的开发,官方直接提供类库操作设备的各种接口、针脚,你无需掌握大量的硬件知识即可快速上手项目,直接使用 C#/.NET 与各种传感器交互,Visual Studio 宇宙第一 IDE 的开发支持,对接优秀的云计算平台 Azure、优秀的生态支持、可以使用传统Wpf等软件界面、维护方便、可视化... ...
以往使用开发板需要掌握开发嵌入式设备,WIFI、蓝牙、GPIO、网卡、ARM32/64、电路等协议、硬件知识,使用C语言开发底层,现在使用 C# 就能一套搞定。

3,mono

笔者在学习使用开发板时,发现有些库可以在 mono 上使用,使用 Monodevelop 可以开发 C# 项目,管控 GPIO,笔者对 mono 不了解,没有去实际实现。

.NET Core 实现嵌入式开发,就笔者目前的菜水平来说,没发现 .NET Core 开发嵌入式软件的优势。

其一,.NET Core (目前 最新 ARM 2.2.105) 不能直接使用传感器。这个可能是笔者水平不够,暂时没有发现有在 Linux 下使用 .NET Core 控制传感器、使用 GPIO 等的实例。

当然,有在Windows 10 IOT Core 上开发 .NET Core 项目使用  GPIO 的实例,不过是使用 Windows.Devices.Gpio ,并且不是在 Linux下。

其二,没几个云计算厂商支持 .NET ,这里的支持,是指在设备中支持 .NET 开发接入 IOT 平台,像树莓派这样功能完整、硬件配置齐全的设备可以直接连接服务器,其它一些不具备网卡、CPU和内存非常小的设备,只能使用C语言开发、只能通过网关接入IOT平台。就算设备接入底层搞好了,要接入IOT平台,要有API、SDK、文档呀,.NET 的资料真的非常非常少。

个人感觉 .NET Core 在云计算、Docker、网站开发等方面发展的很好,嵌入式方面不太行。当然这个只是个人感觉。。。

如果使用 Windows IOT Core 的话,是 .NET Core 还是 .NET Framework 都不重要了。

期待 .NET Core  3 正式版的发布。

- - - - - - - -

以上内容仅为个人理解,笔者现在是大三学生,经验不足,以上内容有错误或者观点不对,恳请各位大神指点一二。

要是说错了,别笑我哇。。。

- - - - - - - -

目前正在 深圳市敢为软件技术有限公司 实习,公司从事

物联网技术的研发;云计算技术的研发;

大数据技术的技术开发;区块链技术的技术开发;

人工智能技术的技术开发;计算机软件的技术开发;

计算机软件系统集成;数据处理;信息技术咨询;

信息技术开发;计算机软硬件、网络技术的研发等。

现在公司需要大量 .NET Core 的小伙伴,感兴趣的的同学赶紧加我吧~可以内推噢~~~

微信 whuanlex

原文链接:https://www.cnblogs.com/whuanle/p/10589496.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

.NET Core / C# 开发 IOT 嵌入式设备的个人见解相关推荐

  1. 开发IOT WiFi设备时,需要测试的几种情况

    1,规律性的给路由器断电上电数次,测试联网设备是否有无法连接上路由器的情况(最后一次路由上电后),测试联网设备是否有 死机的情况,测试设备是否有无法连接上服务器的情况(路由器最后一次上电后,且有外网) ...

  2. 《嵌入式设备驱动开发精解》——导读

    前言 嵌入式设备驱动开发精解 本书的编写主要是针对从事嵌入式软件开发人员.本书的内容主要涵盖ARM CPU以及各种常用外部设备驱动开发的方方面面,包括各种硬件接口.硬件接口协议说明以及各种外设的使用及 ...

  3. 嵌入式设备的发展—应对复杂的开发设计挑战

    在物联网出现之前,嵌入式设备的设计相对简单.随着智能手机的推出,我们的设备更加智能化.可升级并可通过互联网访问.安全不是可选的–如果不认真对待安全,数据.品牌声誉和收入流都将受到影响.此外,嵌入式系统 ...

  4. IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解

    IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解 0.前言 一.光学传感器模块: 1. 光敏传感器模块: 2. 红外避障模块 3. 循迹传感器模块 4. U型光电传感器模块 5. 红外接收模 ...

  5. esp32语音控制_乐鑫发布针对物联网嵌入式设备AI语音麦克风阵列开发板

    乐鑫信息科技(股票代码:688018)发布 AI 语音麦克风阵列开发板 ESP32-Korvo .这是一款针对物联网嵌入式设备的 AI 语音开发板,基于乐鑫的旗舰芯片 ESP32,搭载多麦克风阵列,能 ...

  6. 手把手教你开发IOT设备

    手把手教你开发IOT设备 1.概述 IOT设备的开发是基于rt-thread rtos实现.rt-thread是一个国产RTOS,它是一个RTOS,但又不仅仅是RTOS,支持大量的芯片,驱动,还包含大 ...

  7. 嵌入式设备进行http socket开发流程

    嵌入式设备进行http socket开发流程 最近接触了一个http开发的项目,在这里记录一下主要流程. 下位机:arm linux 上位机:pc web服务器 这里在与web服务器通信时,没有使用第 ...

  8. 机器学习 部署 嵌入式_如何在移动和嵌入式设备上部署机器学习模型

    机器学习 部署 嵌入式 介绍 (Introduction) Thanks to libraries such as Pandas, scikit-learn, and Matplotlib, it i ...

  9. 驱动开发基础知识——设备树

    BSP开发工程师[原来BSP就是那些被指臃肿的文件啊 BSP的出生 Linux经过不断的发展,原先嵌入式系统的三层结构逐步演化成为一种四层结构. 这个新增加的中间层次位于操作系统和硬件之间,包含了系统 ...

最新文章

  1. seaborn可视化水平箱图(Horizontal Boxplot in Python with Seaborn)
  2. 2014北京三险一金缴存比例
  3. pycryptodom的源码安装
  4. Eliminate Witches!【2011年北京赛区正赛赛题-2】
  5. 5.cocos2dx中关于draw绘图,声音和音效,预加载,播放与停止Vs暂停和恢复,音量控制
  6. 夺命雷公狗---DEDECMS----26dedecms面包屑导航的实现
  7. 一文说通异步 LINQ
  8. iOS性能优化篇 —— 耗电优化总结
  9. java流程控制both_java web面试题
  10. python基础学习笔记4--抽象
  11. python logging日志分割_Python3测井曲线切割,python3logging,日志
  12. 微弱信号检测matlab代码,微弱信号检测方法研究
  13. Java程序员的第一个Python小程序:京东畅销书榜爬虫
  14. PMP-PMBOK(第六版)--49个过程ITTO汇总
  15. linux搜狗输入法皮肤,Ubuntu 12.04下安装搜狗拼音 + 安装搜狗皮肤
  16. 太牛了!B 站 UP 主开发会写高考作文的 AI
  17. MFC对话框/控件下属性中的事件变成空白?
  18. C#操作excel的打印分页符问题
  19. windows+cmd关闭伽卡他卡学生端
  20. 小白都能学会的python+opencv,带你从人脸识别做到车牌识别,成为别人口中赞叹的高手!

热门文章

  1. ea 备份码是什么_EA的原始访问是什么,值得吗?
  2. 百度php editor图片上传到其他盘,百度编辑器Editor图片独立上传
  3. 基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口
  4. HDU1232 畅通工程
  5. 全局照明算法基础——从辐射亮度到渲染方程
  6. 浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod)
  7. php中使用exec,system等函数调用系统命令
  8. java 多线程原理(一)
  9. 陈睿学长在CUIT建校70周年校庆上的演讲
  10. 社区 正式发布了跨平台的 CoreWCF 0.2.0