Java Hikvision SDK の二次開発のための効率的なワークフロー
はじめに:
現在のインテリジェント社会では、監視システムがますます重要な役割を果たしています。国内の大手監視機器サプライヤーとして、Hikvision の SDK は二次開発に非常に適した強力な機能とインターフェイスを提供します。この記事では、Java Hikvision SDK の効率的なワークフローを紹介し、コード例を通じて二次開発を実行する方法を示します。
1. 準備
2. SDK 環境を初期化する
関数を開発する前に、SDK 環境を初期化する必要があります。サンプル コードは次のとおりです:
import com.sun.jna.NativeLong; import com.hikvision.netsdk.*; public class SDKInit { public static void main(String[] args) { // 初始化SDK boolean initSuc = HCNetSDK.INSTANCE.NET_DVR_Init(); if (initSuc){ System.out.println("SDK初始化成功"); } else { System.out.println("SDK初始化失败"); } // 设置报警回调函数 HCNetSDK.FMSGCallBack fMsgCallBack = (lCommand, pAlarmer, pAlarmInfo, dwBufLen, pUser) -> { // 处理报警信息 }; NativeLong lUser = new NativeLong(1); HCNetSDK.INSTANCE.NET_DVR_SetDVRMessageCallBack_V31(fMsgCallBack, lUser); // 设置异常回调函数 HCNetSDK.FExceptionCallBack fExceptionCallBack = (dwType, lUserID, lHandle, pUser) -> { // 处理异常信息 }; HCNetSDK.INSTANCE.NET_DVR_SetExceptionCallBack_V30(0, lUser, fExceptionCallBack, null); // 其他初始化设置... } }
3. デバイスの接続とログイン
デバイス関連の操作を実行する前に、まずデバイスを接続してログインする必要があります。サンプル コードは次のとおりです:
public class DeviceConnection { public static HCNetSDK.NET_DVR_DEVICEINFO_V30 login(String ip, int port, String username, String password) { // 设备初始化 HCNetSDK.NET_DVR_Init(); // 登录设备 HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); NativeLong lUserID = HCNetSDK.INSTANCE.NET_DVR_Login_V30(ip, port, username, password, deviceInfo); if (lUserID.longValue() == -1) { System.out.println("登录设备失败:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError()); } else { System.out.println("登录设备成功"); } return deviceInfo; } }
4. デバイス操作の実行
Hikvision SDK を通じて、デバイスの基本情報、リアルタイム プレビュー、スクリーンショットの取得など、さまざまなデバイス操作を実行できます。 、など。サンプル コードは次のとおりです:
public class DeviceOperation { public static void getDeviceInfo(HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo) { System.out.println("设备名称:" + new String(deviceInfo.sDVRName)); System.out.println("设备编号:" + deviceInfo.getStruDeviceV30().byDeviceSerialNumber.seriaNumber); // 其他设备信息... } public static void livePreview(NativeLong lUserID) { HCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new HCNetSDK.NET_DVR_PREVIEWINFO(); previewInfo.lChannel = new NativeLong(1); // 预览通道号 previewInfo.dwStreamType = 0; // 码流类型,0-主码流,1-子码流 previewInfo.dwLinkMode = 0x0000; // 是否录像,0x0000-不录像,0x0001-录像 previewInfo.hPlayWnd = null; // 预览窗口 NativeLong lPlayHandle = HCNetSDK.INSTANCE.NET_DVR_RealPlay_V40(lUserID, previewInfo, null, null); if (lPlayHandle.longValue() == -1) { System.out.println("预览失败:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError()); } else { System.out.println("预览成功"); } } public static void capturePicture(NativeLong lUserID, String savePath) { HCNetSDK.NET_DVR_JPEGPARA jpegPara = new HCNetSDK.NET_DVR_JPEGPARA(); jpegPara.wPicQuality = 2; // 图片质量,2-高质量,1-中等质量,0-低质量 jpegPara.wPicSize = 0; // 图片分辨率,0-最高分辨率 if (HCNetSDK.INSTANCE.NET_DVR_CaptureJPEGPicture(lUserID, 1, jpegPara, savePath)) { System.out.println("抓图成功"); } else { System.out.println("抓图失败:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError()); } } // 其他设备操作... }
5. リソースを解放してログアウト
Hikvision SDK を使用した後は、時間内にリソースを解放し、デバイスからログアウトする必要があります。サンプル コードは次のとおりです。
public class SDKRelease { public static void main(String[] args) { // 登出设备 NativeLong lUserID = new NativeLong(1); if (HCNetSDK.INSTANCE.NET_DVR_Logout_V30(lUserID)) { System.out.println("登出设备成功"); } else { System.out.println("登出设备失败:" + HCNetSDK.INSTANCE.NET_DVR_GetLastError()); } // 释放SDK资源 HCNetSDK.INSTANCE.NET_DVR_Cleanup(); System.out.println("释放SDK资源"); } }
結論:
上記の紹介とサンプル コードを通じて、Java Hikvision SDK の二次開発の効率的なワークフローを理解しました。上記の手順に従って開発する限り、Hikvision 監視機器が提供する機能とインターフェイスを簡単に使用して、独自のアプリケーションのニーズを実現できます。この記事が二次開発のお役に立てれば幸いです!
以上がJava Hikvision SDK の二次開発のための効率的なワークフローの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。