package com.ycl.api.YS.vca.vehicle;
|
|
import com.sun.jna.Memory;
|
import com.sun.jna.Pointer;
|
import com.ycl.api.YS.NetDemo;
|
import com.ycl.api.YS.util.Common;
|
import com.ycl.api.YS.lib.NetDEVSDKLib.*;
|
|
import javax.swing.*;
|
|
/**
|
* @description To query the vehicle alarm record.
|
* @introduction Only support VMS.
|
*/
|
public class VehicleAlarmRecord {
|
/**
|
* @introduction To query the vehicle alarm record.
|
* @description Calling the interface of NETDEV_FindNextVehicleRecordInfo and NETDEV_FindCloseVehicleRecordList.
|
*/
|
public static void queryVehicleAlarmRecord() {
|
if(null == NetDemo.lpUserID)
|
{
|
JOptionPane.showMessageDialog(null, "Please Login device first. error code"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
return;
|
}
|
boolean bRet = false;
|
NETDEV_ALARM_LOG_COND_LIST_S stFindCond = new NETDEV_ALARM_LOG_COND_LIST_S();
|
NETDEV_SMART_ALARM_LOG_RESULT_INFO_S stResultInfo = new NETDEV_SMART_ALARM_LOG_RESULT_INFO_S();
|
|
stFindCond.dwFirstRow = 0;
|
stFindCond.dwPageRow = 20;
|
stFindCond.dwCondSize = 5;
|
|
stFindCond.astCondition[0] = new NETDEV_QUERY_INFO_S();
|
stFindCond.astCondition[1] = new NETDEV_QUERY_INFO_S();
|
stFindCond.astCondition[2] = new NETDEV_QUERY_INFO_S();
|
stFindCond.astCondition[3] = new NETDEV_QUERY_INFO_S();
|
stFindCond.astCondition[4] = new NETDEV_QUERY_INFO_S();
|
|
stFindCond.astCondition[0].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_VEH_DATA_TYPE;
|
stFindCond.astCondition[0].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DIM_QUERY;
|
Common.stringToByteArray("0", stFindCond.astCondition[0].szConditionData);
|
|
stFindCond.astCondition[1].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_ALARMTYPE;
|
stFindCond.astCondition[1].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_EQUAL;
|
if(NetDemo.jComboBoxVehicleAlarmMonitorType.getSelectedIndex() == 0)
|
{
|
Common.stringToByteArray("1022", stFindCond.astCondition[1].szConditionData); //NETDEV_ALARM_SMART_VEHICLE_MATCH_LIST
|
}
|
else if(NetDemo.jComboBoxVehicleAlarmMonitorType.getSelectedIndex() == 1)
|
{
|
Common.stringToByteArray("1024", stFindCond.astCondition[1].szConditionData); //NETDEV_ALARM_SMART_VEHICLE_MISMATCH_LIST
|
}
|
|
stFindCond.astCondition[2].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
stFindCond.astCondition[2].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_LESS;
|
String BeginTime = NetDemo.VehicleAlarmStartTime.getText();
|
String EndTime = NetDemo.VehicleAlarmEndTime.getText();
|
if(false == Common.isValidDate(BeginTime, NetDemo.DateFormat) ||false == Common.isValidDate(EndTime, NetDemo.DateFormat))
|
{
|
JOptionPane.showMessageDialog(null, "Please check that the time format is correct.");
|
return;
|
}
|
long get1=Common.date2TimeStamp(BeginTime, NetDemo.DateFormat);
|
long get2=Common.date2TimeStamp(EndTime, NetDemo.DateFormat);
|
if(get1>get2)
|
{
|
JOptionPane.showMessageDialog(null, " Start time can not more than end time");
|
return;
|
}
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(BeginTime, NetDemo.DateFormat)), stFindCond.astCondition[2].szConditionData);
|
stFindCond.astCondition[3].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
stFindCond.astCondition[3].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_NO_GREATER;
|
Common.stringToByteArray(String.valueOf(Common.date2TimeStamp(EndTime, NetDemo.DateFormat)), stFindCond.astCondition[3].szConditionData);
|
stFindCond.astCondition[4].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_TIME;
|
stFindCond.astCondition[4].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DESC_ORDER;
|
|
if(!NetDemo.jTextFieldVehicleAlarmBayonetName.getText().trim().equals(""))
|
{
|
stFindCond.astCondition[stFindCond.dwCondSize] = new NETDEV_QUERY_INFO_S();
|
stFindCond.astCondition[stFindCond.dwCondSize].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_CHNNAME;
|
stFindCond.astCondition[stFindCond.dwCondSize].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DIM_QUERY;
|
Common.stringToByteArray(NetDemo.jTextFieldVehicleAlarmBayonetName.getText(), stFindCond.astCondition[stFindCond.dwCondSize].szConditionData);
|
stFindCond.dwCondSize++;
|
}
|
|
if(!NetDemo.jTextFieldVehicleAlarmPlateNumber.getText().trim().equals(""))
|
{
|
stFindCond.astCondition[stFindCond.dwCondSize] = new NETDEV_QUERY_INFO_S();
|
stFindCond.astCondition[stFindCond.dwCondSize].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_PLATE_NUM;
|
stFindCond.astCondition[stFindCond.dwCondSize].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_DIM_QUERY;
|
Common.stringToByteArray(NetDemo.jTextFieldVehicleAlarmPlateNumber.getText(), stFindCond.astCondition[stFindCond.dwCondSize].szConditionData);
|
|
stFindCond.dwCondSize++;
|
}
|
if(NetDemo.jComboBoxVehicleAlarmPlateColor.getSelectedIndex() != 0)
|
{
|
stFindCond.astCondition[stFindCond.dwCondSize] = new NETDEV_QUERY_INFO_S();
|
stFindCond.astCondition[stFindCond.dwCondSize].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_PLATE_COLOR;
|
stFindCond.astCondition[stFindCond.dwCondSize].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_EQUAL;
|
Common.stringToByteArray(String.valueOf(Common.StringConventToEnumNETDEV_PLATE_COLOR_E(NetDemo.jComboBoxVehicleAlarmPlateColor.getSelectedItem().toString())), stFindCond.astCondition[stFindCond.dwCondSize].szConditionData);
|
|
stFindCond.dwCondSize++;
|
}
|
|
if(NetDemo.jComboBoxVehicleAlarmCarColor.getSelectedIndex() != 0)
|
{
|
stFindCond.astCondition[stFindCond.dwCondSize] = new NETDEV_QUERY_INFO_S();
|
stFindCond.astCondition[stFindCond.dwCondSize].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_VEHICLE_COLOR;
|
stFindCond.astCondition[stFindCond.dwCondSize].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_EQUAL;
|
Common.stringToByteArray(String.valueOf(Common.StringConventToEnumNETDEV_PLATE_COLOR_E(NetDemo.jComboBoxVehicleAlarmCarColor.getSelectedItem().toString())), stFindCond.astCondition[stFindCond.dwCondSize].szConditionData);
|
|
stFindCond.dwCondSize++;
|
}
|
if(NetDemo.jComboBoxVehicleAlarmMonitorReason.getSelectedIndex() != 0)
|
{
|
stFindCond.astCondition[stFindCond.dwCondSize] = new NETDEV_QUERY_INFO_S();
|
stFindCond.astCondition[stFindCond.dwCondSize].dwQueryType = NETDEV_QUERYCOND_TYPE_E.NETDEV_QUERYCOND_MONITOY_REASON;
|
stFindCond.astCondition[stFindCond.dwCondSize].dwLogicFlag = NETDEV_QUERYCOND_LOGICTYPE_E.NETDEV_QUERYCOND_LOGIC_EQUAL;
|
Common.stringToByteArray(String.valueOf(Common.StringConventToEnumNETDEV_VEHICLE_MONITOR_TYPE_E(NetDemo.jComboBoxVehicleAlarmMonitorReason.getSelectedItem().toString())), stFindCond.astCondition[stFindCond.dwCondSize].szConditionData);
|
stFindCond.dwCondSize++;
|
}
|
while(true)
|
{
|
Pointer lpFindVehicleRecordHandlePointer = NetDemo.netdevsdk.NETDEV_FindVehicleRecordInfoList(NetDemo.lpUserID, stFindCond, stResultInfo);
|
if(lpFindVehicleRecordHandlePointer != null)
|
{
|
while(true)
|
{
|
NETDEV_VEHICLE_RECORD_INFO_S stRecordInfo = new NETDEV_VEHICLE_RECORD_INFO_S();
|
stRecordInfo.stPlateAttr = new NETDEV_PLATE_ATTR_INFO_S();
|
stRecordInfo.stVehAttr = new NETDEV_VEH_ATTR_S();
|
stRecordInfo.stPlateImage = new NETDEV_FILE_INFO_S();
|
stRecordInfo.stPlateImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
stRecordInfo.stPlateImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
stRecordInfo.stVehicleImage = new NETDEV_FILE_INFO_S();
|
stRecordInfo.stVehicleImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
stRecordInfo.stVehicleImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
stRecordInfo.stPanoImage = new NETDEV_FILE_INFO_S();
|
stRecordInfo.stPanoImage.udwSize = Common.NETDEMO_PICTURE_SIZE;
|
stRecordInfo.stPanoImage.pcData = new Memory(Common.NETDEMO_PICTURE_SIZE);
|
|
stRecordInfo.stMonitorAlarmInfo = new NETDEV_MONITOR_ALARM_INFO_S();
|
|
bRet = NetDemo.netdevsdk.NETDEV_FindNextVehicleRecordInfo(lpFindVehicleRecordHandlePointer, stRecordInfo);
|
if(bRet == true)
|
{
|
//写文件
|
String strTime = Common.getDate();
|
/* 车牌抓拍图片 */
|
if( 0 < stRecordInfo.stPlateImage.udwSize)
|
{
|
String strFileName = NetDemo.strPicturePath + strTime +"Plate.jpg";
|
Common.savePicture(stRecordInfo.stPlateImage.pcData, stRecordInfo.stPlateImage.udwSize, strFileName);
|
}
|
else
|
{
|
System.out.println("stPlateImage failed");
|
}
|
|
/* 全景图 */
|
NETDEV_FILE_INFO_S stFileInfo = new NETDEV_FILE_INFO_S();
|
stFileInfo.udwSize = 1048576;
|
stFileInfo.pcData = new Memory(stFileInfo.udwSize);
|
boolean iRet = NetDemo.netdevsdk.NETDEV_GetVehicleRecordImageInfo(NetDemo.lpUserID, stRecordInfo.udwRecordID, stFileInfo);
|
if(iRet == true)
|
{
|
String strFileName = NetDemo.strPicturePath + strTime +"VehiclePanoImage.jpg";
|
Common.savePicture(stFileInfo.pcData, stFileInfo.udwSize, strFileName);
|
}
|
else
|
{
|
System.out.println("NETDEV_GetVehicleRecordImage failed,error code"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
}
|
}
|
else
|
{
|
System.out.println("Get picture failed,error code"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
break;
|
}
|
}
|
bRet = NetDemo.netdevsdk.NETDEV_FindCloseVehicleRecordList(lpFindVehicleRecordHandlePointer);
|
if(false == bRet){
|
System.out.printf("NETDEV_FindCloseVehicleRecordList failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError());
|
return;
|
}
|
}
|
else
|
{
|
JOptionPane.showMessageDialog(null, "Query ended");
|
break;
|
}
|
if(stFindCond.dwFirstRow >= stResultInfo.udwTotal)
|
{
|
break;
|
}
|
stFindCond.dwFirstRow += stFindCond.dwPageRow;
|
}
|
|
}
|
}
|