3步體驗在DAYU200開發板上完成OpenHarmony對接華為雲IoT

来源:https://www.cnblogs.com/huaweiyun/archive/2023/09/19/17714654.html
-Advertisement-
Play Games

在DAYU200開發板上燒寫OpenHarmony系統,利用huaweicloud-iot-device-sdk完成華為雲IoT平臺對接,完成物聯網數據通信。 ...


本文分享自華為雲社區《DAYU200+OpenHarmony 3.1.1對接華為雲IOT【華為雲IoT+鴻蒙】》,作者:DS小龍哥。

一、前言

OpenHarmony 3.1.1 是一個開源的智能終端操作系統,主要用於智能家居、智能手機、平板電腦、智能穿戴設備等智能終端設備。是一個分散式操作系統,支持多種硬體平臺和多種編程語言,可以方便地進行移植和定製。

特點:

(1) 分散式:支持分散式計算和分散式存儲,可以在多個設備之間進行任務調度和數據共用。
(2)可裁剪:支持根據設備的需求進行裁剪,以滿足不同設備的資源限制。
(3)安全:提供了安全機制,保護設備的隱私和安全。
(4)可移植:支持多種硬體平臺和多種編程語言,可以方便地進行移植和定製。

當前文章介紹在DAYU200開發板上燒寫OpenHarmony系統,利用huaweicloud-iot-device-sdk完成華為雲IOT平臺對接,完成物聯網數據通信。

所需硬體:DAYU200開發板(RK3568)

二、DAYU200開發板

2.1 開發板介紹

關於開發板的介紹在這裡:https://gitee.com/hihope_iot/docs/tree/master/HiHope_DAYU200

基於Rockchip RK3568,集成雙核心架構GPU以及高效能NPU;
板載四核64位Cortex-A55 處理器採用22nm先進工藝,主頻高達2.0GHz;
支持藍牙、Wi-Fi、音頻、視頻和攝像頭等功能,擁有豐富的擴展介面,支持多種視頻輸入輸出介面;
配置雙千兆自適應RJ45乙太網口,可滿足NVR、工業網關等多網口產品需求。

image.png

image.png

image.png

2.2 開發板實物圖

image.png

image.png

image.png

image.png

cke_37905.png

三、環境安裝

3.1 串口終端

開發板插上串口線之後,打開設備管理器可以看到識別到串口COM8,這就是開發板的Debug串口。(需要提前安裝好USB轉串口驅動)。

image.png

打開串口工具,新建會話,選擇串口協議。

image.png

波特率選擇1500000 也就是1.5M。

image.png

創建完成。

image.png

選擇剛纔創建好的會話,點擊連接。

image.png

複位開發板(開發板上有一個RESET按鈕),正常情況下會在終端上看到內核啟動過程;啟動完成後按下回車即可進入到Linux終端命令行。

從列印的命令行數據可以看出當前設備的配置:

這是uboot列印出來的配置信息。從當前信息里可以看出CPU型號RK3568,記憶體2GB。

U-Boot 2017.09-gb448fedf55-211210 #addy (Dec 20 2021 - 10:58:09 +0800)

Model: Rockchip RK3568 Evaluation Board
PreSerial: 2, raw, 0xfe660000
DRAM:  2 GiB
Sysmem: init
Relocation Offset: 7d34d000
Relocation fdt: 7b9f87e8 - 7b9fecd0
CR: M/C/I
Using default environment

內核啟動列印的信息;從信息里可以看出當前系統使用的內核是Linux 5.10內核。

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x412fd050]
[    0.000000] Linux version 5.10.79 (root@ecs-58f4) (aarch64-linux-gnu-gcc (Linaro GCC 7.5-2019.12) 7.5.0, GNU ld (Linaro_Binutils-2019.12) 2.28.2.20170706) #1 SMP Thu Jun 29 09:39:49 CST 2023
[    0.000000] Machine model: rockchip,rk3568-toybrick-dev-linux-x0
[    0.000000] earlycon: uart8250 at MMIO32 0x00000000fe660000 (options '')
[    0.000000] printk: bootconsole [uart8250] enabled
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000200000-0x000000007fffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges

image.png

在串口軟體上可以設置終端類型,方便區分Linux終端文件類型。

image.png

3.2 固件燒寫

說明文檔:https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/docs/%E7%83%A7%E5%BD%95%E6%8C%87%E5%AF%BC%E6%96%87%E6%A1%A3.md#https://gitee.com/link?target=http%3A%2F%2Fci.openharmony.cn%2Fdailys%2Fdailybuilds

【1】燒寫工具下載

https://gitee.com/hihope_iot/docs/tree/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97

下來下來之後打開HiHope_DAYU200 文件夾。

image.png

我這裡在windows下進行燒寫。

image.png

DriverAssitant_v5.1.1.zip 目錄下是USB驅動,解壓後進行安裝。如果已經安裝舊版本的燒寫工具, 需要先點擊“驅動卸載” 按鈕下載驅動, 然後再點擊“驅動安裝” 按鈕安裝驅動。

image.png

RKDevTool.exe 就是燒寫工具。

image.png

【2】HiHope官方固件下載

地址:https://gitee.com/hihope_iot/images/tree/master/HiHope_DAYU200

image.png

下載下來解壓,打開燒寫工具選擇路徑。

image.png

確認開發板是否進入燒寫模式

(1)如果界面顯示"發現一個 LOADER 設備", 說明開發板進入 Loader 模式等待燒寫固件。

(2)如果界面顯示"發現一個 MASKROM 設備", 說明開發板進入 Maskrom 模式等待燒寫固 件。

(3)如果界面顯示"沒有發現設備", 說明開發板沒有進入燒寫模式, 需要先讓開發板進入燒寫模式

進入燒寫模式的步驟

(1)先按住 VOL-/RECOVERY 按鍵 和 RESET 按鈕不鬆開, 燒錄工具此時顯示“沒有發現設備”

(2)然後再 鬆開 RESER 鍵, 燒錄工具顯示“發現一個 LOADER 設備” , 說明此時已經進入燒寫模式。

image.png

3.3 huaweicloud-iot-device-sdk-c 介紹

說明文檔:https://gitee.com/openharmony-sig/iot_device_sdk_c/blob/master/README_CN.md#5

Huawei Cloud IOT Device SDK for C 是華為雲推出的一套面向嵌入式設備的物聯網開發套件,支持 C 語言開發。該套件提供了一系列 API,可以方便地實現設備與雲端的連接、數據上報、遠程式控制制等功能。

該套件主要包括以下組件:

  • Huawei LiteOS:一個輕量級的操作系統,提供了內核級別的任務調度、記憶體管理、網路協議棧等功能。
  • Huawei Cloud IOT Agent:一個設備端的物聯網代理程式,負責與雲端的物聯網平臺進行連接,實現設備註冊、數據上報、遠程式控制制等功能。
  • Huawei Cloud IOT SDK for C:一個 C 語言的開發包,提供了一系列 API,可以方便地實現設備與雲端的連接、數據上報、遠程式控制制等功能。

使用 Huawei Cloud IOT Device SDK for C 可以大大簡化物聯網設備的開發流程,提高開發效率,同時也可以保證設備與雲端之間的連接穩定性和安全性。該套件適用於各種類型的嵌入式設備,例如智能家居、智能家電、智能穿戴等。

Huawei Cloud IOT SDK for C SDK面向運算、存儲能力較強的嵌入式終端設備,開發者通過調用SDK介面,便可實現設備與物聯網平臺的上下行通訊。SDK當前支持的功能有:

  • 支持物模型:設備消息/屬性/事件上報,設備命令/消息/屬性/事件接收
  • 支持子設備消息轉發、子設備管理
  • 支持OTA升級
  • 支持密碼認證和證書認證兩種設備接入方式
  • 支持自定義topic
  • 支持設備影子查詢
  • 支持自定義日誌收集能力
  • 支持端側規則引擎
  • 支持SSH遠程登錄
  • 支持對接邊緣M2M

image.png

四、上雲實驗

4.1 物聯網平臺介紹

華為雲物聯網平臺(IoT 設備接入雲服務)提供海量設備的接入和管理能力,將物理設備聯接到雲,支撐設備數據採集上雲和雲端下發命令給設備進行遠程式控制制,配合華為雲其他產品,幫助我們快速構築物聯網解決方案。

使用物聯網平臺構建一個完整的物聯網解決方案主要包括3部分:物聯網平臺、業務應用和設備。

物聯網平臺作為連接業務應用和設備的中間層,屏蔽了各種複雜的設備介面,實現設備的快速接入;同時提供強大的開放能力,支撐行業用戶構建各種物聯網解決方案。

設備可以通過固網、2G/3G/4G/5G、NB-IoT、Wifi等多種網路接入物聯網平臺,並使用LWM2M/CoAP、MQTT、HTTPS協議將業務數據上報到平臺,平臺也可以將控制命令下發給設備。

業務應用通過調用物聯網平臺提供的API,實現設備數據採集、命令下發、設備管理等業務場景。

image.png

image.png

4.2 開通物聯網服務

地址: https://www.huaweicloud.com/product/iothub.html

image.png

點擊總覽,查看接入信息。 我們當前設備準備採用MQTT協議接入華為雲平臺,這裡可以看到MQTT協議的地址和埠號等信息。

image.png

總結:

埠號:   MQTT (1883)| MQTTS (8883)   
接入地址: a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com

根據功能變數名稱地址得到IP地址信息:

Microsoft Windows [版本 10.0.19045.2965]
(c) Microsoft Corporation。保留所有權利。

C:\Users\11266>ping a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com

正在 Ping a161a58a78.iot-mqtts.cn-north-4.myhuaweicloud.com [121.36.42.100] 具有 32 位元組的數據:
來自 121.36.42.100 的回覆: 位元組=32 時間=38ms TTL=94
來自 121.36.42.100 的回覆: 位元組=32 時間=37ms TTL=94
來自 121.36.42.100 的回覆: 位元組=32 時間=38ms TTL=94
來自 121.36.42.100 的回覆: 位元組=32 時間=36ms TTL=94

121.36.42.100 的 Ping 統計信息:
    數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
    最短 = 36ms,最長 = 38ms,平均 = 37ms

C:\Users\11266>

image.png

MQTT協議接入埠號有兩個,1883是非加密埠,8883是證書加密埠,單片機無法載入證書,所以使用1883埠比較合適。 接下來的ESP8266就採用1883埠連接華為雲物聯網平臺。

4.3 創建產品

(1)創建產品

點擊產品頁,再點擊左上角創建產品。

image.png

(2)填寫產品信息

根據自己產品名字填寫。

image.png

(3)產品創建成功

image.png

(4)添加自定義模型

產品創建完成之後,點擊進入產品詳情頁面,翻到最下麵可以看到模型定義。

這個模型就是定義自己設備接下來需要向伺服器上傳那些數據類型。根據自己的數據類型進行編寫。

先點擊自定義模型。

image.png

再創建一個服務ID。

image.png

接著點擊新增屬性。

image.png

image.png

4.4 添加設備

產品是屬於上層的抽象模型,接下來在產品模型下添加實際的設備。添加的設備最終需要與真實的設備關聯在一起,完成數據交互。

(1)註冊設備

image.png

(2)根據自己的設備填寫

image.png

(3)保存設備信息

創建完畢之後,點擊保存並關閉,得到創建的設備密匙信息。該信息在後續生成MQTT三元組的時候需要使用。

image.png

(4)設備創建完成

可以點擊設備進入到設備詳情頁面。

image.png

4.5 OpenHarmony環境構建

在文件Harmony源碼路徑/build/subsystem_config.json中添加構建腳本:

"iot-device-sdk-c" : {
"path": "third_party/iot-device-sdk-c",
"name": "iot-device-sdk-c"
},

(1)添加子系統編譯構建

在文件OpenHarmony源碼路徑/build/subsystem_config.json中添加如下構建腳本:

"iot-device-sdk-c" : {
"path": "third_party/iot-device-sdk-c",
"name": "iot-device-sdk-c"
},

image.png

在產品配置文件中添加子系統,其子系統名稱與文件中添加內容對應,就是iot-device-sdk-c:iot-device-sdk-c

配置文件位於`MY_OHOS_

image.png

(2)編譯依賴的動態庫

此sdk主要依賴於libboundscheck.so,libpaho-mqtt3as.so,libssh.so,libnopoll.so 這些動態庫,其間接依賴於libz.so,libssl.solibcrypto.so

(3)編譯第三方動態庫

對於libboundscheck.solibpaho-mqtt3as.solibssh.solibnopoll.so, 這些庫對應的源碼沒有在OpenHarmony中集成,如果開發板中沒有這些動態庫,需要自行下載並編譯。

執行以下命令拉取對應源碼:

cd $MY_OHOS_DIR/third_party/iot_device_sdk_c
mkdir third_party
cd third_party
git clone https://gitee.com/Janisa/huawei_secure_c.git \ 
  && git clone -b v1.3.12 --single-branch https://github.com/eclipse/paho.mqtt.c.git  \ 
  && git clone -b libssh-0.9.6 --single-branch https://git.libssh.org/projects/libssh.git  \ 
  && git clone -b 0.4.8 --single-branch https://github.com/ASPLes/nopoll.git  \ 

分別在OpenHarmony源碼路徑/third_party/iot_device_sdk_c/third_party/huawei_secure_c,OpenHarmony源碼路徑/third_party/iot_device_sdk_c/third_party/paho.mqtt.c, OpenHarmony源碼路徑/third_party/iot_device_sdk_c/third_party/libssh, OpenHarmony源碼路徑/third_party/iot_device_sdk_c/third_party/nopoll文件夾中放入或替換BUILD.gn文件,

內容如下:

# 放入 $MY_OHOS_DIR/third_party/iot_device_sdk_c/third_party/huawei_secure_c
#
# Copyright (c) [2020] Huawei Technologies Co.,Ltd.All rights reserved.
#
# OpenArkCompiler is licensed under the Mulan PSL v1.
# You can use this software according to the terms and conditions of the Mulan PSL v1.
# You may obtain a copy of Mulan PSL v1 at:
#
#     http://license.coscl.org.cn/MulanPSL
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR
# FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v1 for more details.
#
import("//build/ohos.gni")

src_libHWSecureC = [
  "src/vsprintf_s.c",
  "src/wmemmove_s.c",
  "src/strncat_s.c",
  "src/vsnprintf_s.c",
  "src/fwscanf_s.c",
  "src/scanf_s.c",
  "src/strcat_s.c",
  "src/sscanf_s.c",
  "src/secureprintoutput_w.c",
  "src/wmemcpy_s.c",
  "src/wcsncat_s.c",
  "src/secureprintoutput_a.c",
  "src/secureinput_w.c",
  "src/memcpy_s.c",
  "src/fscanf_s.c",
  "src/vswscanf_s.c",
  "src/secureinput_a.c",
  "src/sprintf_s.c",
  "src/memmove_s.c",
  "src/swscanf_s.c",
  "src/snprintf_s.c",
  "src/vscanf_s.c",
  "src/vswprintf_s.c",
  "src/wcscpy_s.c",
  "src/vfwscanf_s.c",
  "src/memset_s.c",
  "src/wscanf_s.c",
  "src/vwscanf_s.c",
  "src/strtok_s.c",
  "src/wcsncpy_s.c",
  "src/vfscanf_s.c",
  "src/vsscanf_s.c",
  "src/wcstok_s.c",
  "src/securecutil.c",
  "src/gets_s.c",
  "src/swprintf_s.c",
  "src/strcpy_s.c",
  "src/wcscat_s.c",
  "src/strncpy_s.c",
]

include_common = [
  "include",
  "src",
]

ohos_static_library("libHWSecureC") {
  sources = src_libHWSecureC
  include_dirs = include_common
}

ohos_shared_library("libboundscheck") {
  sources = src_libHWSecureC
  include_dirs = include_common
}
# 放入 $MY_OHOS_DIR/third_party/iot_device_sdk_c/third_party/paho.mqtt.c
#
# Copyright (c) [2020] Huawei Technologies Co.,Ltd.All rights reserved.
#
# OpenArkCompiler is licensed under the Mulan PSL v1.
# You can use this software according to the terms and conditions of the Mulan PSL v1.
# You may obtain a copy of Mulan PSL v1 at:
#
#     http://license.coscl.org.cn/MulanPSL
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR
# FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v1 for more details.
#

import("//build/ohos.gni")
MQTT_SRC_DIR = "src"

MQTT_AS_SOURCE_FILES = [
    "${MQTT_SRC_DIR}/Base64.c",
    "${MQTT_SRC_DIR}/Clients.c",
    "${MQTT_SRC_DIR}/Heap.c",
    "${MQTT_SRC_DIR}/LinkedList.c",
    "${MQTT_SRC_DIR}/Log.c",
    "${MQTT_SRC_DIR}/Messages.c",
    "${MQTT_SRC_DIR}/MQTTAsync.c",
    "${MQTT_SRC_DIR}/MQTTAsyncUtils.c",
    "${MQTT_SRC_DIR}/MQTTPacket.c",
    "${MQTT_SRC_DIR}/MQTTPacketOut.c",
    "${MQTT_SRC_DIR}/MQTTPersistence.c",
    "${MQTT_SRC_DIR}/MQTTPersistenceDefault.c",
    "${MQTT_SRC_DIR}/MQTTProperties.c",
    "${MQTT_SRC_DIR}/MQTTProtocolClient.c",
    "${MQTT_SRC_DIR}/MQTTProtocolOut.c",
    "${MQTT_SRC_DIR}/MQTTReasonCodes.c",
    "${MQTT_SRC_DIR}/MQTTTime.c",
    "${MQTT_SRC_DIR}/OsWrapper.c",
    "${MQTT_SRC_DIR}/Proxy.c",
    "${MQTT_SRC_DIR}/SHA1.c",
    "${MQTT_SRC_DIR}/Socket.c",
    "${MQTT_SRC_DIR}/SocketBuffer.c",
    "${MQTT_SRC_DIR}/SSLSocket.c",
    "${MQTT_SRC_DIR}/StackTrace.c",
    "${MQTT_SRC_DIR}/Thread.c",
    "${MQTT_SRC_DIR}/Tree.c",
    "${MQTT_SRC_DIR}/utf-8.c",
    "${MQTT_SRC_DIR}/WebSocket.c",
]

ohos_shared_library("libpaho-mqtt3as") {
  sources = MQTT_AS_SOURCE_FILES
  include_dirs = ["./src", "./build"]
  deps=[
    "//third_party/openssl:libcrypto_static",
    "//third_party/openssl:ssl_source"
  ]
    
  cflags = ["-w", "-fPIC", "-Os", "-fvisibility=hidden", "-DOPENSSL", "-D_GNU_SOURCE", "-DPAHO_MQTT_EXPORTS=1"]
  libs= ["pthread", "dl"]
  ldflags = ["-Wl,-init,MQTTAsync_init"]
}
# 放入 $MY_OHOS_DIR/third_party/iot_device_sdk_c/third_party/libssh
#
# Copyright (c) [2020] Huawei Technologies Co.,Ltd.All rights reserved.
#
# OpenArkCompiler is licensed under the Mulan PSL v1.
# You can use this software according to the terms and conditions of the Mulan PSL v1.
# You may obtain a copy of Mulan PSL v1 at:
#
#     http://license.coscl.org.cn/MulanPSL
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR
# FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v1 for more details.
#

import("//build/ohos.gni")

src_libHWSecureC = [
"src/agent.c",
"src/auth.c",
"src/base64.c",
"src/bignum.c",
"src/buffer.c",
"src/callbacks.c",
"src/channels.c",
"src/client.c",
"src/config.c",
"src/connect.c",
"src/connector.c",
"src/curve25519.c",
"src/dh.c",
"src/ecdh.c",
"src/error.c",
"src/getpass.c",
"src/init.c",
"src/kdf.c",
"src/kex.c",
"src/known_hosts.c",
"src/knownhosts.c",
"src/legacy.c",
"src/log.c",
"src/match.c",
"src/messages.c",
"src/misc.c",
"src/options.c",
"src/packet.c",
"src/packet_cb.c",
"src/packet_crypt.c",
"src/pcap.c",
"src/pki.c",
"src/pki_container_openssh.c",
"src/poll.c",
"src/session.c",
"src/scp.c",
"src/socket.c",
"src/string.c",
"src/threads.c",
"src/wrapper.c"
              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 在構建API項目時,有時出於安全考慮,防止訪問用戶惡意攻擊,希望限制此用戶ip地址的請求次數,減輕拒絕服務攻擊可能性,也稱作限流。接下來,我們就來學習開源庫DotNetRateLimiter 如何輕鬆實現限流。 項目使用配置 安裝Nuget包 在新建立的WebAPI項目中,通過Nuget包管理 ...
  • 因為我本身沒有參與過項目架構,所以為了避免後續的開發過程中項目無序,繁雜。所以在這裡我要給我自己設定一個規範。 後端 目前採用的就是:Net6(長期支持)+倉儲模式(類似三層架構) 雖然現在流行微服務,但我目前還沒法自己完全去做,還得學啊! 目前8的預覽版已經出現,但是得申請,7的話是標準期限支持, ...
  • 可擴展性對於物聯網管理系統的設計和開發非常重要,它直接影響著系統的性能、可靠性和能耗等方面,是評估一個系統優劣的重要因素之一。可擴展性對物聯網管理系統的影響主要體現在以下幾個方面: ...
  • 引言 作為一名後端工程師,使用終端是一種常見的做法,也是你應該學習的技能。許多命令和實用程式可以幫助你在使用 Linux 時更有效地完成任務。 基本 Linux 命令 如果你想使用 Linux 操作系統,學習常用的命令將會大有幫助。本篇將為後端工程師回顧一些基本到高級的 Linux 操作命令。 基礎 ...
  • 1. MySQL的客戶端/伺服器通信協議 1.1. MySQL的客戶端和伺服器之間的通信協議是“半雙工”的 1.2. 在任何時刻,要麼是由伺服器向客戶端發送數據,要麼是由客戶端向伺服器發送數據,這兩個動作不能同時發生 1.3. 當查詢的語句很長的時候,參數max_allowed_packet就特別重 ...
  • 引入 本文在兩台2核2g的雲伺服器上搭建了Hadoop集群,兩台雲伺服器分別是阿裡雲(hjm)和騰訊雲(gyt),集群部署規劃如下: hjm gyt HDFS NameNode\SecondaryNameNode\DataNode DataNode YARN ResourceManager\Node ...
  • 一、邏輯存儲結構 表空間(Tablespace):一個mysql實例,及一個資料庫實例,可以對應多個表空間(ibd文件),用於存儲記錄,索引等數據。 段(Segment):分為數據段(Leaf node segment)、索引段(Non-leaf node segment)、回滾段(Rollback ...
  • 之前寫的一個 Flutter 收音機,支持桌面端和手機端,在https://www.cnblogs.com/imlgc/p/17536481.html ,寫完之後就不怎麼管了。後面陸陸續續有人郵件索要驗證碼,不是經常使用的郵箱,所有也不經常打開,也導致很多人沒有收到回覆。 所以,乾脆將這個東西開源了 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...