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 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体