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.pswp.cn/news/285073.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285073.shtml
英文地址,請注明出處:http://en.pswp.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、題目 題目:實現快速…