一個小創意完美實現客戶的奇葩需求

其實也說不上奇葩,算是非常正常的一類需求:

開發一款控制器,在客戶日常系統運維使用的臺式電腦上通過局域網遠程控制某個設備。

客戶局域網內的路由器可以提供一個固定IP的有線以太網接口。

出於安全考慮,用於日常系統運維的臺式電腦不能安裝軟件。

不能專門開發一款PC上位機,安裝在臺式電腦上,讓客戶遠程控制使用。

收到這樣的需求之後,客戶首先想到了西門子、三菱等大品牌的PLC,都需要在上位機安裝組態軟件通過MODBUS-TCP等協議進行遠程控制;

同時尋遍了某寶,與不少開發人員做了深入交流,這些開發人員均表示不安裝軟件不能通過局域網進行遠程控制;

最後,找到了我們。

一聽客戶介紹完需求,作為有幾十年工作經驗的工程師,我立馬有了想法。

有一款控制器預留了LAN接口,將網頁內置到這款控制器裡面,通過瀏覽器打開控制,就可以達成該需求。

而內置網頁正是我們的特長!

說幹就幹,說起來容易,仍然有些技術難度:

1) 該款控制器選用的是STM32F103RCT6的處理器,ROM空間為256K,考慮到遠程升級,bootloader佔用4K,應用程序佔用100K ,升級程序用的空間用了100K,這樣網頁只能佔用50KByte的空間。不能用jquery,VUE等框架開發,只能用原生的javascript開發,任何一個html, css以及javascript腳本都需要反覆斟酌以節省空間。

2) LAN選用了W5500模塊 ,該模塊僅支持8個socket。而該客戶的局域網有可能有內網穿透問題,僅提供網頁,可能外網的客戶端無法穿透路由器訪問,因此還需要留1個socket用作tcp client,實在不行,還是需要說服客戶在其電腦端安裝上位機,該上位機作為tcp server,解決內網穿透問題。

經過測試發現,1個socket只支持1路併發的連接。

所以,7個socket作為tcp server,只能有7路的tcp 連接併發。

而傳統的網頁設備,下載js,進行ajax通信等文件會發起n路的併發。

所以需要額外的代碼處理,實現文件js, ajax通信的一路併發。

3)採用dreamweaver,sublime等工具進行網頁佈局,javascript代碼編寫,並通過chrome調試之後,所有網頁文件( 包括html、css, javascript)等需要合併成一個文件,並將該文件下載到內部flash的指令位置,因此需要設計一款上位機軟件,用於程序遠程升級以及網頁文件合併下載。

4) 由於ROM以及RAM空間的限制,沒有辦法採用字符串處理以及http協議解析處理庫。

字符串以及http協議解析只能有針對性地編寫一些函數實現。

比如,index.php?act=update&id=1 這樣的url格式的解析需要綜合考慮時間和空間的花銷自己實現代碼。

經過兩個星期左右的奮戰,終於完成了該產品的開發。

一個小創意完美實現客戶的奇葩需求

LAN接口的內置網頁控制器樣品製作中


一個小創意完美實現客戶的奇葩需求

採用Delphi開發的上位機-固件遠程升極


一個小創意完美實現客戶的奇葩需求

採用Delphi開發的上位機-網頁下載


一個小創意完美實現客戶的奇葩需求

控制器內置網頁-1


一個小創意完美實現客戶的奇葩需求

控制器內置網頁-2


一個小創意完美實現客戶的奇葩需求

簡易的HTTP協議解析代碼


分享到:


相關文章: