使用C ++ PICO_W_CONNECTION_MANAGER類和命令行接口在PICO W上運行LWIP Web服務器,以管理與AP的連接。
CLI程序允許您使用LittleFS文件系統掃描SSID,處理連接和斷開連接,讀取RSSI和存儲SSID信息。
源代碼是設計的,因此您可以使用自己的用戶界面使用Pico_w_connection_manager類。使用Pico_w_connection_manager_cli類作為指南。該代碼假定“超環”,不使用RTO。
與AP的連接處於活動狀態後,演示程序將啟動一個網絡服務器,該網絡服務器可以打開或關閉PICO W的板載LED。該程序演示了一個使用SSI和CGI來切換LED的頁面和第二頁,該頁面使用Ajax來執行相同的操作。

演示程序使用串行端口控制台接受用戶輸入和打印輸出。在命令提示符下help命令列表。管理Wi-Fi連接的所有命令均為wifi-的形式。其他命令是管理LittleFS Flash文件系統。
演示程序使用UART串行端口控制台。如果您想將Pico-W的MicroSB端口用作串行端口控制台,則需要修改CMakeLists.txt 。請參閱CMakeLists.txt中的評論。
pico-w-wifi-setup demo
Cli is running.
Type "help" for a list of commands
Use backspace and tab to remove chars and autocomplete
Use up and down arrows to recall previous commands
> new country code XX=Worldwide
new country code XX=Worldwide
Version: 7.95.49 (2271bb6 CY) CRC: b7a28ef3 Date: Mon 2021-11-29 22:50:27 PST U0
cyw43 loaded ok, mac 28:cd:c1:06:3d:29
API: 12.2
Data: RaspberryPi.PicoW
Compiler: 1.29.4
ClmImport: 1.47.1
Customization: v5 22/06/24
Creation: 2022-06-24 06:55:08
No SSID specified
failed to connect to
wifi-scan-connect命令,然後按照提示進行連接。如果您的AP具有隱藏的SSID,請使用wifi-connect命令進行連接。Link Up IP address=消息。在瀏覽器中輸入該IP地址以顯示Web服務器的主頁。切換開關時,將會有一個可感知的延遲,因為每個CGI請求的整個頁面重新加載。
除了pico c/c ++ sdk的依賴項外,pico_w_connection_manager類使用以下外部代碼:
parson JSON庫序列化和典型化設置為JSON格式LittleFs文件系統以JSON格式將Wi-Fi設置存儲為少量預留量的PICO板程序閃存。LwIP庫。演示程序使用以下外部代碼:
EmbeddedCli庫getsn()實現perl命令,以便將index.html文件轉換為my_fsdata.c文件。有關更多詳細信息,請參見源代碼。
確保您已經安裝了pico-sdk並起作用。執行以下命令。下面的命令假定pico-sdk存儲在${PICO_SDK_PATH}中,並且您希望與pico-sdk相同的目錄級別pico-w-connection-manager-demo目錄。
export PICO_BOARD=pico_w
cd ${PICO_SDK_PATH}/..
git clone https://github.com/rppicomidi/pico-w-connection-manager-demo.git
cd pico-w-connection-manager-demo
git submodule update --recursive --init
mkdir build
cd build
cmake ..
make
將構建的圖像加載到您的PICO-W中。如果您在測試過程中遇到問題,請應用已知問題部分中描述的任何補丁並重建。
對於所有已知問題,請檢查日期。到您建立此內容時,它們可能已固定。
如果您在調用deinitialize() initialize() (),則該軟件將掛斷。這是pico-sdk問題。要解決此問題,請在SDK問題#980中使用pico-sdk development分支和補丁:
cd ${PICO_SDK_PATH}
git fetch origin
git checkout -b develop origin/develop
git submodule update lib/cyw43-driver/
編輯文件'pico-sdk/src/rp2_common/pico_cyw43_arch/cyw43_arch_threadsafe_background.c`c`。更換第194行附近的代碼
#if CYW43_LWIP
lwip_init();
#endif
和
#if CYW43_LWIP
static bool done_lwip_init;
if (!done_lwip_init) {
lwip_init();
done_lwip_init = true;
}
#endif
Web服務器服務的網頁存儲在fsdata/fs目錄中。如果更改任何網頁或CSS文件,則需要重新運行cmake以生成FSDATA/FSDATA.C文件,該文件編碼LWIP HTTPD應用程序的頁面並在make前運行make clean 。構建系統應該自動執行此操作,但這並不是因為我沒有弄清楚如何正確依賴依賴項。
演示prgram旨在鍛煉pico-w-connection-manager類的功能,該類別稱為“類”。
命令: wifi-country和wifi-initialize 。
命令: wifi-deinitialize
命令wifi-scan-connect
命令: wifi-connect
命令: wifi-autoconnect
注意:演示程序在啟動時自動運行此命令的等效詞。
命令: wifi-disconnect
命令:無; PICO-W將自動執行此操作。要取消此行為,您必須明確運行鏈接丟失後的wifi-deinitialize或wifi-disconnect