日期:2010-03-05  浏览次数:20423 次

由于以前没弄过和硬件打交道的项目,并且是BS的,项目也比较突然,所以没想出什么太好的解决方案,下面我说说我最终用的解决方案,希望园里的大虾老虾们能给出更好的解决方案。大家一起探讨。

  用户需求

  先来说说用户的需求:这个项目是给银行做的,所以只是在局域网内使用,具体的网络架构是银行的事了。既然是局域网,所以在网络带宽上没有问题。这家公司已经做好了一个CS的软件,可以很好的对Led进行控制(人家是专业做Led的),但是银行方面非要个BS的,没办法!所以找到的我们。

  用户主要的需求就是对Led的控制,可以编辑在Led上显示的内容,编辑完后用任务审核,审核成功后发下给Led进行显示,对Led的控制(开启,关闭,显示的亮度.......),远程的对Led进行监控,看到Led上当前显示的内容。

  软件功能的划分和解决方案:

  对硬件操纵的DLL公司给提供,毕竟他们有现成的(C++写的),所以这方面不用我们考虑。我们直接拿来掉就可以了。

  整个软件分为两个部分:服务器端,客户端

  这样有点类似于Socket,服务器端做了一个专门的监听程序,通过客户端的请求进行相应的操作,如:任务的下发,对led的控制等。

  主要说说客户端,分了四块(用户有权限控制):

  系统管理(Led管理,用户管理,日志管理,执行命令),编辑任务,审核下发,监控任务。由于公司提供的DLL在下发任务的时候是以.BMP图的形式进行处理的,也就是说我需要在客户端编辑完成后截出编辑区域的内容,生成一张.BMP的图上传到服务器。这个截图的动作不是用户来完成的,上传图片的动作也不是用户做的,都是代码自定完成的。所以像js截图什么的就不行了。

  我们最终用的方案是制作ActiveX控件(因为如果以IE为坐标截屏很难控制),客户端如果第一次使用需要安装个ActiveX。索性我们将任务的下发,Led监控都做成了ActiveX。与服务器的通信采用的Socket,而没用Web服务之类的。

  但是我感觉做成ActiveX的解决方案不是很好,不太符合BS的结构,由于项目比较急,所以只好先用着了。现在项目结了,拿出来探讨下,想知道大家在做何硬件打交道的项目中是如何处理的,希望高手多多指教,不胜感激