package com.netsdk.demo.event;
|
|
import java.io.ByteArrayOutputStream;
|
import java.io.File;
|
import java.io.FileNotFoundException;
|
import java.io.IOException;
|
|
import javax.imageio.stream.FileImageInputStream;
|
|
import com.netsdk.demo.util.CaseMenu;
|
import com.netsdk.lib.NetSDKLib;
|
import com.netsdk.lib.NetSDKLib.NET_IN_FACE_OPEN_DOOR;
|
import com.netsdk.lib.NetSDKLib.NET_OUT_FACE_OPEN_DOOR;
|
import com.netsdk.lib.ToolKits;
|
import com.netsdk.lib.NetSDKLib.LLong;
|
import com.netsdk.lib.NetSDKLib.NET_DEVICEINFO_Ex;
|
import com.netsdk.lib.enumeration.EM_HEALTH_CODE_STATUS;
|
import com.netsdk.lib.structure.NET_HEALTH_CODE_INFO;
|
import com.sun.jna.Memory;
|
import com.sun.jna.Pointer;
|
import com.sun.jna.ptr.IntByReference;
|
|
public class TwiceEducation {
|
public static final NetSDKLib netSdk = NetSDKLib.NETSDK_INSTANCE;
|
// 登陆句柄
|
private LLong loginHandle = new LLong(0);
|
|
// 设备信息扩展
|
private NET_DEVICEINFO_Ex deviceInfo = new NET_DEVICEINFO_Ex();
|
|
public void InitTest(){
|
// 初始化SDK库
|
netSdk.CLIENT_Init(DisConnectCallBack.getInstance(), null);
|
|
// 设置断线重连成功回调函数
|
netSdk.CLIENT_SetAutoReconnect(HaveReConnectCallBack.getInstance(), null);
|
|
//打开日志,可选
|
NetSDKLib.LOG_SET_PRINT_INFO setLog = new NetSDKLib.LOG_SET_PRINT_INFO();
|
String logPath = new File(".").getAbsoluteFile().getParent() + File.separator + "sdk_log" + File.separator + "sdk.log";
|
setLog.bSetFilePath = 1;
|
System.arraycopy(logPath.getBytes(), 0, setLog.szLogFilePath, 0, logPath.getBytes().length);
|
setLog.bSetPrintStrategy = 1;
|
setLog.nPrintStrategy = 0;
|
if (!netSdk.CLIENT_LogOpen(setLog)){
|
System.err.println("Open SDK Log Failed!!!");
|
}
|
|
Login();
|
}
|
|
public void Login(){
|
// 登陆设备
|
int nSpecCap = NetSDKLib.EM_LOGIN_SPAC_CAP_TYPE.EM_LOGIN_SPEC_CAP_TCP; // TCP登入
|
IntByReference nError = new IntByReference(0);
|
loginHandle = netSdk.CLIENT_LoginEx2(m_strIp, m_nPort, m_strUser,
|
m_strPassword ,nSpecCap, null, deviceInfo, nError);
|
if (loginHandle.longValue() != 0) {
|
System.out.printf("Login Device[%s] Success!\n", m_strIp);
|
}
|
else {
|
System.err.printf("Login Device[%s] Fail.Error[%s]\n", m_strIp, ToolKits.getErrorCode());
|
LoginOut();
|
}
|
}
|
|
|
public void LoginOut(){
|
System.out.println("End Test");
|
if( loginHandle.longValue() != 0)
|
{
|
netSdk.CLIENT_Logout(loginHandle);
|
}
|
System.out.println("See You...");
|
|
netSdk.CLIENT_Cleanup();
|
System.exit(0);
|
}
|
|
public void Test_FaceOpenDoor(){
|
if(loginHandle.longValue()==0){
|
return;
|
}
|
//入参
|
NET_IN_FACE_OPEN_DOOR pInParam=new NET_IN_FACE_OPEN_DOOR();
|
/*NET_OPENDOOR_IMAGEINFO stuImageInfo=new NET_OPENDOOR_IMAGEINFO();
|
int nReadLenOnce = 32*1024 - 32;
|
stuImageInfo.pLibImage=new Memory(nReadLenOnce);
|
stuImageInfo.nLibImageLen=image("D:\\1.jpg").length;
|
System.arraycopy(image("D:\\1.jpg"), 0, stuImageInfo.pLibImage.getByteArray(0, nReadLenOnce),0 , image("D:\\1.jpg").length);
|
stuImageInfo.pSnapImage=new Memory(nReadLenOnce);
|
stuImageInfo.nSnapImageLen=image("D:\\2.jpg").length;
|
System.arraycopy(image("D:\\2.jpg"), 0, stuImageInfo.pSnapImage.getByteArray(0, nReadLenOnce), 0, image("D:\\2.jpg").length);
|
pInParam.stuImageInfo=stuImageInfo;*/
|
//int nReadLenOnce = 32*1024 - 32;
|
pInParam.nChannel=0;
|
pInParam.emCompareResult=0;
|
byte[] UserID="147850".getBytes();
|
System.arraycopy(UserID, 0, pInParam.stuMatchInfo.szUserID, 0, UserID.length);
|
|
NET_HEALTH_CODE_INFO health_code_info=new NET_HEALTH_CODE_INFO();
|
//TODO
|
health_code_info.emHealthCodeStatus=EM_HEALTH_CODE_STATUS.EM_HEALTH_CODE_STATUS_GREEN.ordinal();
|
pInParam.stuMatchInfo.pstuHealthCodeInfo=new Memory(health_code_info.size());
|
ToolKits.SetStructDataToPointer(health_code_info,pInParam.stuMatchInfo.pstuHealthCodeInfo,0);
|
|
|
/*
|
* pInParam.stuImageInfo.pLibImage=new Memory(nReadLenOnce);
|
* pInParam.stuImageInfo.nLibImageLen=image("D:\\1.jpg").length;
|
* System.arraycopy(image("D:\\1.jpg"), 0,
|
* pInParam.stuImageInfo.pLibImage.getByteArray(0, nReadLenOnce), 0,
|
* image("D:\\1.jpg").length); pInParam.stuImageInfo.pSnapImage=new
|
* Memory(nReadLenOnce);
|
* pInParam.stuImageInfo.nSnapImageLen=image("D:\\2.jpg").length;
|
* System.arraycopy(image("D:\\2.jpg"), 0,
|
* pInParam.stuImageInfo.pSnapImage.getByteArray(0, nReadLenOnce), 0,
|
* image("D:\\2.jpg").length);
|
*/
|
|
//出参
|
NET_OUT_FACE_OPEN_DOOR pOutParam=new NET_OUT_FACE_OPEN_DOOR();
|
|
boolean bRet =netSdk.CLIENT_FaceOpenDoor(loginHandle, pInParam, pOutParam, 3000);
|
if (!bRet)
|
{
|
System.err.printf("Test_FaceOpenDoor field[%s] Fail.Error[%s]\n", m_strIp, ToolKits.getErrorCode());
|
return;
|
}
|
}
|
|
/**
|
* 获取接口错误码
|
* @return
|
*/
|
public static String getErrorCode() {
|
return " { error code: ( 0x80000000|" + (netSdk.CLIENT_GetLastError() & 0x7fffffff) +" ). 参考 LastError.java }";
|
}
|
public byte[] image(String path){
|
byte[] data = null;
|
FileImageInputStream input = null;
|
try {
|
input = new FileImageInputStream(new File(path));
|
ByteArrayOutputStream output = new ByteArrayOutputStream();
|
byte[] buf = new byte[1024];
|
int numBytesRead = 0;
|
while ((numBytesRead = input.read(buf)) != -1) {
|
output.write(buf, 0, numBytesRead);
|
}
|
data = output.toByteArray();
|
output.close();
|
input.close();
|
}
|
catch (FileNotFoundException ex1) {
|
ex1.printStackTrace();
|
}
|
catch (IOException ex1) {
|
ex1.printStackTrace();
|
}
|
return data;
|
}
|
|
public void RunTest(){
|
CaseMenu menu=new CaseMenu();
|
menu.addItem((new CaseMenu.Item(this , "Test_FaceOpenDoor" , "Test_FaceOpenDoor")));
|
menu.run();
|
}
|
////////////////////////////////////////////////////////////////
|
private String m_strIp = "172.5.4.178";
|
private int m_nPort = 37777;
|
private String m_strUser = "admin";
|
private String m_strPassword = "admin123";
|
///////////////////////////////////////////////////////////////
|
|
/**
|
* 设备断线回调
|
*/
|
private static class DisConnectCallBack implements NetSDKLib.fDisConnect {
|
|
private DisConnectCallBack() {
|
}
|
|
private static class CallBackHolder {
|
private static DisConnectCallBack instance = new DisConnectCallBack();
|
}
|
|
public static DisConnectCallBack getInstance() {
|
return CallBackHolder.instance;
|
}
|
|
public void invoke(NetSDKLib.LLong lLoginID, String pchDVRIP, int nDVRPort, Pointer dwUser) {
|
System.out.printf("Device[%s] Port[%d] DisConnect!\n", pchDVRIP, nDVRPort);
|
}
|
}
|
|
/**
|
* 设备重连回调
|
*/
|
private static class HaveReConnectCallBack implements NetSDKLib.fHaveReConnect {
|
private HaveReConnectCallBack() {
|
}
|
|
private static class CallBackHolder {
|
private static HaveReConnectCallBack instance = new HaveReConnectCallBack();
|
}
|
|
public static HaveReConnectCallBack getInstance() {
|
return CallBackHolder.instance;
|
}
|
|
public void invoke(NetSDKLib.LLong m_hLoginHandle, String pchDVRIP, int nDVRPort, Pointer dwUser) {
|
System.out.printf("ReConnect Device[%s] Port[%d]\n", pchDVRIP, nDVRPort);
|
|
}
|
}
|
|
public static void main(String []args){
|
TwiceEducation XM=new TwiceEducation();
|
XM.InitTest();
|
XM.RunTest();
|
XM.LoginOut();
|
}
|
|
}
|