开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 371|回复: 5
收起左侧

[求助] 海康SDK翻译

[复制链接]
结帖率:86% (6/7)
发表于 2024-7-30 21:17:08 | 显示全部楼层 |阅读模式   江苏省苏州市
JAVA代码

/**
     * 事件搜索
     * @param req
     * @return
     */
    public EventRecordSearchResp eventSearchApi(EventRecordSearchReq req) {
        HCNetSDK.NET_DVR_XML_CONFIG_INPUT struXMLInput = new HCNetSDK.NET_DVR_XML_CONFIG_INPUT();
        struXMLInput.read();
        struXMLInput.dwSize = struXMLInput.size();
        String strURL = "POST /ISAPI/ContentMgmt/eventRecordSearch?format=json";
        int iURLlen = strURL.length();
        HCNetSDK.BYTE_ARRAY ptrUrl = new HCNetSDK.BYTE_ARRAY(iURLlen+1);
        System.arraycopy(strURL.getBytes(), 0, ptrUrl.byValue, 0, strURL.length());
        ptrUrl.write();
        struXMLInput.lpRequestUrl = ptrUrl.getPointer();
        struXMLInput.dwRequestUrlLen = iURLlen;
        String strInbuffer = JSONUtil.toJsonStr(req);
        int iInBufLen = strInbuffer.length();
        if(iInBufLen==0)
        {
            struXMLInput.lpInBuffer=null;
            struXMLInput.dwInBufferSize=0;
            struXMLInput.write();
        }
        else
        {
            HCNetSDK.BYTE_ARRAY ptrInBuffer = new HCNetSDK.BYTE_ARRAY(iInBufLen+1);
            ptrInBuffer.read();
            ptrInBuffer.byValue = strInbuffer.getBytes();
            ptrInBuffer.write();

            struXMLInput.lpInBuffer = ptrInBuffer.getPointer();
            struXMLInput.dwInBufferSize = iInBufLen;
            struXMLInput.write();

        }
        HCNetSDK.BYTE_ARRAY ptrStatusByte = new HCNetSDK.BYTE_ARRAY(ISAPI_STATUS_LEN);
        ptrStatusByte.read();

        HCNetSDK.BYTE_ARRAY ptrOutByte = new HCNetSDK.BYTE_ARRAY(ISAPI_DATA_LEN);
        ptrOutByte.read();

        HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT struXMLOutput = new HCNetSDK.NET_DVR_XML_CONFIG_OUTPUT();
        struXMLOutput.read();
        struXMLOutput.dwSize = struXMLOutput.size();
        struXMLOutput.lpOutBuffer = ptrOutByte.getPointer();
        struXMLOutput.dwOutBufferSize = ptrOutByte.size();
        struXMLOutput.lpStatusBuffer = ptrStatusByte.getPointer();
        struXMLOutput.dwStatusSize  = ptrStatusByte.size();
        struXMLOutput.write();

        if(!hCNetSDK.NET_DVR_STDXMLConfig(lUserID, struXMLInput, struXMLOutput))
        {
            int iErr = hCNetSDK.NET_DVR_GetLastError();
            log.error( "NET_DVR_STDXMLConfig失败,错误号:" + iErr);
            return null;

        }
        else
        {
            struXMLOutput.read();
            ptrOutByte.read();
            ptrStatusByte.read();
            // 输出结果
            String strOutXML = new String(ptrOutByte.byValue).trim();
            // 输出状态
            String strStatus = new String(ptrStatusByte.byValue).trim();
            return JSONUtil.toBean(strOutXML, EventRecordSearchResp.class);
        }
    }


c#代码
private void btnXML_Click(object sender, EventArgs e)
        {
            CHCNetSDK.NET_DVR_XML_CONFIG_INPUT pInputXml = new CHCNetSDK.NET_DVR_XML_CONFIG_INPUT();
            Int32 nInSize = Marshal.SizeOf(pInputXml);

            pInputXml.dwSize = (uint)nInSize;

            string strRequestUrl = textBoxRequest.Text;
            uint dwRequestUrlLen = (uint)strRequestUrl.Length;
            pInputXml.lpRequestUrl = Marshal.StringToHGlobalAnsi(strRequestUrl);
            pInputXml.dwRequestUrlLen = dwRequestUrlLen;

            string strInputParam = textBoxInXML.Text;

            pInputXml.lpInBuffer = Marshal.StringToHGlobalAnsi(strInputParam);
            pInputXml.dwInBufferSize = (uint)strInputParam.Length;

            CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT pOutputXml = new CHCNetSDK.NET_DVR_XML_CONFIG_OUTPUT();
            pOutputXml.dwSize = (uint)Marshal.SizeOf(pInputXml);
            pOutputXml.lpOutBuffer = Marshal.AllocHGlobal(3 * 1024 * 1024);
            pOutputXml.dwOutBufferSize = 3 * 1024 * 1024;
            pOutputXml.lpStatusBuffer = Marshal.AllocHGlobal(4096 * 4);
            pOutputXml.dwStatusSize = 4096 * 4;

            if (!CHCNetSDK.NET_DVR_STDXMLConfig(m_lUserID, ref pInputXml, ref pOutputXml))
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                strErr = "NET_DVR_STDXMLConfig failed, error code= " + iLastErr;
                //XML透传失败,输出错误号 Failed to send XML data and output the error code
                MessageBox.Show(strErr);
            }

            uint iXMSize = pOutputXml.dwReturnedXMLSize;
            byte[] managedArray = new byte[iXMSize];
            Marshal.Copy(pOutputXml.lpOutBuffer, managedArray, 0, (int)iXMSize);
            textBoxOutXML.Text = Encoding.UTF8.GetString(managedArray);

            textBoxStatus.Text = Marshal.PtrToStringAnsi(pOutputXml.lpStatusBuffer);

            Marshal.FreeHGlobal(pInputXml.lpRequestUrl);
            Marshal.FreeHGlobal(pOutputXml.lpOutBuffer);
            Marshal.FreeHGlobal(pOutputXml.lpStatusBuffer);
        }


这一段可以翻译易语言实现功能的有没有可以帮忙!








补充内容 (2024-8-20 11:55):
有能搞定的可以有偿+v可以详谈,目前我已经写了程序 反馈错误代码17,可提供我写的源码进行修改,页游官方DEMO可以参照 海康SDK  NET_DVR_STDXMLConfig
结帖率:38% (6/16)

签到天数: 22 天

发表于 2024-7-30 21:53:50 | 显示全部楼层   湖南省娄底市
下面一个方法,2个参数,1个对象,另一个应该是自带的文本,新建一个自带的对象,新建一个整数,然后自带的方法赋值
回复 支持 反对

使用道具 举报

结帖率:89% (66/74)

签到天数: 11 天

发表于 2024-7-31 11:10:56 | 显示全部楼层   黑龙江省绥化市
C#代码应该是WinForm写的一个按钮Click事件 你可以拿官方提供的Dll写
回复 支持 反对

使用道具 举报

结帖率:86% (6/7)
 楼主| 发表于 2024-7-31 15:39:17 | 显示全部楼层   江苏省苏州市
爱谁谁的样子 发表于 2024-7-31 11:10
C#代码应该是WinForm写的一个按钮Click事件 你可以拿官方提供的Dll写

自己写了测试下来,目前还是数据结构有问题导致发送失败,C#我足部调试分析数据 和易语言的赋值还是有问题
回复 支持 反对

使用道具 举报

发表于 2024-7-31 21:47:52 | 显示全部楼层   湖南省衡阳市
不错不错,,加油
回复 支持 反对

使用道具 举报

结帖率:86% (6/7)
 楼主| 发表于 2024-8-20 11:53:50 | 显示全部楼层   江苏省苏州市
有能搞定的可以有偿,目前我已经写了程序 反馈错误代码17
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表