package com.ycl.api.YS.objectSearch; 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.util.Common; import com.ycl.api.YS.lib.NetDEVSDKLib.*; import javax.swing.*; import java.util.Vector; public class objectsearch { static String DateFormat = "yyyy-MM-dd HH:mm:ss"; public static void objectfind() { if(null == NetDemo.lpUserID) { JOptionPane.showMessageDialog(null, "Please Login device first. error code"+NetDemo.netdevsdk.NETDEV_GetLastError()); return; } if(NetDemo.ChannelID == 0){ JOptionPane.showMessageDialog(null, "Please select an online channel after login."); return; } boolean bRet = NetDemo.netdevsdk.NETDEV_StopObjectSearch(NetDemo.lpUserID, NetDemo.udwObjectSearchID); if(bRet != true) { System.out.printf("NETDEV_StopObjectSearch failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } NetDemo.ObjectSearchModel.setRowCount(0); NETDEV_DEV_CHN_ENCODE_INFO_S stEncodeInfo = new NETDEV_DEV_CHN_ENCODE_INFO_S(); stEncodeInfo.write(); IntByReference dwBytesReturned = new IntByReference(); bRet = NetDemo.netdevsdk.NETDEV_GetChnDetailByChnType(NetDemo.lpUserID, NetDemo.ChannelID, NETDEV_CHN_TYPE_E.NETDEV_CHN_TYPE_ENCODE, stEncodeInfo.getPointer(), stEncodeInfo.size(), dwBytesReturned ); if(bRet != true) { System.out.printf("NETDEV_GetChnDetailByChnType failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } stEncodeInfo.read(); int DevID = stEncodeInfo.stChnBaseInfo.dwDevID; NETDEV_QUERY_CHN_CONDITION_S stStartInfo = new NETDEV_QUERY_CHN_CONDITION_S(); stStartInfo.dwQryInfoNum = 7; NETDEV_QUERY_INFO_S[] stQueryInfo = (NETDEV_QUERY_INFO_S[])new NETDEV_QUERY_INFO_S().toArray(7); stQueryInfo[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME; stQueryInfo[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS; Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(NetDemo.textField_BeginTime.getText(), DateFormat)), stQueryInfo[0].szConditionData); stQueryInfo[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME; stQueryInfo[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER; Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(NetDemo.textField_EndTime.getText(), DateFormat)), stQueryInfo[1].szConditionData); stQueryInfo[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME; stQueryInfo[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER; stQueryInfo[3].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_CHANNELID; stQueryInfo[3].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_CONTAIN; Common.stringToByteArray(Integer.toString(NetDemo.ChannelID), stQueryInfo[3].szConditionData); stQueryInfo[4].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_ALARM_DEVID; stQueryInfo[4].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_CONTAIN; Common.stringToByteArray(Integer.toString(DevID), stQueryInfo[4].szConditionData); if(0 != NetDemo.comboBox.getSelectedIndex()) { stQueryInfo[5].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_OBJECT_TYPE; stQueryInfo[5].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_EQUAL; Common.stringToByteArray(Integer.toString(NetDemo.comboBox.getSelectedIndex()), stQueryInfo[5].szConditionData); } else { stStartInfo.dwQryInfoNum = stStartInfo.dwQryInfoNum - 1; } if(0 != NetDemo.comboBox_1.getSelectedIndex()) { if(1 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1003", stQueryInfo[stStartInfo.dwQryInfoNum-1].szConditionData); } else if(2 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1004", stQueryInfo[stStartInfo.dwQryInfoNum-1].szConditionData); } else if(3 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1015", stQueryInfo[stStartInfo.dwQryInfoNum-1].szConditionData); } else if(4 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1016", stQueryInfo[stStartInfo.dwQryInfoNum-1].szConditionData); } stQueryInfo[stStartInfo.dwQryInfoNum-1].dwQueryType = 8; stQueryInfo[stStartInfo.dwQryInfoNum-1].dwLogicFlag = 0; } else { stStartInfo.dwQryInfoNum = stStartInfo.dwQryInfoNum - 1; } stStartInfo.pstQueryInfo = new Memory(stQueryInfo[0].size() * stQueryInfo.length); Common.SetStructArrToPointerData(stQueryInfo, stStartInfo.pstQueryInfo); stStartInfo.write(); IntByReference pudwSearchID = new IntByReference(0); bRet = NetDemo.netdevsdk.NETDEV_StartObjectSearch(NetDemo.lpUserID, stStartInfo, pudwSearchID); if(bRet != true) { System.out.printf("NETDEV_StartObjectSearch failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } else { NetDemo.udwObjectSearchID = pudwSearchID.getValue(); IntByReference pudwPercent = new IntByReference(0); bRet = NetDemo.netdevsdk.NETDEV_GetObjectSearchProg(NetDemo.lpUserID, pudwSearchID.getValue(), pudwPercent); if(bRet != true) { System.out.printf("NETDEV_GetObjectSearchProg failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } if(100 == pudwPercent.getValue()) { NETDEV_PIC_QUERY_COND_S pstQueryCond = new NETDEV_PIC_QUERY_COND_S(); pstQueryCond.udwOffset = 0; pstQueryCond.udwSearchID = pudwSearchID.getValue(); pstQueryCond.udwLimit = 10; NetDemo.gstQueryCond.udwOffset = pstQueryCond.udwOffset; NetDemo.gstQueryCond.udwSearchID = pstQueryCond.udwSearchID; NetDemo.gstQueryCond.udwLimit = pstQueryCond.udwLimit; NETDEV_PIC_QUERY_RESULT_S pstQueryResult = new NETDEV_PIC_QUERY_RESULT_S(); pstQueryCond.write(); Pointer lpFindHandle = NetDemo.netdevsdk.NETDEV_FindObjectSearchList(NetDemo.lpUserID, pstQueryCond, pstQueryResult); if(null == lpFindHandle) { System.out.printf("NETDEV_FindObjectSearchList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } else { NetDemo.btnNewButton_2.setEnabled(true); NetDemo.btnNewButton_3.setEnabled(true); pstQueryResult.read(); NetDemo.textField_Total.setText(Integer.toString(pstQueryResult.udwTotal)); NetDemo.udwObjectSearchTotalNum = pstQueryResult.udwTotal - pstQueryResult.udwNum; NetDemo.textField_Remain.setText(Integer.toString(NetDemo.udwObjectSearchTotalNum)); NetDemo.lpObjectSearchFindHandle = lpFindHandle; NetDemo.dwTime = 1; NetDemo.ObjectSearchModel.setRowCount(0); while(0 != pstQueryResult.udwNum) { NETDEV_OBJECT_RESULT_INFO_S pstObjectResultInfo = new NETDEV_OBJECT_RESULT_INFO_S(); pstObjectResultInfo.stBigImageInfo = new NETDEV_FILE_INFO_S(); pstObjectResultInfo.stBigImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE; pstObjectResultInfo.stBigImageInfo.pcData = new Memory(pstObjectResultInfo.stBigImageInfo.udwSize); pstObjectResultInfo.udwObjectInfoNum = 1; NETDEV_OBJECT_INFO_LIST_S[] pstObjectInfoList = new NETDEV_OBJECT_INFO_LIST_S[1]; NETDEV_PERSON_ATTR_S[] pstPersonAttr = new NETDEV_PERSON_ATTR_S[1]; for(int i = 0; i < pstObjectResultInfo.udwObjectInfoNum; ++i) { pstObjectInfoList[i] = new NETDEV_OBJECT_INFO_LIST_S(); pstObjectInfoList[i].stSmallImageInfo = new NETDEV_FILE_INFO_S(); pstObjectInfoList[i].stSmallImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE; pstObjectInfoList[i].stSmallImageInfo.pcData = new Memory(pstObjectInfoList[i].stSmallImageInfo.udwSize); pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.udwPersonOnNoVehiNum = 1; for(int j = 0; j < pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.udwPersonOnNoVehiNum; ++j) { pstPersonAttr[j] = new NETDEV_PERSON_ATTR_S(); } pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.pstPersonAttr = new Memory(pstPersonAttr[0].size()*pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.udwPersonOnNoVehiNum); Common.SetStructArrToPointerData(pstPersonAttr, pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.pstPersonAttr); } pstObjectResultInfo.pstObjectInfoList = new Memory(pstObjectInfoList[0].size()*pstObjectResultInfo.udwObjectInfoNum); Common.SetStructArrToPointerData(pstObjectInfoList, pstObjectResultInfo.pstObjectInfoList); pstObjectResultInfo.write(); bRet = NetDemo.netdevsdk.NETDEV_FindNextObjectSearchInfo(lpFindHandle, pstObjectResultInfo); if(bRet != true) { System.out.printf("NETDEV_FindNextObjectSearchInfo failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); break; } else { pstQueryResult.udwNum --; pstObjectResultInfo.read(); pstObjectInfoList = Common.pointerToStructureArray(pstObjectResultInfo.udwObjectInfoNum,pstObjectResultInfo.pstObjectInfoList, NETDEV_OBJECT_INFO_LIST_S.class); for(int i = 0; i< 1; i ++) { pstPersonAttr = Common.pointerToStructureArray(1,pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.pstPersonAttr, NETDEV_PERSON_ATTR_S.class); } //System.out.printf("NETDEV_FindNextObjectSearchInfo,udwNum:%d,udwRecordID:%d, udwType:%d,udwTime:%d, szChannelName:%s,udwChannelID:%d\n",pstQueryResult.udwNum, pstObjectResultInfo.udwRecordID, pstObjectResultInfo.udwType, pstObjectResultInfo.udwTime, Common.byteArrayToString(pstObjectResultInfo.szChannelName),pstObjectResultInfo.udwChannelID); //System.out.printf("stBigImageInfo,Name:%s,szUrl:%s\n", Common.byteArrayToString(pstObjectResultInfo.stBigImageInfo.szName), Common.byteArrayToString(pstObjectResultInfo.stBigImageInfo.szUrl)); Vector ObjectVector = new Vector(); ObjectVector.add(Integer.toString(pstObjectResultInfo.udwRecordID)); if(0 == pstObjectResultInfo.udwType) { ObjectVector.add("Cross line"); } else if(1 == pstObjectResultInfo.udwType) { ObjectVector.add("Object inside"); } else if(2 == pstObjectResultInfo.udwType) { ObjectVector.add("Enter area"); } else if(3 == pstObjectResultInfo.udwType) { ObjectVector.add("Leave area"); } else { ObjectVector.add("Unknow"); } ObjectVector.add(Integer.toString( pstObjectResultInfo.udwTime)); ObjectVector.add(Common.byteArrayToString(pstObjectResultInfo.szChannelName)); ObjectVector.add(Integer.toString(pstObjectResultInfo.udwChannelID)); NetDemo.ObjectSearchModel.addRow(ObjectVector); //大图信息 //System.out.printf("stBigImageInfo.udwSize:%d\n",pstObjectResultInfo.stBigImageInfo.udwSize); String strBigImageInfo = NetDemo.strPicturePath + Common.byteArrayToString(pstObjectResultInfo.stBigImageInfo.szName) +"_BigImage.jpg"; System.out.printf("stBigImageInfo1.udwSize:%d, data:%s\n",pstObjectResultInfo.stBigImageInfo.udwSize, pstObjectResultInfo.stBigImageInfo.pcData); if(0 != pstObjectResultInfo.stBigImageInfo.udwSize) { Common.savePicture(pstObjectResultInfo.stBigImageInfo.pcData, pstObjectResultInfo.stBigImageInfo.udwSize, strBigImageInfo); } //人员属性信息 //System.out.printf("ObjectInfo_PersonInfo,udwObjectType:%d, udwObjectID:%d,udwPersonID:%d, szPosition:%s \n",pstObjectInfoList[0].stObjectInfo.udwObjectType,pstObjectInfoList[0].udwObjectID, pstObjectInfoList[0].stObjectInfo.stPersonInfo.udwPersonID,Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stPersonInfo.szPosition)); //System.out.printf("ObjectInfo_PersonInfo_Person,udwGender:%d, udwAgeRange:%d, udwSleevesLength:%d,udwCoatColor:%d, udwTrousersLength:%d,udwTrousersColor:%d,udwBodyToward:%d,udwShoesTubeLength:%d,udwHairLength:%d,udwBagFlag:%d\n",pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwGender, pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwAgeRange,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwSleevesLength,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwCoatColor,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwTrousersLength,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwTrousersColor,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwBodyToward,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwShoesTubeLength,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwHairLength,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwBagFlag); //非机动车信息 //System.out.printf("ObjectInfo_NonMotorVeh,udwID:%d, szPosition:%s,udwSmallPicAttachIndex:%d, udwLargePicAttachIndex:%d\n",pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.udwID, Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.szPosition), pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.udwSmallPicAttachIndex, pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.udwLargePicAttachIndex); //System.out.printf("ObjectInfo_NonMotorVeh_VehAttr,udwSpeedType:%d, udwImageDirection:%d, udwNonVehicleType:%d\n",pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.stNoMotorVehAttr.udwSpeedType, pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.stNoMotorVehAttr.udwImageDirection, pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.stNoMotorVehAttr.udwNonVehicleType); //for(int i = 0; i < 1;i++ ) //{ //System.out.printf("ObjectInfo_NonMotorVeh_Person, CoatColor:%d, TrousersColor:%d,\n", pstPersonAttr[i].udwCoatColor, pstPersonAttr[i].udwTrousersColor); //} //机动车信息 //System.out.printf("ObjectInfo_stVehInfo,udwID:%d, szPosition:%s\n",pstObjectInfoList[0].stObjectInfo.stVehInfo.udwID, Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stVehInfo.szPosition)); //System.out.printf("ObjectInfo_stVehInfo_VehAttr,udwType:%d, udwColor:%d, udwSpeedUnit:%d,fSpeedValue:%f,udwSpeedType:%d,szVehicleBrand:%s,udwImageDirection:%d\n",pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwType,pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwColor,pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwSpeedUnit,pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.fSpeedValue,pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwSpeedType, Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.szVehicleBrand),pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwImageDirection); //System.out.printf("ObjectInfo_stVehInfo_PlateAttr,szPlateNo:%s, udwColor:%d, udwType:%d\n", Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stVehInfo.stPlateAttr.szPlateNo),pstObjectInfoList[0].stObjectInfo.stVehInfo.stPlateAttr.udwColor,pstObjectInfoList[0].stObjectInfo.stVehInfo.stPlateAttr.udwType); } } } bRet = NetDemo.netdevsdk.NETDEV_FindCloseObjectSearchList(lpFindHandle); if(bRet != true) { System.out.printf("NETDEV_FindCloseObjectSearchList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } } } } public static void objectfindNext() { NetDemo.ObjectSearchModel.setRowCount(0); if(0 < NetDemo.udwObjectSearchTotalNum) { NETDEV_PIC_QUERY_COND_S pstQueryCond = new NETDEV_PIC_QUERY_COND_S(); pstQueryCond.udwOffset = NetDemo.dwTime * 10; pstQueryCond.udwSearchID = NetDemo.udwObjectSearchID; pstQueryCond.udwLimit = 10; NetDemo.gstQueryCond.udwOffset = pstQueryCond.udwOffset; NetDemo.gstQueryCond.udwSearchID = pstQueryCond.udwSearchID; NetDemo.gstQueryCond.udwLimit = pstQueryCond.udwLimit; NETDEV_PIC_QUERY_RESULT_S pstQueryResult = new NETDEV_PIC_QUERY_RESULT_S(); pstQueryCond.write(); Pointer lpFindHandle = NetDemo.netdevsdk.NETDEV_FindObjectSearchList(NetDemo.lpUserID, pstQueryCond, pstQueryResult); if(null == lpFindHandle) { System.out.printf("NETDEV_FindObjectSearchList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } else { pstQueryResult.read(); NetDemo.textField_Total.setText(Integer.toString(pstQueryResult.udwTotal)); NetDemo.udwObjectSearchTotalNum = NetDemo.udwObjectSearchTotalNum - pstQueryResult.udwNum; NetDemo.textField_Remain.setText(Integer.toString(NetDemo.udwObjectSearchTotalNum)); NetDemo.dwTime = NetDemo.dwTime + 1; while(0 != pstQueryResult.udwNum) { NETDEV_OBJECT_RESULT_INFO_S pstObjectResultInfo = new NETDEV_OBJECT_RESULT_INFO_S(); pstObjectResultInfo.stBigImageInfo = new NETDEV_FILE_INFO_S(); pstObjectResultInfo.stBigImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE; pstObjectResultInfo.stBigImageInfo.pcData = new Memory(pstObjectResultInfo.stBigImageInfo.udwSize); pstObjectResultInfo.udwObjectInfoNum = 1; NETDEV_OBJECT_INFO_LIST_S[] pstObjectInfoList = new NETDEV_OBJECT_INFO_LIST_S[1]; NETDEV_PERSON_ATTR_S[] pstPersonAttr = new NETDEV_PERSON_ATTR_S[1]; for(int i = 0; i < pstObjectResultInfo.udwObjectInfoNum; ++i) { pstObjectInfoList[i] = new NETDEV_OBJECT_INFO_LIST_S(); pstObjectInfoList[i].stSmallImageInfo = new NETDEV_FILE_INFO_S(); pstObjectInfoList[i].stSmallImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE; pstObjectInfoList[i].stSmallImageInfo.pcData = new Memory(pstObjectInfoList[i].stSmallImageInfo.udwSize); pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.udwPersonOnNoVehiNum = 1; for(int j = 0; j < pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.udwPersonOnNoVehiNum; ++j) { pstPersonAttr[j] = new NETDEV_PERSON_ATTR_S(); } pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.pstPersonAttr = new Memory(pstPersonAttr[0].size()*pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.udwPersonOnNoVehiNum); Common.SetStructArrToPointerData(pstPersonAttr, pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.pstPersonAttr); } pstObjectResultInfo.pstObjectInfoList = new Memory(pstObjectInfoList[0].size()*pstObjectResultInfo.udwObjectInfoNum); Common.SetStructArrToPointerData(pstObjectInfoList, pstObjectResultInfo.pstObjectInfoList); pstObjectResultInfo.write(); boolean bRet = NetDemo.netdevsdk.NETDEV_FindNextObjectSearchInfo(lpFindHandle, pstObjectResultInfo); if(bRet != true) { System.out.printf("NETDEV_FindNextObjectSearchInfo failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); break; } else { pstQueryResult.udwNum --; pstObjectResultInfo.read(); pstObjectInfoList = Common.pointerToStructureArray(pstObjectResultInfo.udwObjectInfoNum,pstObjectResultInfo.pstObjectInfoList, NETDEV_OBJECT_INFO_LIST_S.class); for(int i = 0; i< 1; i ++) { pstPersonAttr = Common.pointerToStructureArray(1,pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.pstPersonAttr, NETDEV_PERSON_ATTR_S.class); } //System.out.printf("NETDEV_FindNextObjectSearchInfo,udwNum:%d,udwRecordID:%d, udwType:%d,udwTime:%d, szChannelName:%s,udwChannelID:%d\n",pstQueryResult.udwNum, pstObjectResultInfo.udwRecordID, pstObjectResultInfo.udwType, pstObjectResultInfo.udwTime, Common.byteArrayToString(pstObjectResultInfo.szChannelName),pstObjectResultInfo.udwChannelID); //System.out.printf("stBigImageInfo,Name:%s,szUrl:%s\n", Common.byteArrayToString(pstObjectResultInfo.stBigImageInfo.szName), Common.byteArrayToString(pstObjectResultInfo.stBigImageInfo.szUrl)); Vector ObjectVector = new Vector(); ObjectVector.add(Integer.toString(pstObjectResultInfo.udwRecordID)); if(0 == pstObjectResultInfo.udwType) { ObjectVector.add("Cross line"); } else if(1 == pstObjectResultInfo.udwType) { ObjectVector.add("Object inside"); } else if(2 == pstObjectResultInfo.udwType) { ObjectVector.add("Enter area"); } else if(3 == pstObjectResultInfo.udwType) { ObjectVector.add("Leave area"); } else { ObjectVector.add("Unknow"); } ObjectVector.add(Integer.toString( pstObjectResultInfo.udwTime)); ObjectVector.add(Common.byteArrayToString(pstObjectResultInfo.szChannelName)); ObjectVector.add(Integer.toString(pstObjectResultInfo.udwChannelID)); NetDemo.ObjectSearchModel.addRow(ObjectVector); //大图信息 //System.out.printf("stBigImageInfo.udwSize:%d\n",pstObjectResultInfo.stBigImageInfo.udwSize); String strBigImageInfo = NetDemo.strPicturePath + Common.byteArrayToString(pstObjectResultInfo.stBigImageInfo.szName) +"_BigImage.jpg"; System.out.printf("stBigImageInfo.udwSize:%d, data:%s\n",pstObjectResultInfo.stBigImageInfo.udwSize, pstObjectResultInfo.stBigImageInfo.pcData); if(0 != pstObjectResultInfo.stBigImageInfo.udwSize) { Common.savePicture(pstObjectResultInfo.stBigImageInfo.pcData, pstObjectResultInfo.stBigImageInfo.udwSize, strBigImageInfo); } //人员属性信息 //System.out.printf("ObjectInfo_PersonInfo,udwObjectType:%d, udwObjectID:%d,udwPersonID:%d, szPosition:%s \n",pstObjectInfoList[0].stObjectInfo.udwObjectType,pstObjectInfoList[0].udwObjectID, pstObjectInfoList[0].stObjectInfo.stPersonInfo.udwPersonID,Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stPersonInfo.szPosition)); //System.out.printf("ObjectInfo_PersonInfo_Person,udwGender:%d, udwAgeRange:%d, udwSleevesLength:%d,udwCoatColor:%d, udwTrousersLength:%d,udwTrousersColor:%d,udwBodyToward:%d,udwShoesTubeLength:%d,udwHairLength:%d,udwBagFlag:%d\n",pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwGender, pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwAgeRange,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwSleevesLength,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwCoatColor,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwTrousersLength,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwTrousersColor,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwBodyToward,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwShoesTubeLength,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwHairLength,pstObjectInfoList[0].stObjectInfo.stPersonInfo.stPersonAttr.udwBagFlag); //非机动车信息 //System.out.printf("ObjectInfo_NonMotorVeh,udwID:%d, szPosition:%s,udwSmallPicAttachIndex:%d, udwLargePicAttachIndex:%d\n",pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.udwID, Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.szPosition), pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.udwSmallPicAttachIndex, pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.udwLargePicAttachIndex); //System.out.printf("ObjectInfo_NonMotorVeh_VehAttr,udwSpeedType:%d, udwImageDirection:%d, udwNonVehicleType:%d\n",pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.stNoMotorVehAttr.udwSpeedType, pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.stNoMotorVehAttr.udwImageDirection, pstObjectInfoList[0].stObjectInfo.stNonMotorVehInfo.stNoMotorVehAttr.udwNonVehicleType); //for(int i = 0; i < 1;i++ ) //{ //System.out.printf("ObjectInfo_NonMotorVeh_Person, CoatColor:%d, TrousersColor:%d,\n", pstPersonAttr[i].udwCoatColor, pstPersonAttr[i].udwTrousersColor); //} //机动车信息 //System.out.printf("ObjectInfo_stVehInfo,udwID:%d, szPosition:%s\n",pstObjectInfoList[0].stObjectInfo.stVehInfo.udwID, Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stVehInfo.szPosition)); //System.out.printf("ObjectInfo_stVehInfo_VehAttr,udwType:%d, udwColor:%d, udwSpeedUnit:%d,fSpeedValue:%f,udwSpeedType:%d,szVehicleBrand:%s,udwImageDirection:%d\n",pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwType,pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwColor,pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwSpeedUnit,pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.fSpeedValue,pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwSpeedType, Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.szVehicleBrand),pstObjectInfoList[0].stObjectInfo.stVehInfo.stVehAttr.udwImageDirection); //System.out.printf("ObjectInfo_stVehInfo_PlateAttr,szPlateNo:%s, udwColor:%d, udwType:%d\n", Common.byteArrayToString(pstObjectInfoList[0].stObjectInfo.stVehInfo.stPlateAttr.szPlateNo),pstObjectInfoList[0].stObjectInfo.stVehInfo.stPlateAttr.udwColor,pstObjectInfoList[0].stObjectInfo.stVehInfo.stPlateAttr.udwType); } } } boolean bRet = NetDemo.netdevsdk.NETDEV_FindCloseObjectSearchList(lpFindHandle); if(bRet != true) { System.out.printf("NETDEV_FindCloseObjectSearchList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } } else { NetDemo.btnNewButton_2.setEnabled(false); NetDemo.btnNewButton_3.setEnabled(false); JOptionPane.showMessageDialog(null, "Target data query completed"); return; } } public static void getSmallPic() { NETDEV_PIC_QUERY_COND_S pstQueryCond = new NETDEV_PIC_QUERY_COND_S(); pstQueryCond.udwOffset = NetDemo.gstQueryCond.udwOffset; pstQueryCond.udwSearchID = NetDemo.gstQueryCond.udwSearchID; pstQueryCond.udwLimit = NetDemo.gstQueryCond.udwLimit; //判断是否有小图上报 boolean flag = false; NETDEV_PIC_QUERY_RESULT_S pstQueryResult = new NETDEV_PIC_QUERY_RESULT_S(); pstQueryCond.write(); Pointer lpFindHandle = NetDemo.netdevsdk.NETDEV_FindObjectSearchList(NetDemo.lpUserID, pstQueryCond, pstQueryResult); if(null == lpFindHandle) { System.out.printf("NETDEV_FindObjectSearchList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } else { pstQueryResult.read(); while(0 != pstQueryResult.udwNum) { NETDEV_OBJECT_RESULT_INFO_S pstObjectResultInfo = new NETDEV_OBJECT_RESULT_INFO_S(); pstObjectResultInfo.stBigImageInfo = new NETDEV_FILE_INFO_S(); pstObjectResultInfo.stBigImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE; pstObjectResultInfo.stBigImageInfo.pcData = new Memory(pstObjectResultInfo.stBigImageInfo.udwSize); pstObjectResultInfo.udwObjectInfoNum = 1; NETDEV_OBJECT_INFO_LIST_S[] pstObjectInfoList = new NETDEV_OBJECT_INFO_LIST_S[1]; NETDEV_PERSON_ATTR_S[] pstPersonAttr = new NETDEV_PERSON_ATTR_S[1]; for(int i = 0; i < pstObjectResultInfo.udwObjectInfoNum; ++i) { pstObjectInfoList[i] = new NETDEV_OBJECT_INFO_LIST_S(); pstObjectInfoList[i].stSmallImageInfo = new NETDEV_FILE_INFO_S(); pstObjectInfoList[i].stSmallImageInfo.udwSize = Common.NETDEMO_PICTURE_SIZE; pstObjectInfoList[i].stSmallImageInfo.pcData = new Memory(pstObjectInfoList[i].stSmallImageInfo.udwSize); pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.udwPersonOnNoVehiNum = 1; for(int j = 0; j < pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.udwPersonOnNoVehiNum; ++j) { pstPersonAttr[j] = new NETDEV_PERSON_ATTR_S(); } pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.pstPersonAttr = new Memory(pstPersonAttr[0].size()*pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.udwPersonOnNoVehiNum); Common.SetStructArrToPointerData(pstPersonAttr, pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.pstPersonAttr); } pstObjectResultInfo.pstObjectInfoList = new Memory(pstObjectInfoList[0].size()*pstObjectResultInfo.udwObjectInfoNum); Common.SetStructArrToPointerData(pstObjectInfoList, pstObjectResultInfo.pstObjectInfoList); pstObjectResultInfo.write(); boolean bRet = NetDemo.netdevsdk.NETDEV_FindNextObjectSearchInfo(lpFindHandle, pstObjectResultInfo); if(bRet != true) { System.out.printf("NETDEV_FindNextObjectSearchInfo failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); break; } else { pstQueryResult.udwNum --; pstObjectResultInfo.read(); pstObjectInfoList = Common.pointerToStructureArray(pstObjectResultInfo.udwObjectInfoNum,pstObjectResultInfo.pstObjectInfoList, NETDEV_OBJECT_INFO_LIST_S.class); for(int i = 0; i< 1; i ++) { pstPersonAttr = Common.pointerToStructureArray(1,pstObjectInfoList[i].stObjectInfo.stNonMotorVehInfo.pstPersonAttr, NETDEV_PERSON_ATTR_S.class); } String strSmallImageInfo = NetDemo.strPicturePath + Common.byteArrayToString(pstObjectInfoList[0].stSmallImageInfo.szName) +"_SmallImage.jpg"; System.out.printf("stSmallImageInfo.udwSize:%d, data:%s\n",pstObjectInfoList[0].stSmallImageInfo.udwSize, pstObjectInfoList[0].stSmallImageInfo.pcData); if(0 != pstObjectInfoList[0].stSmallImageInfo.udwSize) { Common.savePicture(pstObjectInfoList[0].stSmallImageInfo.pcData, pstObjectInfoList[0].stSmallImageInfo.udwSize, strSmallImageInfo); flag = true; } } } } boolean bRet = NetDemo.netdevsdk.NETDEV_FindCloseObjectSearchList(lpFindHandle); if(bRet != true) { System.out.printf("NETDEV_FindCloseObjectSearchList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } if(false == flag) { JOptionPane.showMessageDialog(null, "No Small Picture Info"); }else { JOptionPane.showMessageDialog(null, "Save Object Small picture success"); } } public static void findAlarm() { if(null == NetDemo.lpUserID){ JOptionPane.showMessageDialog(null, "Please Login device first."); return; } NetDemo.AlarmSearchModel.setRowCount(0); NETDEV_ALARM_LOG_COND_LIST_S stAlarmCond = new NETDEV_ALARM_LOG_COND_LIST_S(); for(int i = 0; i< NetDemo.netdevsdk.NETDEV_LOG_QUERY_COND_NUM; i++) { stAlarmCond.astCondition[i] = new NETDEV_QUERY_INFO_S(); } stAlarmCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_RANGE; stAlarmCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_EQUAL; Common.stringToByteArray(String.valueOf(0), stAlarmCond.astCondition[0].szConditionData); stAlarmCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME; stAlarmCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS; Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(NetDemo.textField_BeginTime.getText(), DateFormat)), stAlarmCond.astCondition[1].szConditionData); stAlarmCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME; stAlarmCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER; Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(NetDemo.textField_EndTime.getText(), DateFormat)), stAlarmCond.astCondition[2].szConditionData); stAlarmCond.astCondition[3].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME; stAlarmCond.astCondition[3].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER; if(0 != NetDemo.comboBox_1.getSelectedIndex()) { if(1 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1003", stAlarmCond.astCondition[4].szConditionData); } else if(2 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1004", stAlarmCond.astCondition[4].szConditionData); } else if(3 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1015", stAlarmCond.astCondition[4].szConditionData); } else if(4 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1016", stAlarmCond.astCondition[4].szConditionData); } stAlarmCond.astCondition[4].dwQueryType = 8; stAlarmCond.astCondition[4].dwLogicFlag = 7; stAlarmCond.dwCondSize = 5; } else { stAlarmCond.dwCondSize = 4; } stAlarmCond.dwPageRow = 20; stAlarmCond.dwFirstRow = 0; IntByReference pdwTotalRealRow = new IntByReference(0); stAlarmCond.write(); Pointer lpFindHandle = NetDemo.netdevsdk.NETDEV_FindAlarmLogList(NetDemo.lpUserID, stAlarmCond, pdwTotalRealRow); if(null == lpFindHandle) { System.out.printf("NETDEV_FindAlarmLogList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } else { NetDemo.btnNewButton_4.setEnabled(true); NetDemo.textField_AlarmTotal.setText(Integer.toString(pdwTotalRealRow.getValue())); int TotalNum = pdwTotalRealRow.getValue(); NetDemo.dwAlarmSearchTime = 1; NetDemo.AlarmSearchModel.setRowCount(0); NetDemo.dwAlarmSearchTotal = TotalNum; if(0 <= NetDemo.dwAlarmSearchTotal-20) { NetDemo.textField_AlarmRemain.setText(Integer.toString(NetDemo.dwAlarmSearchTotal-20)); } else { NetDemo.textField_AlarmRemain.setText(Integer.toString(0)); } while(0 <= TotalNum && 0 <= stAlarmCond.dwPageRow) { NETDEV_ALARM_LOG_INFO_S stAlarmLogInfo = new NETDEV_ALARM_LOG_INFO_S(); boolean bRet = NetDemo.netdevsdk.NETDEV_FindNextAlarmLog(lpFindHandle, stAlarmLogInfo); if(bRet != true) { System.out.printf("NETDEV_FindNextAlarmLog failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); break; } else { TotalNum = TotalNum - 1; stAlarmCond.dwPageRow = stAlarmCond.dwPageRow - 1; stAlarmLogInfo.read(); Vector ObjectVector = new Vector(); ObjectVector.add(Integer.toString(stAlarmLogInfo.dwAlarmID)); ObjectVector.add(Common.AlarmTypeToString(stAlarmLogInfo.dwAlarmType)); ObjectVector.add(Long.toString(stAlarmLogInfo.tAlarmTime)); ObjectVector.add(Common.byteArrayToString(stAlarmLogInfo.szAlarmSrc)); ObjectVector.add(Integer.toString(stAlarmLogInfo.dwChannelID)); NetDemo.AlarmSearchModel.addRow(ObjectVector); } } } boolean bRet = NetDemo.netdevsdk.NETDEV_FindCloseAlarmLog(lpFindHandle); if(bRet != true) { System.out.printf("NETDEV_FindCloseAlarmLog failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } } public static void findNextAlarm() { if(null == NetDemo.lpUserID){ JOptionPane.showMessageDialog(null, "Please Login device first."); return; } NetDemo.AlarmSearchModel.setRowCount(0); NetDemo.dwAlarmSearchTotal = NetDemo.dwAlarmSearchTotal - 20; if(NetDemo.dwAlarmSearchTotal <= 0) { NetDemo.btnNewButton_4.setEnabled(false); JOptionPane.showMessageDialog(null, "Target data query completed"); return; } NETDEV_ALARM_LOG_COND_LIST_S stAlarmCond = new NETDEV_ALARM_LOG_COND_LIST_S(); for(int i = 0; i< NetDemo.netdevsdk.NETDEV_LOG_QUERY_COND_NUM; i++) { stAlarmCond.astCondition[i] = new NETDEV_QUERY_INFO_S(); } stAlarmCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_RANGE; stAlarmCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_EQUAL; Common.stringToByteArray(String.valueOf(0), stAlarmCond.astCondition[0].szConditionData); stAlarmCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME; stAlarmCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS; Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(NetDemo.textField_BeginTime.getText(), DateFormat)), stAlarmCond.astCondition[1].szConditionData); stAlarmCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME; stAlarmCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER; Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(NetDemo.textField_EndTime.getText(), DateFormat)), stAlarmCond.astCondition[2].szConditionData); stAlarmCond.astCondition[3].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME; stAlarmCond.astCondition[3].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER; if(0 != NetDemo.comboBox_1.getSelectedIndex()) { if(1 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1003", stAlarmCond.astCondition[4].szConditionData); } else if(2 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1004", stAlarmCond.astCondition[4].szConditionData); } else if(3 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1015", stAlarmCond.astCondition[4].szConditionData); } else if(4 == NetDemo.comboBox_1.getSelectedIndex()) { Common.stringToByteArray("1016", stAlarmCond.astCondition[4].szConditionData); } stAlarmCond.astCondition[4].dwQueryType = 8; stAlarmCond.astCondition[4].dwLogicFlag = 7; stAlarmCond.dwCondSize = 5; } else { stAlarmCond.dwCondSize = 4; } stAlarmCond.dwPageRow = 20; stAlarmCond.dwFirstRow = NetDemo.dwAlarmSearchTime * 20; IntByReference pdwTotalRealRow = new IntByReference(0); stAlarmCond.write(); Pointer lpFindHandle = NetDemo.netdevsdk.NETDEV_FindAlarmLogList(NetDemo.lpUserID, stAlarmCond, pdwTotalRealRow); if(null == lpFindHandle) { System.out.printf("NETDEV_FindAlarmLogList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); JOptionPane.showMessageDialog(null, "Target data query completed"); return; } else { NetDemo.textField_AlarmTotal.setText(Integer.toString(pdwTotalRealRow.getValue())); if(0 <= NetDemo.dwAlarmSearchTotal-20) { NetDemo.textField_AlarmRemain.setText(Integer.toString(NetDemo.dwAlarmSearchTotal-20)); } else { NetDemo.textField_AlarmRemain.setText(Integer.toString(0)); } int TotalNum = NetDemo.dwAlarmSearchTotal; NetDemo.dwAlarmSearchTime = NetDemo.dwAlarmSearchTime +1 ; //textField_5.setText(Integer.toString(dwAlarmSearchTotal-20*dwAlarmSearchTime)); NetDemo.AlarmSearchModel.setRowCount(0); while(0 <= stAlarmCond.dwPageRow) { NETDEV_ALARM_LOG_INFO_S stAlarmLogInfo = new NETDEV_ALARM_LOG_INFO_S(); boolean bRet = NetDemo.netdevsdk.NETDEV_FindNextAlarmLog(lpFindHandle, stAlarmLogInfo); if(bRet != true) { System.out.printf("NETDEV_FindNextAlarmLog failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); break; } else { TotalNum = TotalNum - 1; stAlarmCond.dwPageRow = stAlarmCond.dwPageRow - 1; stAlarmLogInfo.read(); Vector ObjectVector = new Vector(); ObjectVector.add(Integer.toString(stAlarmLogInfo.dwAlarmID)); ObjectVector.add(Common.AlarmTypeToString(stAlarmLogInfo.dwAlarmType)); ObjectVector.add(Long.toString(stAlarmLogInfo.tAlarmTime)); ObjectVector.add(Common.byteArrayToString(stAlarmLogInfo.szAlarmSrc)); ObjectVector.add(Integer.toString(stAlarmLogInfo.dwChannelID)); NetDemo.AlarmSearchModel.addRow(ObjectVector); } } } boolean bRet = NetDemo.netdevsdk.NETDEV_FindCloseAlarmLog(lpFindHandle); if(bRet != true) { System.out.printf("NETDEV_FindCloseAlarmLog failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } } public static void getRelatedData() { if(null == NetDemo.lpUserID){ JOptionPane.showMessageDialog(null, "Please Login device first."); return; } if(NetDemo.dwAlarmID == -1){ JOptionPane.showMessageDialog(null, "Please select an AlarmID."); return; } Pointer lpFindHandle = NetDemo.netdevsdk.NETDEV_FindAlarmRelatedDataList(NetDemo.lpUserID,NetDemo.dwAlarmID); if(null == lpFindHandle) { System.out.printf("NETDEV_FindAlarmRelatedDataList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } NETDEV_ALARM_RELATED_DATA_S pstAlarmRelatedData = new NETDEV_ALARM_RELATED_DATA_S(); pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwPersonNum = 1; //人员信息分配内存 NETDEV_PERSON_STRUCT_INFO_S[] pstPersonInfo = new NETDEV_PERSON_STRUCT_INFO_S[pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwPersonNum]; for(int i = 0; i < pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwPersonNum; i++) { pstPersonInfo[i] = new NETDEV_PERSON_STRUCT_INFO_S(); } pstAlarmRelatedData.stStructDataInfo.stObjectInfo.pstPersonInfo= new Memory(pstPersonInfo[0].size()*pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwPersonNum); Common.SetStructArrToPointerData(pstPersonInfo, pstAlarmRelatedData.stStructDataInfo.stObjectInfo.pstPersonInfo); //车辆信息分配内存 pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwVehicleNum = 1; NETDEV_VEH_INFO_S[] pstVehInfo = new NETDEV_VEH_INFO_S[pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwVehicleNum]; for(int i = 0; i < pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwVehicleNum; i++) { pstVehInfo[i] = new NETDEV_VEH_INFO_S(); } pstAlarmRelatedData.stStructDataInfo.stObjectInfo.pstVehInfo = new Memory(pstVehInfo[0].size()*pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwVehicleNum); Common.SetStructArrToPointerData(pstVehInfo, pstAlarmRelatedData.stStructDataInfo.stObjectInfo.pstVehInfo); //非机动车信息 pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwNonMotorVehNum = 1; NETDEV_NON_MOTOR_VEH_INFO_S[] pstNonMotorVehInfo = new NETDEV_NON_MOTOR_VEH_INFO_S[pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwNonMotorVehNum]; NETDEV_PERSON_ATTR_S[] pstPersonAttr = new NETDEV_PERSON_ATTR_S[1]; for(int i = 0; i < pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwNonMotorVehNum; i++) { pstNonMotorVehInfo[i] = new NETDEV_NON_MOTOR_VEH_INFO_S(); pstNonMotorVehInfo[i].udwPersonOnNoVehiNum = 1; for(int j = 0; j < pstNonMotorVehInfo[i].udwPersonOnNoVehiNum; ++j) { pstPersonAttr[j] = new NETDEV_PERSON_ATTR_S(); } pstNonMotorVehInfo[i].pstPersonAttr = new Memory(pstPersonAttr[0].size()*pstNonMotorVehInfo[i].udwPersonOnNoVehiNum); Common.SetStructArrToPointerData(pstPersonAttr, pstNonMotorVehInfo[i].pstPersonAttr); } pstAlarmRelatedData.stStructDataInfo.stObjectInfo.pstNonMotorVehInfo = new Memory(pstNonMotorVehInfo[0].size()*pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwNonMotorVehNum); Common.SetStructArrToPointerData(pstNonMotorVehInfo, pstAlarmRelatedData.stStructDataInfo.stObjectInfo.pstNonMotorVehInfo); //图片信息 pstAlarmRelatedData.stStructDataInfo.udwImageNum = 2; NETDEV_STRUCT_IMAGE_INFO_S[] pstImageInfo = new NETDEV_STRUCT_IMAGE_INFO_S[pstAlarmRelatedData.stStructDataInfo.udwImageNum]; for(int j = 0; j < pstAlarmRelatedData.stStructDataInfo.udwImageNum; j++) { pstImageInfo[j] = new NETDEV_STRUCT_IMAGE_INFO_S(); pstImageInfo[j].udwSize = Common.NETDEMO_PICTURE_SIZE; pstImageInfo[j].pszData = new Memory(pstImageInfo[j].udwSize); } pstAlarmRelatedData.stStructDataInfo.pstImageInfo= new Memory(pstImageInfo[0].size()*pstAlarmRelatedData.stStructDataInfo.udwImageNum); Common.SetStructArrToPointerData(pstImageInfo, pstAlarmRelatedData.stStructDataInfo.pstImageInfo); pstAlarmRelatedData.write(); boolean bRet = NetDemo.netdevsdk.NETDEV_FindNextAlarmRelatedDataInfo(lpFindHandle, pstAlarmRelatedData); if(bRet != true) { System.out.printf("NETDEV_FindNextAlarmRelatedDataInfo failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } else { pstAlarmRelatedData.read(); pstPersonInfo = Common.pointerToStructureArray(pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwPersonNum,pstAlarmRelatedData.stStructDataInfo.stObjectInfo.pstPersonInfo, NETDEV_PERSON_STRUCT_INFO_S.class); pstVehInfo = Common.pointerToStructureArray(pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwVehicleNum, pstAlarmRelatedData.stStructDataInfo.stObjectInfo.pstVehInfo, NETDEV_VEH_INFO_S.class); pstImageInfo = Common.pointerToStructureArray(pstAlarmRelatedData.stStructDataInfo.udwImageNum,pstAlarmRelatedData.stStructDataInfo.pstImageInfo, NETDEV_STRUCT_IMAGE_INFO_S.class); pstNonMotorVehInfo = Common.pointerToStructureArray(pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwNonMotorVehNum, pstAlarmRelatedData.stStructDataInfo.stObjectInfo.pstNonMotorVehInfo, NETDEV_NON_MOTOR_VEH_INFO_S.class); for(int i = 0; i< 1; i ++) { pstPersonAttr = Common.pointerToStructureArray(1,pstNonMotorVehInfo[i].pstPersonAttr, NETDEV_PERSON_ATTR_S.class); } //人员信息 //System.out.printf("personNum:%d,udwPersonID:%d, udwPersonDoforFaceID:%d, szPosition:%s, udwSmallPicAttachIndex:%d\n",pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwPersonNum, pstPersonInfo[0].udwPersonID, pstPersonInfo[0].udwPersonDoforFaceID, Common.byteArrayToString(pstPersonInfo[0].szPosition), pstPersonInfo[0].udwSmallPicAttachIndex); //System.out.printf("CoatColor:%d,rousersColor:%d\n",pstPersonInfo[0].stPersonAttr.udwCoatColor, pstPersonInfo[0].stPersonAttr.udwTrousersColor); //车辆信息 //System.out.printf("VehicleNum:%d,udwID:%d, szPosition:%s, udwSmallPicAttachIndex:%d\n",pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwVehicleNum, pstVehInfo[0].udwID, Common.byteArrayToString(pstVehInfo[0].szPosition), pstVehInfo[0].udwSmallPicAttachIndex); //System.out.printf("VehAttr, udwType:%d, udwColor:%d\n",pstVehInfo[0].stVehAttr.udwType,pstVehInfo[0].stVehAttr.udwColor); //System.out.printf("PlateAttr, udwType:%d, udwColor:%d\n",pstVehInfo[0].stPlateAttr.udwType, pstVehInfo[0].stPlateAttr.udwColor); //非机动车信息 //System.out.printf("NonMotorVehicleNum:%d,udwID:%d, szPosition:%s, udwSmallPicAttachIndex:%d\n",pstAlarmRelatedData.stStructDataInfo.stObjectInfo.udwNonMotorVehNum, pstNonMotorVehInfo[0].udwID, Common.byteArrayToString(pstNonMotorVehInfo[0].szPosition), pstNonMotorVehInfo[0].udwSmallPicAttachIndex); //System.out.printf("PersonOnNoVehicle, PersonOnNoVehicleNum:%d, CoatColor:%d,TrousersColor:%d\n",pstNonMotorVehInfo[0].udwPersonOnNoVehiNum,pstPersonAttr[0].udwCoatColor, pstPersonAttr[0].udwTrousersColor); if(0 < pstAlarmRelatedData.stStructDataInfo.udwImageNum) { //图片信息 for(int j = 0; j < pstAlarmRelatedData.stStructDataInfo.udwImageNum; j++ ) { String strImageInfo = NetDemo.strPicturePath + "RelatedAlarmPic_" + NetDemo.dwAlarmID + "_" +"Image" + j +".jpg"; if(0 != pstImageInfo[j].udwSize) { Common.savePicture(pstImageInfo[j].pszData, pstImageInfo[j].udwSize, strImageInfo); JOptionPane.showMessageDialog(null, "The " + (j+1) + " picture was saved successfully"); } else { JOptionPane.showMessageDialog(null, "The Size of the "+ (j+1) + " picture is 0"); } } } else { JOptionPane.showMessageDialog(null, " Image Num is 0"); } } bRet = NetDemo.netdevsdk.NETDEV_FindCloseAlarmRelatedDataList(lpFindHandle); if(bRet != true) { System.out.printf("NETDEV_FindCloseAlarmRelatedDataList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError()); return; } } }