package com.ycl.api.YS.vca.peoplecounting; import com.sun.jna.Memory; import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import com.ycl.api.YS.NetDemo; import com.ycl.api.YS.lib.NetDEVSDKLib.*; import javax.swing.*; import java.util.Calendar; import java.util.Vector; /** * @description The CountThreadClass extend Thread and rewrite the method of run. * */ public class CountThreadClass extends Thread{ @Override public void run() { if(NetDemo.flag==false) { System.out.println(NetDemo.t.getState()); return; } while(NetDemo.flag) { boolean bRet = false; NETDEV_MULTI_TRAFFIC_STATISTICS_COND_S stStatisticCond = new NETDEV_MULTI_TRAFFIC_STATISTICS_COND_S(); stStatisticCond.stChannelIDs = new NETDEV_OPERATE_LIST_S(); stStatisticCond.stChannelIDs.pstOperateInfo = new Memory(4); stStatisticCond.stChannelIDs.pstOperateInfo.setInt(0, NetDemo.ChannelID); stStatisticCond.stChannelIDs.dwSize = 1; stStatisticCond.udwFormType = NETDEV_TRAFFIC_STATIC_FORM_TYPE_E.NETDEV_TRAFFIC_STAT_FORM_BY_DAY; stStatisticCond.udwStatisticsType = NETDEV_TRAFFIC_STATISTICS_TYPE_E.NETDEV_TRAFFIC_STATISTICS_TYPE_ALL; Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.HOUR, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); long now = System.currentTimeMillis() / 1000l; long daySecond = 60 * 60 * 24; stStatisticCond.tBeginTime = now - (now + 8 * 3600) % daySecond; stStatisticCond.tEndTime = stStatisticCond.tBeginTime+24*3600; NetDemo.udwSearchID = new IntByReference(); bRet = NetDemo.netdevsdk.NETDEV_StartMultiTrafficStatistic(NetDemo.lpUserID, stStatisticCond, NetDemo.udwSearchID); if(false == bRet){ JOptionPane.showMessageDialog(null, "StartTrafficStatistic failed,error code"+NetDemo.netdevsdk.NETDEV_GetLastError()); System.out.printf("NETDEV_StartMultiTrafficStatistic failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } /*查询统计进度 Query statistics progress */ while(NetDemo.flag) { IntByReference dwProgress = new IntByReference(); try { bRet = NetDemo.netdevsdk.NETDEV_GetTrafficStatisticProgress(NetDemo.lpUserID, NetDemo.udwSearchID.getValue(), dwProgress); }catch(Exception k) { continue; } if(dwProgress.getValue() == 100) { break; } else { try { CountThreadClass.sleep(4000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } try { if(NetDemo.udwSearchID==null||NetDemo.udwSearchID.equals("")){ return; } }catch(Exception m) { return; } Pointer lpStaticHandle = NetDemo.netdevsdk.NETDEV_FindTrafficStatisticInfoList(NetDemo.lpUserID, NetDemo.udwSearchID.getValue()); if(lpStaticHandle != null) { while(NetDemo.flag) { NETDEV_TRAFFIC_STATISTICS_INFO_S stStatisticInfo = new NETDEV_TRAFFIC_STATISTICS_INFO_S(); bRet = NetDemo.netdevsdk.NETDEV_FindNextTrafficStatisticInfo(lpStaticHandle, stStatisticInfo); if(bRet != true) { break; } else { Vector StatisticInfoVector = new Vector(); StatisticInfoVector.add(String.valueOf(stStatisticInfo.dwChannelID)); StatisticInfoVector.add(String.valueOf(stStatisticInfo.audwEnterCount[0])); StatisticInfoVector.add(String.valueOf(stStatisticInfo.audwExitCount[0])); NetDemo.PeopleCountingVMSNVRRealTimeTableModel.addRow(StatisticInfoVector); } } bRet = NetDemo.netdevsdk.NETDEV_FindCloseTrafficStatisticInfo(lpStaticHandle); if(false == bRet){ System.out.printf("NETDEV_FindCloseTrafficStatisticInfo failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } } } } }