這個帖子說明了如何使用 mbed RPC 與 W5500 以太網盾和如何把以太網的應用程序從 lwIP 移植到 W5500Interface。
遠程過程調用(PRC)
在計算機科學中,遠程過程調用(RPC)是一種進程間的通信,允許計算機程序引起的子程序或程序在另一個地址空間(通常在共享網絡上的另一台計算機)來執行沒有明確的程序員的編碼詳細信息該遠程交互。
http://en.wikipedia.org/wiki/Remote_procedure_call
*來源- http://uw714doc.sco.com/en/SDK_netapi/rpcpD.how_RPC_works.html
硬件 – FRDM-KL25Z + W5500 以太網盾
- http://developer.mbed.org/platforms/KL25Z/
- http://developer.mbed.org/components/W5500-Ethernet-Kit-for-IoT/
- 硬件連接:D10 – SCS / D11 – MOSI / D12 – MISO / D13 – SCLK
軟件 – 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
- 打開瀏覽器,進入 http://192.168.77.34
- 如果一切正常,你應該看到一個網頁。
- 配置紅色LED 為 ARG=LED1 和 name=RLED
- 要繼續,發送命令:RLED/write 0
- 要繼續,發送命令:RLED/write 1