物聯網開發平臺PlatformIO手冊(上)

来源:https://www.cnblogs.com/testing-/archive/2023/09/04/17666733.html
-Advertisement-
Play Games

[toc] # Linux運維工程師面試題(6) > 祝各位小伙伴們早日找到自己心儀的工作。 > 持續學習才不會被淘汰。 > 地球不爆炸,我們不放假。 > 機會總是留給有有準備的人的。 > 加油,打工人! ## 1 資料庫事務的四個特性及含義 資料庫事務的4個特性:原⼦性、持久性、⼀致性、隔離性 - ...


0 PlatformIO通往卓越嵌入式軟體開發的門戶

利用PlatformIO的協作生態系統,發掘嵌入式軟體開發的真正潛力,採用聲明式原則、測試驅動方法和現代工具鏈,取得無與倫比的成功。

  • 開放源代碼、最大許可的Apache 2.0許可證
  • 跨平臺集成開發環境和統一調試器
  • 靜態代碼分析器和遠程單元測試
  • 多平臺和多架構構建系統
  • 固件文件資源管理器和記憶體檢測。

1 什麼是PlatformIO?

開發和團隊自由發揮!不再被供應商鎖定!

PlatformIO 是一款跨平臺、跨體繫結構、多框架的專業工具,適用於嵌入式系統工程師和為嵌入式產品編寫應用程式的軟體開發人員。

1.1 榮譽

PlatformIO 榮獲2015/16年度物聯網大獎最佳軟體和工具提名。

Microsoft PlatformIO IDE for VSCode編輯器的原生PlatformIO IDE擴展是整個 Microsoft Marketplace 中評分/評論最高的擴展,五星級評論超過2,500 條。全球有超過 3,000,000 名開發人員安裝了該擴展。

https://github.com/platformio/platformio-core 7K+星。

1.2 理念

PlatformIO在嵌入式市場的獨特理念為開發人員提供了現代化的集成開發環境(雲和桌面集成開發環境),該環境可跨平臺運行,支持多種不同的軟體開發工具包(SDK)或框架,並包括複雜的調試、單元測試、自動代碼分析和遠程管理。它的架構最大限度地提高了開發人員的靈活性和選擇性,開發人員可以使用圖形或命令行編輯器(PlatformIO Core (CLI)),也可以同時使用這兩種編輯器。

對於在多個特定平臺上開發解決方案的專業嵌入式系統工程師來說,PlatformIO是一款必備工具。此外,PlatformIO採用分散式架構,為新老開發人員提供了快速集成的途徑,以開發可用於商業用途的產品,並縮短了產品的整體上市時間。

此外,PlatformIO還可在您最喜愛的任何現代操作系統(macOS、MS Windows、Linux、FreeBSD)上運行。

1.3 技術

PlatformIO將最新的可擴展和靈活的軟體技術應用於嵌入式市場,該領域傳統上由複雜的軟體工具提供服務,經驗豐富的硬體工程師需要長期學習才能掌握這些工具(通常非常痛苦)。有了PlatformIO,用戶可以是業餘愛好者,也可以是專業人士。他們可以導入經典的Arduino "Blin "草圖,也可以為商業產品開發複雜的底層嵌入式C程式。任何支持框架的示例代碼都能在幾分鐘內編譯並上傳到目標平臺。

構建系統結構可自動標記軟體依賴關係,並使用模塊化層次結構進行應用,從而消除了通常的複雜性和痛苦。開發人員不再需要手動查找和組裝工具鏈、編譯器和庫依賴環境,就能為特定目標開發應用程式。有了PlatformIO,點擊編譯按鈕就能自動引入所有必要的依賴項。這就好比你是一名傢具設計師,而你的CAD程式有"構建"按鈕,可以讓機器人獲取所有必要的部件和緊固件,並將它們正確地組裝起來。

PlatformIO Core(CLI是獨特的、從零開始開發的構建系統,它消除了開發人員在超越特定SDK或嵌入式應用實例的範圍時通常會遇到的軟體集成、打包和庫依賴性等問題。它可與各種代碼開發環境配合使用,並可與眾多雲平臺和網路服務源輕鬆集成。用戶在快速上手方面不會遇到任何障礙:無需許可證費用,無需法律合同。用戶可以保持構建環境的充分靈活性,因為這些工具是開源的,並且獲得了許可(修改這些工具不需要許可,也不要求共用修改內容)。

1.4 解決問題

人們對嵌入式世界望而卻步的主要問題是為特定MCU/板設置開發軟體的複雜過程:工具鏈、專有供應商的集成開發環境(有時不是免費的),更重要的是,要在電腦上安裝支持該軟體的操作系統。

  • 多種硬體平臺(MCU:Microcontroller Unit、板卡board)需要不同的工具鏈、集成開發環境等,還分別需要花時間學習新的開發環境。
  • 尋找適當的庫和代碼示例,說明如何使用常用的感測器、執行器等。
  • 團隊成員之間共用嵌入式項目,無論他們喜歡使用哪種操作系統。

1.5 如何工作

在不深入探討PlatformIO實施細節的情況下,使用 PlatformIO 開發項目的工作周期如下:

  • 用戶在"platformio.ini"(項目配置文件)中選擇感興趣的電路板。
  • PlatformIO根據電路板列表下載所需的工具鏈並自動安裝。
  • 用戶開發代碼,PlatformIO 確保代碼已編譯、準備就緒並上傳到板上。

2 PlatformIO IDE

PlatformIO IDE是下一代物聯網集成開發環境。

  • 跨平臺構建系統,與操作系統軟體無外部依賴關係:
    • 1,000多種板卡
    • 40多個開發平臺
    • 20多個框架
  • 調試
  • 遠程開發
  • 單元測試
  • C/C++智能代碼自動完成
  • 用於快速專業開發的C/C++智能代碼篩選器
  • 數百個常用庫的庫管理器
  • 多窗格的多項目工作流程
  • 支持深色和淺色主題
  • 串列埠監控器
  • 內置帶有 PlatformIO Core (CLI)和 CLI 工具(pio、platformio)的終端
  • 內置PlatformIO Home

我們為最流行的集成開發環境和文本編輯器提供官方軟體包(插件、擴展)。

根據我們的經驗,PlatformIO IDE for VSCode有更好的系統性能,用戶也發現它更容易上手。

2.1 VSCode PlatformIO擴展

Visual Studio Code是一款輕量級但功能強大的源代碼編輯器,可在桌面上運行,適用於 Windows、macOS 和 Linux。它內置了對JavaScript、TypeScript和Node.js的支持,併為其他語言(如 Python、C++、C#、PHP、Go)和運行時(如 .NET 和 Unity)提供了豐富的擴展生態系統。

2.1 CLion PlatformIO擴展

CLion是適用於Linux、OS X和Windows的跨平臺C/C++集成開發環境。CLion包括智能編輯器、代碼生成、代碼質量保證、自動重構、即時代碼分析、項目管理器、集成版本控制系統和調試器等功能。

3 PlatformIO Core (CLI)

PlatformIO Core(CLI 工具)是整個 PlatformIO 生態系統的核心,包括

  • 多平臺構建系統
  • 統一軟體包管理器
  • 庫管理
  • 庫依賴關係查找器(LDF Library Dependency Finder)
  • 串列埠監控器
  • 集成組件(雲和桌面集成開發環境以及持續集成)。

PlatformIO Core由Python編寫,可在Windows、macOS、Linux、FreeBSD和基於ARM的信用卡大小的電腦(Raspberry Pi、BeagleBone、CubieBoard、Samsung ARTIK 等上運行。

PlatformIO Core提供內容豐富、文檔齊全的命令行界面(CLI)。其他基於PlatformIO的軟體和集成開發環境都基於 PlatformIO Core CLI,如 PlatformIO IDE。換句話說,它們用自己的圖形用戶界麵包裝 PlatformIO Core。

請註意,如果要使用 PlatformIO IDE,則無需安裝 PlatformIO Core。PlatformIO Core 內置於 PlatformIO IDE中,您可以在PlatformIO IDE終端中使用它。

如果您需要在PlatformIO IDE之外使用 PlatformIO Core 命令,請安裝 Shell Commands( https://docs.platformio.org/en/latest/core/installation/shell-commands.html#piocore-install-shell-commands )。

3.1 安裝

3.1.1 Super-Quick (macOS / Linux)

curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
python3 get-platformio.py

# 或 
pip install -U platformio

其他系統參考 https://docs.platformio.org/en/latest/core/installation/methods/installer-script.html

PlatformIO Core(CLI)由系統中的2個獨立工具組成:

  • platformio 或 pio(簡稱)
  • piodebuggdb - pio調試

Linux 用戶必須為支持 PlatformIO 的板卡/設備安裝 udev 規則。最新版本的規則可在 https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules 上找到。

請檢查您的板卡的PID和VID是否列在規則中。您可以使用pio device lis 命令列出已連接的設備及其PID/VID。

該文件必須放置在/etc/udev/rules.d/99-platformio-udev.rules (首選位置)或 /lib/udev/rules.d/99-platformio-udev.rules (某些壞系統需要)。

請打開系統終端並鍵入

curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules

或手動下載文件並複製到目標文件夾

sudo cp 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules

重啟 "udev "管理工具:

sudo service udev restart

sudo udevadm control --reload-rules
sudo udevadm trigger

如果 Ubuntu/Debian 用戶不是 "root",可能需要將自己的 "username "添加到 "dialout "組。

sudo usermod -a -G dialout $USER
sudo usermod -a -G plugdev $USER

同樣,Arch 用戶可能需要將自己的用戶添加到 "uucp "組中

sudo usermod -a -G uucp $USER
sudo usermod -a -G lock $USER

註意您需要註銷並重新登錄(或重啟)用戶組更改才能生效。

安裝此文件後,拔下並重新連接板卡。

參考資料

3.1.1.1 與自定義應用程式(擴展、插件)集成

當您將PlatformIO Core集成到應用程式(如集成開發環境的擴展或插件)中時,我們建議您使用PlatformIO Core安裝程式腳本。

3.1.1.1.1 前提條件
  • Python解釋器

PlatformIO Core安裝腳本由Python編寫,相容Python 2.7+和Python 3.5+。我們強烈建議使用最新的Python 3。

  • 安裝程式腳本

將get-platformio.py文件捆綁到您的應用程式中;或按需下載 get-platformio.py 文件。

在這兩種情況下您都需要在最終用戶機器上安裝get-platformio.py腳本。您可以將其複製或下載到緩存/臨時文件夾中。

幫助:

$ python get-platformio.py --help
Usage: get-platformio.py [OPTIONS] COMMAND [ARGS]...

Options:
  --version                       Show the version and exit.
  --verbose                       Verbose output
  --shutdown-piohome / --no-shutdown-piohome
  --dev
  --ignore-python TEXT            A path to Python to be ignored (multiple
                                  options and unix wildcards are allowed)
  --pypi-index-url TEXT           Custom base URL of the Python Package Index
                                  (default `https://pypi.org/simple`)
  --help                          Show this message and exit.

Commands:
  check
  pack
3.1.1.1.2 Workflow

我們將介紹一個簡單的工作流程,說明如何為應用程式/擴展的最終用戶自動安 PlatformIO Core (CLI)。

  • 步驟1. PlatformIO Core安裝在何處?

每次用戶啟動應用程式時,您都應檢查 PlatformIO Core的安裝狀態。您需要調用帶有檢查核心參數的安裝程式腳本:

$ python get-platformio.py check core
Found compatible PlatformIO Core 6.1.10 -> /home/andrew/.platformio/penv/bin/platformio

如果需要 PlatformIO Core 安裝狀態的完整信息,請使用 --dump-state 選項運行,並指定一個文件夾或完整路徑,以 JSON 格式保存數據:

 python get-platformio.py check core --dump-state pioinstaller-state.json
Found compatible PlatformIO Core 6.1.10 -> /home/andrew/.platformio/penv/bin/platformio
$ cat pioinstaller-state.json 
{"core_version": "6.1.10", "python_version": "3.10.12", "core_dir": "/home/andrew/.platformio", "cache_dir": "/home/andrew/.platformio/.cache", "penv_dir": "/home/andrew/.platformio/penv", "penv_bin_dir": "/home/andrew/.platformio/penv/bin", "platformio_exe": "/home/andrew/.platformio/penv/bin/platformio", "installer_version": "1.2.1", "python_exe": "/home/andrew/.platformio/penv/bin/python", "system": "linux_x86_64", "is_develop_core": false}

現在,讀取JSON文件並使用platformio_exe 二進位文件通過 CLI 調用 PlatforIO Core(參見 CLI 指南)。也可以在系統環境PATH變數中導出 penv_bin_dir,這樣 platformio 命令就無需完整路徑即可使用了。

  • 步驟2安裝 PlatformIO Core

要以自動模式將PlatformIO Core安裝到虛擬環境中,請調用安裝程式腳本,無需任何參數:

3.1.1.1.3 實例

參見https://github.com/platformio/platformio-node-helpers

3.2 快速入門

本節將向您介紹 PlatformIO Core (CLI) 命令行界面 (CLI)工作流程的基礎知識,並向您展示一個簡單的跨平臺 "Blink "項目的創建過程。學完之後,您將對如何使用多種開發平臺和嵌入式板有一個大致的瞭解。

3.2.1 設置項目(工程)

PlatformIO Core (CLI)為配置項目提供了特殊的 pio project init 命令。它允許初始化新的空項目或使用新數據更新現有項目。

此外pio project init 可用於雲和桌面 IDE。這意味著您可以使用最喜歡的集成開發環境導入預生成的PlatformIO 項目,並使用物聯網開發的專業工具對其進行擴展。

本教程基於ESP8266。

3.2.2 板識別

$ pio boards teensy

Platform: teensy
=================================================================================================================================================================
ID         MCU          Frequency    Flash    RAM       Name
---------  -----------  -----------  -------  --------  ------------------------
teensymm   IMXRT1062    600MHz       7.75MB   512KB     SparkFun MicroMod Teensy
teensy2    ATMEGA32U4   16MHz        31.50KB  2.50KB    Teensy 2.0
teensy30   MK20DX128    48MHz        128KB    16KB      Teensy 3.0
teensy31   MK20DX256    72MHz        256KB    64KB      Teensy 3.1 / 3.2
teensy35   MK64FX512    120MHz       512KB    255.99KB  Teensy 3.5
teensy36   MK66FX1M0    180MHz       1MB      256KB     Teensy 3.6
teensy40   IMXRT1062    600MHz       1.94MB   512KB     Teensy 4.0
teensy41   IMXRT1062    600MHz       7.75MB   512KB     Teensy 4.1
teensylc   MKL26Z64     48MHz        62KB     8KB       Teensy LC
teensy2pp  AT90USB1286  16MHz        127KB    8KB       Teensy++ 2.0

根據上表,Teensy3.1/3.2的ID是teensy31。此外,Arduino Uno的ID是 uno,NodeMCU 1.0(ESP-12E 模塊)的 ID 是 nodemcuv2。

3.2.3 初始化項目

PlatformIO生態系統包含一個大型資料庫,其中有最常用嵌入式板的預配置設置。它可以幫助您省去安裝工具鏈、編寫構建腳本或配置上傳過程的麻煩。只需告訴PlatformIO板ID,您就會收到包含預裝工具的完整工作項目,用於專業開發。

 $ mkdir tmp_8266
$ cd tmp_8266
$ pio project init --board uno --board nodemcuv2 --board teensy31
The following files/directories have been created in /home/andrew/tmp_8266
include - Put project header files here
lib - Put project specific (private) libraries here
src - Put project source files here
platformio.ini - Project Configuration File
Resolving uno dependencies...
Platform Manager: Installing atmelavr
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Platform Manager: [email protected] has been installed!
Tool Manager: Installing platformio/toolchain-atmelavr @ ~1.70300.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Tool Manager: Installing platformio/framework-arduino-avr @ ~5.1.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Resolving nodemcuv2 dependencies...
Platform Manager: Installing espressif8266
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Platform Manager: [email protected] has been installed!
Tool Manager: Installing platformio/toolchain-xtensa @ ~2.100300.220621
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Tool Manager: Installing platformio/framework-arduinoespressif8266 @ ~3.30102.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Tool Manager: Installing platformio/tool-esptool @ <2
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Tool Manager: Installing platformio/tool-esptoolpy @ ~1.30000.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Resolving teensy31 dependencies...
Platform Manager: Installing teensy
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%
Platform Manager: [email protected] has been installed!
Tool Manager: Installing platformio/toolchain-gccarmnoneeabi-teensy @ ~1.110301.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%          
Tool Manager: [email protected] has been installed!
Tool Manager: Installing platformio/framework-arduinoteensy @ ~1.158.0
Downloading  [####################################]  100%          
Unpacking  [####################################]  100%
Tool Manager: [email protected] has been installed!
Project has been successfully initialized!
$ ls -R
.:
include  lib  platformio.ini  src  test

./include:
README

./lib:
README

./src:

./test:
README

恭喜!您剛剛創建了第一個基於PlatformIO的項目,其結構如下:

  • "platformio.ini"(項目配置文件)
  • src 目錄,用於放置源代碼(.h、.c、.cpp、.S、*.ino 等)。
  • lib 目錄可用於存放項目專用(私有)庫。更多詳情請參見 lib/README 文件。
  • 支持 VCS 和持續集成的其他文件。

如果需要在現有項目中添加新電路板,請再次使用pio project init。

剛剛生成的 latformio.ini的結果:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:uno]
platform = atmelavr
board = uno
framework = arduino

[env:nodemcuv2]
platform = espressif8266
board = nodemcuv2
framework = arduino

[env:teensy31]
platform = teensy
board = teensy31
framework = arduino

現在,我們需要創建main.cpp文件,並將其放到新創建項目的src文件夾中。src/main.cpp 的內容:

/**
 * Blink
 *
 * Turns on an LED on for one second,
 * then off for one second, repeatedly.
 */
#include "Arduino.h"

#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif

void setup()
{
  // initialize LED digital pin as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN, HIGH);

  // wait for a second
  delay(1000);

  // turn the LED off by making the voltage LOW
  digitalWrite(LED_BUILTIN, LOW);

   // wait for a second
  delay(1000);
}

最終的項目結構:

project_dir
├── lib
│   └── README
├── platformio.ini
└── src
    └── main.cpp

3.2.3 項目處理

PlatformIO Core (CLI) 提供特殊的 pio run 命令來處理項目。如果不帶任何參數調用該命令,PlatformIO 編譯系統將處理所有項目環境(這些環境是根據上述指定的每個板創建的)。下麵是一些有用的命令:

  • pio run. 處理(構建)"platformio.ini"(項目配置文件)中指定的所有環境
  • pio run --target upload。構建項目並將固件上傳到 "platformio.ini"(項目配置文件)中指定的所有設備上
  • pio run --target clean. 清理項目(刪除編譯對象)
  • pio run -e uno. 僅處理 uno 環境
  • pio run -e uno -t upload。僅為 uno 構建項目並上傳固件。

其他目標請參考 pio run --list-targets 文檔。

3.2.4 更多參考

3.3 命令簡介

釘釘或微信號: pythontesting 微信公眾號:pythontesting
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文主要介紹 RocketMQ 的安裝部署,文中所使用到的軟體版本:RocketMQ 5.1.3、CentOS 7.9.2009。 1、RocketMQ 部署模型 1.1、部署模型說明 Apache RocketMQ 部署架構上主要分為四部分: A、生產者 Producer 發佈消息的角色。Prod ...
  • > 講解Go語言從編譯到執行全周期流程,每一部分都會包含豐富的技術細節和實際的代碼示例,幫助大家理解。 > 關註微信公眾號【TechLeadCloud】,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、AI產品研發經驗、團隊管理經驗,同濟本復旦碩,復旦機器人智能實驗室成員,阿 ...
  • 最近在公司的項目中,編寫了幾個自定義的 Exception 類。提交 PR 的時候,sonarqube 提示這幾個自定義異常不符合 ISerializable patten. 花了點時間稍微研究了一下,把這個問題解了。今天在此記錄一下,可能大家都會幫助到大家。 ## 自定義異常 編寫一個自定義的異常 ...
  • 我們在使用一些需要購買版權的軟體產品時,或者我們做的商業軟體需要進行售賣,為了收取費用,一般需要一個軟體使用許可證,然後輸入這個許可到軟體里就能夠使用軟體。簡單的是一串序列碼或者一個許可證文件,複雜的是一個定製化插件包。於是有的小伙伴就開始好奇這個許可是怎麼實現的,特別是在離線情況下它是怎麼給軟體授... ...
  • # EF Core併發控制 # 併發控制概念 1. 併發控制:避免多個用戶同時操作資源造成的併發衝突問題。 2. 最好的解決方案:非資料庫解決方案 3. 資料庫層面的兩種策略:悲觀、樂觀 # 悲觀鎖 悲觀併發控制一般採用行鎖 ,表鎖等排他鎖對資源進行鎖定,確保同時只有一個使用者操作被鎖定的資源。 E ...
  • # Unity UGUI的Scrollbar(滾動條)組件的介紹及使用 ## 一、什麼是Scrollbar組件? Scrollbar組件是Unity中UGUI系統提供的一種UI組件,主要用於在UI界面中提供滾動條功能,使用戶可以通過滾動條來查看超出屏幕範圍的內容。 ## 二、Scrollbar組件是 ...
  • 在我寫[在.NET Framework中使用RocketMQ(阿裡雲版)]這篇博客的時候,因為封裝了很多代碼在單獨的DLL中,包括生產者、消費者以及官方SDK等等,然後都在博客中體現出來導致博客大量代碼,然後有位讀者就建議打包成NuGet包,大家也可以直接安裝調用,我也覺得很不錯,於是就有了這篇文章... ...
  • # Redis 文章內容主要參考b站 運維實戰課程 的redis視頻:[redis的課程介紹_嗶哩嗶哩_bilibili](https://www.bilibili.com/video/BV1cP4y1D7yh?p=1) ## 簡介 1.Redis是一個緩存資料庫,主要是做緩存。什麼是緩存?也就是緩 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...