package com.ycl.api.YS.config.motion;
|
|
import com.sun.jna.ptr.IntByReference;
|
import com.ycl.api.YS.NetDemo;
|
import com.ycl.api.YS.lib.NetDEVSDKLib.*;
|
|
import javax.swing.*;
|
import java.awt.event.ItemEvent;
|
|
/**
|
*
|
* @introduction Motion Area
|
* @description Support IPC
|
*/
|
public class MotionArea {
|
|
/**
|
*
|
* @introduction Get motion area
|
* @description Calling the interface of NETDEV_GetDevConfig
|
*
|
*/
|
public static void getMotionArea() {
|
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;
|
}
|
|
NETDEV_MOTION_DETECTION_AREA_TYPE_S stMotionAreaType = new NETDEV_MOTION_DETECTION_AREA_TYPE_S();
|
stMotionAreaType.write();
|
IntByReference dwBytesReturned = new IntByReference();
|
|
boolean bRet = NetDemo.netdevsdk.NETDEV_GetDevConfig(NetDemo.lpUserID, NetDemo.ChannelID, NETDEV_CONFIG_COMMAND_E.NETDEV_GET_MOTION_DETECTION_AREA_TYPE, stMotionAreaType.getPointer(), 132, dwBytesReturned );
|
if(bRet != true) {
|
System.out.printf("NETDEV_GetDevConfig failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError());
|
return;
|
}
|
stMotionAreaType.read();
|
System.out.println(stMotionAreaType.udwAreaType);
|
NetDemo.jComboBoxAreaType.setSelectedIndex(stMotionAreaType.udwAreaType);
|
//视频通道运动检测区域类型为矩形区域
|
if(stMotionAreaType.udwAreaType == 0){
|
setMacroElement(false);
|
setRectangleElement(true);
|
NETDEV_MOTION_DETECTION_AREA_RECTANGLE_INFO_LIST_S RectangleArea = new NETDEV_MOTION_DETECTION_AREA_RECTANGLE_INFO_LIST_S();
|
RectangleArea.write();
|
dwBytesReturned = new IntByReference();
|
bRet = NetDemo.netdevsdk.NETDEV_GetDevConfig(NetDemo.lpUserID, NetDemo.ChannelID, NETDEV_CONFIG_COMMAND_E.NETDEV_GET_MOTION_DETECTION_AREA_RECTANGLE_INFO_LIST, RectangleArea.getPointer(), 1444, dwBytesReturned );
|
if(bRet != true) {
|
System.out.printf("NETDEV_GetDevConfig failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError());
|
return;
|
}
|
RectangleArea.read();
|
System.out.println(RectangleArea.udwNum);
|
NetDemo.textFieldConfigChannelMotionRectangleAreaNum.setText(String.valueOf(RectangleArea.udwNum));
|
}else if(stMotionAreaType.udwAreaType == 1){
|
setMacroElement(true);
|
setRectangleElement(false);
|
//视频通道运动检测区域类型为宏块区域
|
NETDEV_MOTION_DETECTION_AREA_GRID_INFO_S GridArea = new NETDEV_MOTION_DETECTION_AREA_GRID_INFO_S();
|
GridArea.write();
|
dwBytesReturned = new IntByReference();
|
bRet = NetDemo.netdevsdk.NETDEV_GetDevConfig(NetDemo.lpUserID, NetDemo.ChannelID, NETDEV_CONFIG_COMMAND_E.NETDEV_GET_MOTION_DETECTION_AREA_GRID_INFO, GridArea.getPointer(), 1444, dwBytesReturned );
|
if(bRet != true) {
|
System.out.printf("NETDEV_GetDevConfig failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError());
|
return;
|
}
|
GridArea.read();
|
}
|
}
|
|
/**
|
*
|
* @introduction Set motion area
|
* @description Calling the interface of NETDEV_SetDevConfig
|
*
|
*/
|
public static void setMotionAera() {
|
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;
|
}
|
|
NETDEV_MOTION_DETECTION_AREA_TYPE_S stMotionAreaType = new NETDEV_MOTION_DETECTION_AREA_TYPE_S();
|
stMotionAreaType.udwAreaType = NetDemo.jComboBoxAreaType.getSelectedIndex();
|
stMotionAreaType.write();
|
boolean bRet = NetDemo.netdevsdk.NETDEV_SetDevConfig(NetDemo.lpUserID, NetDemo.ChannelID, NETDEV_CONFIG_COMMAND_E.NETDEV_SET_MOTION_DETECTION_AREA_TYPE, stMotionAreaType.getPointer(), 132);
|
if(bRet != true) {
|
System.out.printf("NETDEV_GetDevConfig failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError());
|
return;
|
}
|
JOptionPane.showMessageDialog(null, "Set Success.");
|
}
|
|
/**
|
*
|
* @introduction Modify rectangle area
|
* @description
|
*
|
*/
|
public static void modifyReactangleArea() {
|
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;
|
}
|
MotionDetectionAreaWindow mda=new MotionDetectionAreaWindow(NETDEV_MOTION_DETECTION_AREA_TYPE_E.NETDEV_MOTION_DETECTION_AREA_TYPE_RECTANGLE,NetDemo.lpUserID,NetDemo.ChannelID);
|
mda.setVisible(true);
|
}
|
|
/**
|
*
|
* @introduction Modify macro area
|
* @description
|
*
|
*/
|
public static void modifyMacroArea() {
|
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;
|
}
|
MotionDetectionAreaWindow mdaw=new MotionDetectionAreaWindow(NETDEV_MOTION_DETECTION_AREA_TYPE_E.NETDEV_MOTION_DETECTION_AREA_TYPE_MB, NetDemo.lpUserID, NetDemo.ChannelID);
|
mdaw.setVisible(true);
|
|
}
|
|
/**
|
*
|
* @introduction Change motion area type
|
* @description
|
*
|
*/
|
public static void changeAreaType(ItemEvent e) {
|
if (e.getStateChange() == ItemEvent.SELECTED) {
|
NETDEV_MOTION_DETECTION_AREA_TYPE_S stMotionAreaType = new NETDEV_MOTION_DETECTION_AREA_TYPE_S();
|
stMotionAreaType.udwAreaType = NetDemo.jComboBoxAreaType.getSelectedIndex();
|
if(stMotionAreaType.udwAreaType == 0){
|
setMacroElement(false);
|
setRectangleElement(true);
|
}else if(stMotionAreaType.udwAreaType == 1){
|
setMacroElement(true);
|
setRectangleElement(false);
|
}
|
}
|
}
|
|
public static void setRectangleElement(boolean aFlag){
|
NetDemo.lblAreaRectangle.setVisible(aFlag);
|
NetDemo.textFieldConfigChannelMotionRectangleAreaNum.setVisible(aFlag);
|
NetDemo.jButtonModifyRectangleArea.setVisible(aFlag);
|
}
|
|
public static void setMacroElement(boolean aFlag){
|
NetDemo.lblAreaGridInfo.setVisible(aFlag);
|
NetDemo.jButtonModifyMacroArea.setVisible(aFlag);
|
}
|
|
}
|