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、点—点查询…

C语言试题171之实现希尔排序算法

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

通过纯js将网页保存为pdf&#xff0c;A4分页&#xff0c;无需服务端参与 1.引入js库文件&#xff1a; <script src"../static/jspdf/html2canvas.js"></script><script src"../static/jspdf/jsPdf.debug.js"></script> 2.思路&a…

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;差…

【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放

导航【初探HTML5之使用新标签布局】用html5布局我的博客页&#xff01;【HTML5初探之form标签】解放表单验证、增加文件上传、集成拖放【HTML5初探之绘制图像&#xff08;上&#xff09;】看我canvas元素引领下一代web页面【HTML5初探之绘制图像&#xff08;下&#xff09;】看…

两时间差

/** * Comments:返回时间差 * param 两个字符串类型的时间差(time1-time2),type(D天,H时,M分,S秒,Z-S天时分秒) * return */ public final static SimpleDateFormat SF_SIZE19 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//初始化时间格式 public static String …

【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;最长…

C语言试题173之实现插入排序算法

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

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

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

Delphi中字符串比较大小 VS Oracle-SQL中字符串比较大小

重点注意Delphi和Oracle-SQL中比较字符串时空字符串的根本性的不同Delphi中的字符串比较 Delphi中字符串比较大小的规则&#xff1a;对应位置的字符按照字符编码值逐个对比&#xff0c;直到遇到可以确定大小关系的就结束比较参考《Delphi的Ord函数和ASCII码对照表》 常见的一些…

STM8S和STM8L调试串口中断的注意点

源&#xff1a;STM8S和STM8L调试串口中断的注意点

C语言试题174之实现快速排序算法

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