移动交互大屏项目总结

作者Veris 文章分类 分类:心得总结 文章评论 0条评论 阅读次数 已被围观 1993

背景:

某单位想实现党建为主题的移动交互大屏项目,用于深化加强新信息化党建建设。


目标:

展示区域分为8个展示位,由pad控制屏幕移动到某个展示位,并实现移动到每个展示位时显示对应的展示内容。


使用技术:

PHP、Python、易语言、HTML


架构想法:

1、pad发送TCP指令到控制器(有提供TCP端口接收控制指令)

2、控制器控制一体机(大屏)移动到指定点位,一体机会感应到点位的RFID卡,会将卡ID以模拟键盘输入的形式反馈给一体机,一体机接收返回的带有ID的键盘记录,识别ID判断点位

3、将点位告知播放程序

4、播放程序执行对应点位的内容


实现过程:

逐步分析上面几个点

1、pad上跑的是安卓系统,而控制器需要用TCP接收指令,我不会安卓所以预想的方案是用html连接websocket服务(需要一台电脑当做中转服务器),然后转发TCP指令,这里没有更多电脑了,所以直接用一体机也当做服务器用,汗。

2、这个键盘监听我花了很长时间折腾,原因有两点,第一点不清楚设备提供方的技术实现流程(一说用COM口传数据、一说用USB传数据,最后是通过模拟键盘输入的形式),第二点是监听键盘事件这里,我一开始用的是Python写监听程序,发现问题很多(扩展要装一堆、好不容易跑起来,但是监听不了全局。。我也不想多花时间折腾了,毕竟就只有一天时间),后来我想用JAVA或C#实现全局键盘监听钩子,发现这两个语言我压根不熟悉,研究需要消耗太多时间,最后改用了易语言,真是好东西啊,虽然我初二就接触过这门语言,但从上高中学了VB后就对他嗤之以鼻,今天让我刮目相看,易语言调用钩子轻而易举,最后实现了监听键盘模拟输入的ID号

3、这一个部分我用易语言将获得的ID号判断得出点位,并通过HTTP GET方式传给PHP端设置当前点位(为了省事,我把Apache PHP Python的Websocket服务都跑在了一体机上)

4、播放程序是用前端写的,通过AJAX轮询的形式请求PHP获取点位,然后将页面切换到对应的内容


实现过程中碰到的问题及解决方案:

1、Python向TCP发起指令后过一段时间,控制器会主动断开连接,导致Python程序中断,这里我用了一次发起连接、一次发送指令、一次中断连接,我猜想应该也有更好的方案,比如断线重连、异常判断等,不过为了节省时间我使用了最笨最简单的方法。

2、易语言编译后的程序过一段时间会停止工作(这把我郁闷坏了),然后百度了下:win7下易语言软件已停止工作添加数据保护的方法


反思:

为了节省时间我做了很多其实没必要的工作,比如:

完全不必使用PHP(也可以完全不用Python,用PHP来做Websocket和TCP转发),在整个工作中我用PHP接收更新定位点、提供给前端获取。

这里易语言可以通过websocket发送点位,前端可以用websocket获取点位,即省去了一个服务的资源进程,又缩短了通讯时间,加强了实时性,更重要的事能完美的解决疯狂轮询所带来的资源损耗。


=================================================
转载请注明出处:
作者:Veris
最族 [ http://www.mostclan.com ]

分类:心得总结
标签: 移动交互大屏

发表评论: