T
tippchlj
Unregistered / Unconfirmed
GUEST, unregistred user!
如何提高采集速度?我做的是门禁系统监控刷卡采集<br>采集的过程中,如果机器比较多的话而且存在机器没有联通,这样的话就会采集速度很慢。<br>而且存在这样的情况,某个机器刚开始没有联通,在采集的过程中有人插上电进行联通了。或者某台机器刚开始是联通的采集的过程中给断电了。<br>有人说加个定时器采集数据的过程中每个几秒对不通的机器采集一次这样采集速度不知道怎样?还是有其他办法?<br>下面是我的一部分代码处理,看起来会比较清楚一点。麻烦你们了呵呵。<br>TCquery.sql.Clear;<br>TCquery.sql.Add('select ControllerSn,ControllerType From Controller ');<br>TCquery.open;<br>While True do<br>begin<br> TcQuery.First;<br> while not TCquery.eof do<br> begin<br> ConSn := TCquery.Fieldvalues['ControllerSn']; //机器名称<br> ConType := TCquery.Fieldvalues['ControllerType'];//机器类型<br> <br> upok := UnitComm.DataCollect(ConSn, ConType, coms, Recordr);//从该机器读取数据<br> if Upok = 1 then//数据读取成功<br> begin<br> //保存读取的数据Recordr到数据库<br> //并在数据库中记录该机器为通<br> end<br> else//数据读取不成功<br> begin<br> //在数据库中记录该机器为不通<br> end;<br> TcQuery.Next;<br> end;<br>end;<br><br>我加了一些处理速度稍微快一点:定义了一个变量 tmValue:Integer =0;<br>每执行一条记录不论通与不通都执行<br> tmValue:= tmValue+ 1;<br> if tmValue>= (TCquery.RecordCount + 1) then<br> tmValue := 0;<br>在从机器读取数据之前执行<br> if TCquery.RecordCount >=3 then<br> if tmValue < 3 then<br> begin<br> tmValue := tmFlag + 1;<br> TcQuery.Next;<br> Continue;<br> end;