寻求一个解决思路

.Net技术 码拜 8年前 (2016-05-09) 857次浏览
本人要监听硬件上传的数据,通过回调函数来获取数据,例如电脑A管理4个设备,假如有数据,4个设备会同时上传数据,同时上传时间差不会多于100毫秒,同时上传的数据本人通过比对只要1个,假如有设备损坏的情况,只会同时上传2、3个数据,本人怎么样来高效的来识别单次上传的数据?
本人目前用Timer来定时检测接收缓存,但是感觉这种做法并不好。希望大家集思广益帮本人想一个好一些的办法。
解决方案

15

不论接收还是发送,都应该是实时的。不知道你的硬件跟上位机怎么样连接,但是不管什么方式,都应该事件驱动、异步回调。只要有数据通知,就应该接收数据。跟 timer 无关。

3

本人本人写了个模仿你说的流程的控制台小程序,无奈代码写的太多,上传csdn貌似要很久,所以在想要不要贴代码上来。
寻求一个解决思路
具体思路其实就是超过100毫秒之后就立即进行分析数据的步骤然后清除缓存。

2

一般是用协议和超时
所谓协议,一般这种类型的需求都有一个批次,按你的要求1个批次最多4个
那么协议头上就应该有批次标识,同时本人怎么知道设备损坏,这个简单处理可以做超时处理,例如超时100毫秒本人认为他掉线了
当然正常的逻辑上掉线/不掉线是另外的心跳包(非长连接的也有服务器主动定时ping客户的做法)
有关批次,假如没有协议保证,本人只能认为他的逻辑是,在系统规定超时时间内,这多台机器发送给本人第一条数,本人把这多台机器的数据zip一个包在推出去,那么这个的逻辑图示意,参考下文的JoinBlock模块处理(当然这样做,在处理上就是各自负责各自的数据流,超时推一个null,然后joinblock收到全体4个整体打包推给下个处理环节)
http://www.cnblogs.com/haoxinyue/archive/2013/03/01/2938959.html

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明寻求一个解决思路
喜欢 (0)
[1034331897@qq.com]
分享 (0)