大华sdk使用java获取设备状态

我这边调用CLIENT_QueryNewSystemInfo方法返回非得rpc请求 使用java代码 官方的win64sdk 请问如何调整呢

int nChannelID = 0;
        int dwOutBufferSize = 1024; // 输出缓冲区大小
        byte[] szOutBuffer = new byte[1024];
        IntByReference error = new IntByReference();

        int waittime = 5000;
        boolean b = LoginModule.netsdk.CLIENT_QueryNewSystemInfo(LoginModule.m_hLoginHandle, "RemoteDevice", nChannelID, szOutBuffer, dwOutBufferSize, error, waittime);
        if(!b) {
            System.err.printf("QueryPointTemper Failed!" + ToolKits.getErrorCodePrint());
        }

要使用Java获取大华SDK设备状态,可以使用以下步骤:

  1. 首先需要创建一个DeviceManager对象,该对象用于管理设备连接和状态查询。可以使用DHNetSDKLib包中的dhnetsdk类来创建DeviceManager对象,例如:
DeviceManager dm = new DeviceManager();
  1. 接下来需要使用DeviceManager对象来连接设备并登录,可以使用dm.login()方法进行登录。该方法需要传入设备的IP地址、端口号、用户名和密码等信息,例如:
int loginID = dm.login("192.168.1.100", 37777, "admin", "12345");
  1. 登录成功后,就可以使用DeviceManager对象来查询设备状态了。大华SDK提供了GetDevState接口来获取设备状态信息。可以使用以下代码获取设备状态:
NET_DEVSTATE devState = new NET_DEVSTATE();
int nRet = dm.getNetSDK().CLIENT_GetDevState(loginID, FinalVar.SDK_DEVSTATE_COMM_ALARM, devState, 5000);
if (nRet == 0) {
    System.out.println("设备状态获取失败,错误码:" + dm.getNetSDK().CLIENT_GetLastError());
} else {
    System.out.println("设备状态获取成功,状态码:" +devState.dwValue);
}

在上述代码中,调用了DeviceManager对象的getNetSDK()方法来获取SDK对象,然后使用SDK对象调用CLIENT_GetDevState接口来获取设备状态。该接口需要传入登录ID、状态类型(例如通信报警、硬盘状态等)和状态信息结构体等参数,其中5000表示超时时间,可以根据需要进行调整。

  1. 最后需要关闭设备连接,可以使用dm.logout()方法进行关闭,例如:
dm.logout(loginID);

在实际使用中,需要根据具体需求来选择查询的设备状态类型,例如通信报警、硬盘状态、网络状态等。同时,需要注意设备状态查询的频率,避免过于频繁地查询影响设备性能。

求回答呀 遇到了同样的问题