一个小创意完美实现客户的奇葩需求

其实也说不上奇葩,算是非常正常的一类需求:

开发一款控制器,在客户日常系统运维使用的台式电脑上通过局域网远程控制某个设备。

客户局域网内的路由器可以提供一个固定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协议解析代码


分享到:


相關文章: