物聯網開發平臺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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...