C# NanoFramework WIFI扫描、连接和HttpWebRequest 之 ESP32

可喜可贺新板子终于到了,啥也不说,赶紧搞起来。

ESP32的主要功能就是WIFI,有了WIFI ,就可以直接连接家里的WIFI路由器啥的,直接连接到外网了,这个时候,它就相当于是一个小型的电脑或手机,这个时候,连外网就很方便了。

ESP32的WIFI主要有三种模式

  1. 1. 是AP模式(WIFI,路由器模式),就是让它自己成为路由器或者外地,对外提供WIFI服务,其他设备可以连接。

  2. 2. 是STA模式(就是电脑或者手机的模式),连了家里的WIFI即可。

  3. 3. 混合模式

但是,对于 NanoFramework的Wifi, STA 还没调通,在看。但是,AP模式是没啥子问题,先搞AP模式。

搞一个 扫描全部WIFI的功能和一个WIFI 连接功能 和一个获取网页信息的功能 httprequest 。

主要是具有针对性,不迷路。

WifiScan

记得先Nuget包

Install-Package nanoFramework.System.Device.Wifi -Version 1.4.0.22

代码比较简单,直接看代码

public class Program{public static void Main(){try{//获取WIFI 适配器WifiAdapter wifi = WifiAdapter.FindAllAdapters()[0];// 设置网络改变事件wifi.AvailableNetworksChanged += Wifi_AvailableNetworksChanged;// 循环扫描 WIFI列表while (true){Debug.WriteLine("开始扫描WIFI");wifi.ScanAsync();Thread.Sleep(30000);}}catch (Exception ex){Debug.WriteLine("message:" + ex.Message);Debug.WriteLine("stack:" + ex.StackTrace);}Thread.Sleep(Timeout.Infinite);}/// <summary>/// 扫描完成遍历/// </summary>private static void Wifi_AvailableNetworksChanged(WifiAdapter sender, object e){Debug.WriteLine("获取WIFI有效信息");WifiNetworkReport report = sender.NetworkReport;foreach (WifiAvailableNetwork net in report.AvailableNetworks){Debug.WriteLine($"WIFI 名称(SSID):{net.Ssid},  MAC地址(BSSID) : {net.Bsid},  信号强度(rssi) : {net.NetworkRssiInDecibelMilliwatts.ToString()},  信号强度(signal) : {net.SignalBars.ToString()}");}}}

查看输出的结果

可以看到直接获取我们想要的信息。

930677b61684614094e152c5009955af.png

WIFI 连接功能

直接看代码

public class Program{const string MYSSID = "Myhome";const string MYPASSWORD = "1213141516";public static void Main(){try{var success = WifiNetworkHelper.ConnectDhcp(MYSSID, MYPASSWORD, requiresDateTime: true, token: new CancellationTokenSource(60000).Token);if (success){Debug.WriteLine($"连接状态 {success}");Debug.WriteLine($"我们获取到的最新时间: {DateTime.UtcNow.AddHours(8)}");}else{Debug.WriteLine($"发生了异常");}}catch (Exception e){Debug.WriteLine($"{e.Message}");}Thread.Sleep(Timeout.Infinite);}}

已经连接上了,也获取了最新的时间,但是,这个时间,其实是有时区的,我们要增加8个小时才对。

效果如下:

544b40b842c1ce54f535855baedc86d1.png

Wifi HttpRequest

public class Program{const string MYSSID = "Myhome";const string MYPASSWORD = "1213141516";public static void Main(){try{var success = WifiNetworkHelper.ConnectDhcp(MYSSID, MYPASSWORD, requiresDateTime: true, token: new CancellationTokenSource(60000).Token);if (success){Debug.WriteLine($"连接状态 {success}");Debug.WriteLine($"我们获取到的最新时间: {DateTime.UtcNow.AddHours(8)}");}else{Debug.WriteLine($"发生了异常");}X509Certificate rootCACert = new X509Certificate(Resource.GetBytes(Resource.BinaryResources.digicertglobalrootca));//请求地址,并获取信息var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://kesshei.github.io/esp32.html");httpWebRequest.Method = "GET";httpWebRequest.SslProtocols = System.Net.Security.SslProtocols.Tls12;httpWebRequest.HttpsAuthentCert = rootCACert;using (var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse()){StreamReader sr = new StreamReader(httpWebResponse.GetResponseStream());var data = sr.ReadToEnd();Debug.WriteLine(">>>>>>>>>>>>>");Debug.WriteLine("获取请求完毕");Debug.WriteLine($"获取到: {data}  数据长度:{data.Length}");}}catch (Exception e){Debug.WriteLine($"{e.Message}");}Thread.Sleep(Timeout.Infinite);}}

这里面要注意的有一点,就是http与https的区别。

如果 不需要以下两行

httpWebRequest.SslProtocols = System.Net.Security.SslProtocols.Tls12;
httpWebRequest.HttpsAuthentCert = rootCACert;

那么,只能http,我这里是这样子的。

要想https,那么,只有 增加SSL的支持和增加一个证书。

运行结果

b4d10e20b4935e595782a1da601b58f1.png

总结

终于把ESP32 WIFI这个最重要的环节搞了。这个不搞,那就没法玩了。现在应该算是入门了。

大佬们,好好玩。

代码地址

https://github.com/kesshei/NanoFreamworkWifiDemo.git

gitee(500 异常,后期补发)

一键三连呦!,感谢大佬的支持,您的支持就是我的动力!

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

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

相关文章

【ArcGIS微课1000例】0011:ArcGIS空间查询(按位置选择Select by Location)完全案例详解

利用按位置选择工具,您可以根据要素相对于另一图层要素的位置来进行选择。例如,如果您想了解最近的洪水影响了多少家庭,那么可以选择该洪水边界内的所有家庭。 您可使用多种选择方法,选择与同一图层或其他图层中的要素接近或重叠的点、线或面要素。 文章目录 1、点—点查询…

[转]收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation

原文链接&#xff1a;http://www.open-open.com/lib/view/open1411443332703.html 描述&#xff1a;收集android上开源的酷炫的交互动画和视觉效果。 1.交互篇 2.视觉篇 交互篇 1.SlidingUpPanelLayout 项目介绍&#xff1a;他的库提供了一种简单的方式来添加一个可拖动滑动面板…

EntityFramework用法探索(三)CodeFirst流畅API

Code First Fluent API&#xff0c;使用流畅API来定义模型映射。 同样使用与上文 Database First 模式相同的例子&#xff0c;假设需要设计一个零售系统&#xff0c;我们先构建一个 Customer 类。 1 public class Customer 2 { 3 public long Id { get; set; } 4 p…

js浏览器对象模型(BOM)

浏览器对象模型(Browser Object Model,BOM)&#xff1a;浏览器为js提供的对象集合。 1 windows对象 windows对象&#xff1a;表示浏览器的框架以及与其相关的内容&#xff0c;比如滚动条和导航栏图标等等。或者说windows对象就代表浏览器本身。windows对象是个全局对象&#xf…

Hello Playwright:(8)等待页面加载

在我们前面的文章中&#xff0c;我们始终使用await page.GotoAsync(url);加载页面&#xff0c;我们的目的是等待足够长的时间让页面上的元素出现。但是&#xff0c;我们更希望永远不要因为等待浪费任何时间。WaitUntilGotoAsync方法的定义如下&#xff1a;Task<IResponse?&…

【ArcGIS微课1000例】0012:ArcGIS创建及连接ArcSDE企业级地理数据库实例

文章目录 实验材料实验过程创建企业级数据库连接企业级数据库创建要素类要素入库实验材料 ArcGIS:版本为10.2Server.ecp:版本为10.2SQL Server:版本为2008实验过程 创建企业级数据库 企业级地理数据库的创建需要通过工具箱来实现。 数据库平台:SQL Server 实例:localhos…

C语言试题172之实现冒泡排序算法

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:实现冒泡…

Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染

Qt移动应用开发&#xff08;八&#xff09;&#xff1a;实现跨平台的QML和OpenGL混合渲染 上一篇文章讲到了利用C这个桥梁&#xff0c;我们实现了QML和Java的交互。Qt 5大力推崇的QML/JS开发&#xff0c;让轻量、高速开发的QML/JS打头阵&#xff0c;让重量的C撑腰&#xff0c;差…

【ArcGIS微课1000例】0013:ArcGIS创建色带图例(以GlobeLand30土地覆盖数据为例)

本文以GlobeLand30土地覆盖数据(2010年)为例,讲解在ArcGIS中创建色带图例的方法。 案例数据: 色带图例: 创建过程: 选择2010年数据,点击添加到右侧的图例项。 在图例向导里面,删除图例标题,点击下一步。

使用.NET IoT驱动超声波测距传感器

背景最近买的一堆传感器到货了&#xff0c;先来把玩一下超声波测距传感器。超声波传感器一般用于机器人&#xff0c;小车的避障&#xff0c;物体的测距&#xff0c;液位检测&#xff0c;停车检测等领域。HC-SR04知识回顾开始之前我们先复习一下高中的物理知识。原理通过上图的原…

2019-nCoV 全国新型肺炎疫情每日动态趋势可视图

传染源: 野生动物&#xff0c;可能为中华菊头蝠 病毒: 新型冠状病毒 2019-nCoV 传播途径: 经呼吸道飞沫传播&#xff0c;亦可通过接触传播 易感人群: 人群普遍易感。老年人及有基础疾病者感染后病情较重&#xff0c;儿童及婴幼儿也有发病 潜伏期: 一般为 3~7 天&#xff0c;最长…

【ArcGIS遇上Python】ArcGIS Python将多个文件夹内的分幅数据整合到同一个文件夹内——以Globeland30数据为例

文章目录 WinRAR解压缩ArcGIS Python批处理从Glabeland30官网下载的全球地覆盖数据包括3年(2000、2010、2020),每一年都是按图幅存储的tif格式栅格数据。以2000的数据为例,全球共812个图幅,每一个图幅对应一个压缩包,如下图所示。 WinRAR解压缩 在进行数据预处理时,必须…

Docker Compose 安装 Superset

前言动手学 dockerSuperset 是一个强大的在线 SQL 查询编辑工具&#xff0c;同时也是一个轻量级的 BI 工具&#xff0c;今天我们就来动手学一下用 docker compose 安装 Superset。安装动手学 docker安装 git 并克隆项目&#xff1a;yum install git -ygit clone https://github…

[转]再见 NoSQL!

为解决大规模数据集合多重数据种类带来的挑战&#xff0c;NoSQL 应运而生&#xff0c;但现在却也遇到了诸多问题&#xff0c;本文作者 Rick Negrin&#xff0c;曾在微软工作 12 年&#xff0c;并在 SQL Server 团队度过大部分光阴&#xff0c;他提出&#xff0c;是时候「和 NoS…

【ArcGIS Pro微课1000例】0008:ArcGIS Pro加载不同来源的在线底图数据

ArcGIS Pro可以很方便的选择不同来源的在线底图数据,如中国地图彩色版、各种形式的天地图等。 打开ArcGIS Pro,点击左下角的【设置】。 点击【选项】。 ArcGIS Pro提供了三种形式的底图:组织的默认底图、自定义底图<

php+mysql实现数据分批插入

上周需要将云端的数据有条件的录入到mysql中&#xff0c;最开始是使用遍历数据然后一条条的插入的笨方法&#xff0c;结果速度慢的要死&#xff0c;所以又随便写了个笨方法2.0&#xff0c;记录一下自己菜鸟的成长历程。同时这也是在博客园的第一篇文章&#xff0c;目的仅仅是单…

[转]敏捷开发之Scrum扫盲,及敏捷开发中XP与SCRUM的区别

敏捷开发之Scrum扫盲篇 现在敏捷开发是越来越火了&#xff0c;人人都在谈敏捷&#xff0c;人人都在学习Scrum和XP… 为了不落后他人&#xff0c;于是我也开始学习Scrum&#xff0c;今天主要是对我最近阅读的相关资料&#xff0c;根据自己的理解&#xff0c;用自己的话来讲述S…

最流行的 .NET 反编译工具合集

编译和反编译 .NET 中的编译是把开发人员写的 C# 代码转化为计算机可理解的代码的过程&#xff0c;也就是中间语言代码&#xff08;IL代码&#xff09;。在这个过程中&#xff0c;C# 源代码被转换为可执行文件&#xff08;exe或者dll 文件&#xff09;。反编译则和编译相反&am…

三款国产计算机日常办公体验对比

近年来&#xff0c;信创事业开展的如火如荼&#xff0c;多款CPU和操作系统均在机关单位和央企批量应用。目前&#xff0c;信创电脑主要应用场景是日常办公&#xff0c;特别是对机关单位而言&#xff0c;文档、表格、PPT、PDF、浏览器等软件堪称办公必备。下面&#xff0c;我们就…

[转]Flask --- 框架快速入门

From&#xff1a;http://docs.jinkan.org/docs/flask/quickstart.html Flask 用户指南&#xff1a;http://docs.jinkan.org/docs/flask/index.html w3cschool.cn 的 Flask 教程&#xff1a;https://www.w3cschool.cn/flask/ 《Flask Web开发&#xff1a;基于Python的Web应用…