package com.netsdk.demo.frame.vto; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.*; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; import com.sun.jna.Memory; import com.sun.jna.Pointer; import com.netsdk.common.Base64; import com.netsdk.common.Res; import com.netsdk.demo.module.LoginModule; import com.netsdk.lib.NetSDKLib; import com.netsdk.lib.ToolKits; public class CollectionFingerPrint extends JDialog { private final JPanel contentPanel = new JPanel(); private JTextField ipTextField; private JTextField portTextField; private JTextField usernameTextField; private JPasswordField passwordField; private JLabel collectionResult; private JButton btnLogin; private JButton btnLogout; private JButton btnCollection; private byte[] packageData; private int packageLen; private boolean bcollectionResult = false; private boolean isListen; public byte[] getPackageData() { return packageData; } public void setPackageData(byte[] packageData) { this.packageData = packageData; } public void setLabelResult(byte[] packageData) { collectionResult.setText(Base64.getEncoder().encodeToString(packageData)); } public int getPackageLen() { return packageLen; } public void setPackageLen(int packageLen) { this.packageLen = packageLen; } public boolean isCollectionResult() { return bcollectionResult; } public void setCollectionResult(boolean bcollectionResult) { this.bcollectionResult = bcollectionResult; //显示结果 collectionResult.setText(this.bcollectionResult ? "success" : "failed"); } public void stopListen() { //获取到信息,停止监听 if (loginHandler != null && loginHandler.longValue() != 0) { stopListen(loginHandler); } //获取按钮使能 btnCollection.setEnabled(true); //设置监听状态 isListen = false; } private NetSDKLib.LLong loginHandler; private NetSDKLib.NET_DEVICEINFO_Ex deviceinfoEx = new NetSDKLib.NET_DEVICEINFO_Ex(); /** * Launch the application. */ public static void main(String[] args) { try { CollectionFingerPrint dialog = new CollectionFingerPrint(); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } /** * Create the dialog. */ public CollectionFingerPrint() { setBounds(100, 100, 304, 397); setTitle(Res.string().getVTOOperateCollectionFingerPrintTitle()); setDefaultCloseOperation(DISPOSE_ON_CLOSE); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (UnsupportedLookAndFeelException e) { e.printStackTrace(); } getContentPane().setLayout(new BorderLayout()); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel, BorderLayout.CENTER); contentPanel.setLayout(null); { JPanel panel = new JPanel(); panel.setBorder(new TitledBorder(null, Res.string().getLogin(), TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel.setBounds(10, 10, 268, 167); contentPanel.add(panel); panel.setLayout(null); { JLabel lblNewLabel = new JLabel(Res.string().getIp()); lblNewLabel.setBounds(10, 23, 66, 15); panel.add(lblNewLabel); } { ipTextField = new JTextField(); ipTextField.setText("172.23.32.61"); ipTextField.setBounds(103, 20, 155, 21); panel.add(ipTextField); ipTextField.setColumns(10); } { JLabel lblPort = new JLabel(Res.string().getPort()); lblPort.setBounds(10, 48, 83, 15); panel.add(lblPort); } { portTextField = new JTextField(); portTextField.setText("37777"); portTextField.setColumns(10); portTextField.setBounds(103, 45, 155, 21); panel.add(portTextField); } { JLabel lblName = new JLabel(Res.string().getUserName()); lblName.setBounds(10, 73, 83, 15); panel.add(lblName); } { usernameTextField = new JTextField(); usernameTextField.setText("admin"); usernameTextField.setColumns(10); usernameTextField.setBounds(103, 70, 155, 21); panel.add(usernameTextField); } { JLabel lblPassword = new JLabel(Res.string().getPassword()); lblPassword.setBounds(10, 98, 90, 15); panel.add(lblPassword); } passwordField = new JPasswordField(); passwordField.setBounds(103, 95, 155, 18); passwordField.setText("admin123"); panel.add(passwordField); { btnLogin = new JButton(Res.string().getLogin()); btnLogin.setBounds(7, 134, 111, 23); panel.add(btnLogin); btnLogin.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (login()) { btnCollection.setEnabled(true); } } }); } { btnLogout = new JButton(Res.string().getLogout()); btnLogout.setBounds(153, 134, 105, 23); panel.add(btnLogout); btnLogout.setEnabled(false); btnLogout.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { logout(); } }); } } { JPanel panel = new JPanel(); panel.setBorder(new TitledBorder(null, Res.string().getOperate(), TitledBorder.LEADING, TitledBorder.TOP, null, null)); panel.setBounds(10, 187, 268, 129); contentPanel.add(panel); panel.setLayout(null); { btnCollection = new JButton(Res.string().getStartCollection()); btnCollection.setBounds(10, 26, 227, 41); panel.add(btnCollection); collectionResult = new JLabel(Res.string().getCollectionResult()); collectionResult.setBounds(10, 77, 227, 26); panel.add(collectionResult); btnCollection.setEnabled(false); final CollectionFingerPrint print = this; btnCollection.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { isListen = startListen(loginHandler, VTOMessageCallBack.getINSTANCE(null, print)); if (isListen) { //下发采集信息指令 if (!collectionFinger()) { stopListen(loginHandler); } else { // 使其失效 btnCollection.setEnabled(false); } new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(20000); //等待二十秒,如果没有获取到信息,则停止获取 if (isListen) { stopListen(); } } catch (InterruptedException interruptedException) { interruptedException.printStackTrace(); } } }).start(); } } }); addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { super.windowClosed(e); //已经登录 if (loginHandler != null && loginHandler.longValue() != 0) { if (isListen) { //停止监听 stopListen(loginHandler); } //登出 logout(); } //按钮复位 btnLogin.setEnabled(true); btnLogout.setEnabled(false); btnCollection.setEnabled(false); //清除信息数据 bcollectionResult=false; packageData=null; //清除label显示 collectionResult.setText(Res.string().getCollectionResult()); } }); } } { JPanel buttonPane = new JPanel(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { JButton okButton = new JButton("OK"); okButton.setActionCommand("OK"); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setVisible(false); } }); } } } /** * 登录 */ public boolean login() { if (login(ipTextField.getText(), Integer.parseInt(portTextField.getText()), usernameTextField.getText(), new String(passwordField.getPassword()))) { btnLogin.setEnabled(false); btnLogout.setEnabled(true); btnCollection.setEnabled(true); } else { JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); return false; } return true; } /** * \if ENGLISH_LANG Login Device \else 登录设备 \endif */ public boolean login(String m_strIp, int m_nPort, String m_strUser, String m_strPassword) { // IntByReference nError = new IntByReference(0); // 入参 NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY pstInParam = new NetSDKLib.NET_IN_LOGIN_WITH_HIGHLEVEL_SECURITY(); pstInParam.nPort = m_nPort; pstInParam.szIP = m_strIp.getBytes(); pstInParam.szPassword = m_strPassword.getBytes(); pstInParam.szUserName = m_strUser.getBytes(); // 出参 NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY pstOutParam = new NetSDKLib.NET_OUT_LOGIN_WITH_HIGHLEVEL_SECURITY(); pstOutParam.stuDeviceInfo = deviceinfoEx; loginHandler = LoginModule.netsdk.CLIENT_LoginWithHighLevelSecurity(pstInParam, pstOutParam); if (loginHandler.longValue() == 0) { JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); } else { System.out.println("Login Success [ " + m_strIp + " ]"); } return loginHandler.longValue() == 0 ? false : true; } public long getLoginHandler() { if (loginHandler != null) { return loginHandler.longValue(); } return 0; } /** * \if ENGLISH_LANG Logout Device \else 登出设备 \endif */ public boolean logout() { if (loginHandler.longValue() == 0) { return false; } boolean bRet = LoginModule.netsdk.CLIENT_Logout(loginHandler); if (bRet) { loginHandler.setValue(0); btnLogin.setEnabled(true); btnLogout.setEnabled(false); } else { JOptionPane.showMessageDialog(null, Res.string().getLoginFailed() + ", " + ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); } return bRet; } /** * 下发采集信息指令 * * @return */ public boolean collectionFinger() { NetSDKLib.NET_CTRL_CAPTURE_FINGER_PRINT capture = new NetSDKLib.NET_CTRL_CAPTURE_FINGER_PRINT(); capture.nChannelID = 0; System.arraycopy("1".getBytes(), 0, capture.szReaderID, 0, "1".getBytes().length); Pointer pointer = new Memory(capture.size()); ToolKits.SetStructDataToPointer(capture, pointer, 0); boolean ret = LoginModule.netsdk.CLIENT_ControlDevice(loginHandler, NetSDKLib.CtrlType.CTRLTYPE_CTRL_CAPTURE_FINGER_PRINT, pointer, 100000); if (!ret) { JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); return false; } return true; } public boolean startListen(NetSDKLib.LLong loginHandler, NetSDKLib.fMessCallBack cbMessage) { LoginModule.netsdk.CLIENT_SetDVRMessCallBack(cbMessage, null); // set alarm listen callback if (!LoginModule.netsdk.CLIENT_StartListenEx(loginHandler)) { JOptionPane.showMessageDialog(null, ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); return false; } else { System.out.println("CLIENT_StartListenEx success."); } return true; } public boolean stopListen(NetSDKLib.LLong loginHandler) { if (!LoginModule.netsdk.CLIENT_StopListen(loginHandler)) { JOptionPane.showMessageDialog(null, Res.string().getStopListenFailed()+","+ ToolKits.getErrorCodeShow(), Res.string().getErrorMessage(), JOptionPane.ERROR_MESSAGE); return false; } else { System.out.println("CLIENT_StopListen success."); } return true; } /** * 清除获取信息的状态 */ public void clearStatus() { this.setPackageData(null); this.setCollectionResult(false); this.setPackageLen(0); } }