這個帖子說明了如何使用 mbed RPC 與 W5500 以太網盾和如何把以太網的應用程序從 lwIP 移植到 W5500Interface。

遠程過程調用(PRC)

在計算機科學中,遠程過程調用(RPC)是一種進程間的通信,允許計算機程序引起的子程序或程序在另一個地址空間(通常在共享網絡上的另一台計算機)來執行沒有明確的程序員的編碼詳細信息該遠程交互。
http://en.wikipedia.org/wiki/Remote_procedure_call

image

*來源- http://uw714doc.sco.com/en/SDK_netapi/rpcpD.how_RPC_works.html

硬件 – FRDM-KL25Z + W5500 以太網盾

image

軟件 – mbed RPC

通過 HTTP 命令執行遠程過程叫(RPC)服務器。
mbed RPC @ developer.mbed.org /手冊
在 RPC 庫,一個簡單的 HTTP 服務器就可以執行從 HTTP 客戶端發送的 RPC 命令。
該庫使用 EthernetInterface(LWIP) 和 mbedOS。

RPC 命令

在 RPC 命令是這樣編碼的:

  • 包裝了一個骷髏 ID 的容器
  • 將要被調用方法
  • 將輸入參數(可選)

命令示例 
PUT 命令:“/DigitalOut/new?arg=LED2&name=led2″
GET 命令:“/led2/write?arg=1″

請求處理程序

處理請求時,服務器依賴 RequestHandler。 每個 RequestHandler 被分配給請求的類型。 每種類型的請求被分配到了一定的作用:

  • PUT 請求創建新對象
  • DELETE 請求刪除對象
  • GET 請求來調用對象的功能

移植 EthernetInterface 到 W5500Interface

這裡指導如何修改:

  • Folk HTTP-Server 在您的工作空間方案
  • 刪除 2 個文件夾; EthernetInterface(LWIP) & mbed-RTOS中 的 HTTP-Server
  • 增加了數組,寫在物理地址寄存器中的 W5500 MAC 地址。

uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};

  • 更改 EthernetInterface(),並設置 W5500 的 SPI 接口

/*  Use EthernetInterface
 *EthernetInterface eth;
 *if(eth.init())
 *int ret = eth.init(“192.168.77.34”, “255.255.255.0”, “192.168.77.1”);    
*/
/* —– Use W5500 Ethernet Shied —–*/
SPI spi(D11, D12, D13);      /* mosi, miso, sclk */
//spi.frequency(12500000); /* Optional : set proper SPI clock */
EthernetInterface eth(&spi, D10, D9); /* spi, cs, reset(dummy) */

/* —– Use W5500 Ethernet Shied —–*/

  • 設置網絡配置:我將使用固定的地址。

/*  in case of using W5500 Ethenret Shield */
int ret = eth.init(mac_addr, “192.168.77.34”, “255.255.255.0”, “192.168.77.1”);   
/* in case of using W550io (has a unique real MAC address) */
//int ret = eth.init(“192.168.77.34”, “255.255.255.0”, “192.168.77.1”);  

知識庫 : Users » embeddist » Code » HTTP-Server_W5500Interface

演示 – 在 HTTP 的客戶端使用瀏覽器

這裡是一個快速指導如何運行此程序:

  • 編譯這個程序,將其複製到mbed
  • 打開 TeraTerm(安裝它,如果你沒有的話),選擇串行端口和選擇的端口名為 “mbed Serial Port”
  • 重置您的 mbed
  • IP地址應出現在teraterm。在這個例子中,我將用 192.168.77.34
image
  • 打開瀏覽器,進入 http://192.168.77.34 
image
  • 如果一切正常,你應該看到一個網頁。
  • 配置紅色LED 為 ARG=LED1 和 name=RLED
image
image
  • 要繼續,發送命令:RLED/write 0
image
  • 要繼續,發送命令:RLED/write 1
image