首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET Micro Framework 開發實戰 (三):打造遠端檔案瀏覽器

     編輯:關於.NET

前言

.NET Micro Framework (MF) 雖已支援 FAT16/FAT32 檔案系統,但裝置端無法直接被 PC 遠端存取。為解決此問題,作者開發了 MFDeploy 遠端檔案瀏覽器外掛,讓開發者能像使用 FTP 一樣管理裝置上的檔案。本文深入剖析其實作架構:通道建立、裝置端類 FTP 服務、PC 端外掛 UI。

整體架構

  • 通訊協定:基於 WireProtocol (MFDeploy/VS 與裝置通訊的標準協定),支援序列埠、USB、網路等物理連結。
  • 擴充通道:在 WireProtocol 中新增 Custom 命令 (0x0000000F),作為檔案系統指令的專用通道。
  • 指令集:參考 FTP 設計 PWD、CD、CDUP、MKD、DELE、UPLOAD、DOWNLOAD、DIR_FindOpen/Next/Close 等。

第一階段:建立通訊通道

1. Native Code (TinyCLR) 修改

  • TinyCLR_Debugging.h:於 CLR_DBG_Commands 結構加入 c_Monitor_Custom = 0x0000000F 及 Monitor_Custom 承載結構 (m_command, m_length, m_data[])。
  • CLR_DBG_Debugger 結構加入 Monitor_Custom 處理函數指標。
  • Debugger_full.cpp:c_Debugger_Lookup_Request 陣列加入 DEFINE_CMD2(Custom)。
  • Debugger.cpp:實作 Monitor_Custom 呼叫 Monitor_Custom_Process 處理實際邏輯。

2. Microsoft.SPOT.Debugger.dll (Managed 端) 修改

  • WireProtocol.cs:Commands 類別加入 c_Monitor_Custom 常數、Monitor_Custom 類別 (含 PrepareForSend、Reply)、ResolveCommandToPayload 註冊 Request/Reply 類型。
  • Engine.cs:新增 CustomCommand 方法封裝發送邏輯。

第二階段:裝置端功能實作 (類 FTP 伺服器)

於 \DeviceCode\PAL\CustomProcess 新增 CustomProcess.cpp:

  • 定義指令碼:Custom_Command_FileSystem = 0x01 及子指令 (FileSystem_Start、PWD、CD、MKD、DELE、UPLOAD、DOWNLOAD 等)。
  • 實作 Monitor_Custom_Process 分派至 FileSystem_Process。
  • FileSystem_Process 維護目前工作目錄、尋找控制代碼、檔案系統磁碟區指標,逐一處理各子指令。

編譯時需於 TinyCLR.proj 加入專案參考:

<ItemGroup>
  <RequiredProjects Include="$(SPOCLIENT)\DeviceCode\PAL\CustomProcess\dotNetMF.proj" />
  <DriverLibs Include="CustomProcess.$(LIB_EXT)" />
</ItemGroup>

第三階段:PC 端 MFDeploy 外掛 (FileViewerHandle)

  • 繼承 MFPlugInMenuItem,OnAction 啟動 frmFileViewer 視窗。
  • 核心 Send 方法封裝 CustomCommand 呼叫,處理位元組陣列編碼/解碼 (Unicode)。
  • UI 提供工具列按鈕:上層目錄 (CDUP)、新增資料夾 (MKD)、刪除 (DELE)、上傳/下載等,均呼叫 Send 並刷新列表。

應用價值

  • 可將圖片、字體等資源直接複製至裝置檔案系統。
  • 可將 .NET MF 應用程式組件 (.pe) 複製至檔案系統,由 TinyCLR 動態載入執行,實現非原始碼層級的系統裁剪與模組化部署。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved