j181027923 2016-08-19 08:41 采纳率: 100%
浏览 1116
已采纳

调用SDK开发包中的回调函数下载文件的指针问题

以下是SDK中的函数定义:

远程录像下载
JCSDK_API BOOL JCSDK_CALLTYPE JCSDK_DownloadRemoteFile(JCLink_t nLinkID, int nFileID);
参数:nLinkID:连接ID
nFileID:录像文件ID
返回值:返回调用结果
注意:录像文件数据通过事件回调返回

事件回调函数
typedef void (*JCEventCallback_t)(JCLink_t nLinkID, JCEventType etType, DWORD_PTR pData1, DWORD_PTR pData2, LPVOID pUserData);
参数:nLinkID: 连接ID
etType: 事件类型
pData1: 数据1
pData2: 数据2
pUserData:用户数据
注意:数据1、数据2携带数据随事件类型不同而不同
JCET_Connected pData1:返回连接类型(字符串)
JCET_ConnectOK 无数据

JCET_DownloadData pData1:数据块指针
         pData2:数据块大小
    ....

因为本人不熟悉c++的指针,在回调函数里得到的pData1,pData2不知道该如何使用,怎样把下载的录像文件保存到本地硬盘,请高手们指点一下,非常感谢!
更多 0

  • 写回答

1条回答 默认 最新

  • 春暖花开_lv 2016-08-20 14:05
    关注

    1 定义一个回调函数的实现,如
    Void JCEventCallback_DownLoad (JCLink_t nLinkID, JCEventType etType, DWORD_PTR pData1, DWORD_PTR pData2, LPVOID pUserData)
    {
    /**/Return;
    }
    然后在SDK里找到设置回调函数的接口,将函数地址传进去,例如:
    SetDownLoadCallback(JCEventCallback_DownLoad, pUserData);
    2  JCSDK_DownloadRemoteFile(JCLink_t nLinkID, int nFileID),调用此接口,如果返回结果TRUE,则将nLinkID,和nFileID传进pUserData;
    3在回调函数里实现对文件的保存
    Void JCEventCallback_DownLoad (JCLink_t nLinkID, JCEventType etType, DWORD_PTR pData1, DWORD_PTR pData2, LPVOID pUserData)
    {
    If(etType==JCET_DownloadData && pData2 >0)
    {
    //如果nLinkID等于你要下载的ID
    //fwtite,将pData1的pData2字节的数据写到本地
    }
    Return;
    }
    4建议写一个结构体或者类,将相关信息放入,然后pUserData的值取结构体的指针,就OK了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?