海康威视远程控制录像时,设置叠加字符报参数错误。

private void setConfig(NativeLong lUserId, int channel, String jylsh, String hphm, String clsbdh) throws JsonProcessingException {

    logger.info("叠加字符串开始");

    // 检验流水号
    HCNetSDK.NET_DVR_SHOWSTRINGINFO showstringinfo1 = new HCNetSDK.NET_DVR_SHOWSTRINGINFO();
    // 车牌号
    HCNetSDK.NET_DVR_SHOWSTRINGINFO showstringinfo2 = new HCNetSDK.NET_DVR_SHOWSTRINGINFO();

    showstringinfo1.wShowString = 1;
    showstringinfo1.wStringSize = (short) jylsh.getBytes().length;
    showstringinfo1.wShowStringTopLeftX = 50;
    showstringinfo1.wShowStringTopLeftY = 100;
    showstringinfo1.sString = jylsh.getBytes();

    showstringinfo2.wShowString = 1;
    showstringinfo1.wStringSize = (short) hphm.getBytes().length;
    showstringinfo2.wShowStringTopLeftX = 50;
    showstringinfo2.wShowStringTopLeftY = 150;
    showstringinfo2.sString = hphm.getBytes();

    HCNetSDK.NET_DVR_SHOWSTRINGINFO[] showstringinfos = new HCNetSDK.NET_DVR_SHOWSTRINGINFO[2];
    showstringinfos[0] = showstringinfo1;
    showstringinfos[1] = showstringinfo2;

    HCNetSDK.NET_DVR_SHOWSTRING_V30 net_dvr_showstring_v30 = new HCNetSDK.NET_DVR_SHOWSTRING_V30();

    net_dvr_showstring_v30.struStringInfo = showstringinfos;
    net_dvr_showstring_v30.write();

    Pointer pointer = net_dvr_showstring_v30.getPointer();

    logger.info("叠加字符串: " + lUserId + ", channel:" + channel + ", pointer: " + pointer);

    boolean state = hCNetSDK.NET_DVR_SetDVRConfig(
            lUserId,
            HCNetSDK.NET_DVR_SET_SHOWSTRING_V30,
            new NativeLong(channel),
            pointer,
            net_dvr_showstring_v30.size());


    net_dvr_showstring_v30.read();

    int e = hCNetSDK.NET_DVR_GetLastError();

    logger.info("叠加字符串结束: " + state + "叠加字符串错误码:" + e);
}


    上面是我写的方法,有哪位大神能指点一下吗,到底是哪里有问题。

HCNetSDK.NET_DVR_SHOWSTRINGINFO showstringinfo1 = new HCNetSDK.NET_DVR_SHOWSTRINGINFO();
showstringinfo1.wShowString = 1;
showstringinfo1.wStringSize = (short) text.getBytes("GB2312").length;
showstringinfo1.wShowStringTopLeftX = 20;
showstringinfo1.wShowStringTopLeftY = 20;
showstringinfo1.sString = text.getBytes("GB2312");

    HCNetSDK.NET_DVR_SHOWSTRINGINFO[] showstringinfos = (HCNetSDK.NET_DVR_SHOWSTRINGINFO[]) new HCNetSDK.NET_DVR_SHOWSTRINGINFO().toArray(1);

    showstringinfos[0] = showstringinfo1;

    HCNetSDK.NET_DVR_SHOWSTRING_V30 net_dvr_showstring_v30 = new HCNetSDK.NET_DVR_SHOWSTRING_V30();

    net_dvr_showstring_v30.dwSize = net_dvr_showstring_v30.size();
    net_dvr_showstring_v30.struStringInfo = showstringinfos;

    net_dvr_showstring_v30.write();

    boolean state = hCNetSDK.NET_DVR_SetDVRConfig(
            lUserId,
            HCNetSDK.NET_DVR_SET_SHOWSTRING_V30,
            channel,
            net_dvr_showstring_v30.getPointer(),
            net_dvr_showstring_v30.size());

    net_dvr_showstring_v30.read();

    int e = hCNetSDK.NET_DVR_GetLastError();


            这是我的项目中写过的示例,你可以试一下。