Public Declare Function RegisterImageStreamCallback Lib "DS40xxSDK.dll" (ByVal imagestreamcallback As Long, ByVal context As Long) As Long //声明注册函数Public Declare Function SetImageStream Lib "DS40xxSDK.dll" (ByVal hDevice As Long, ByVal bStart As Boolean, ByVal fps As Long, ByVal Width As Long, ByVal Height As Long, ByRef imageBuffer As Byte) As Long  //声明获取数据流函数Public Function callbackfunc(ByVal channelno As Long, context As Long)
form1.Text1.Text = Buf(10)  //将buf(10)的数据显示出来
End Function   // 定义回调函数Public Function registcallbackfunc()
f = RegisterImageStreamCallback(AddressOf callbackfunc, 0)
End Function  //自定义函数实现时候的程序
dim buf(152063) as byte //定义数据缓冲区registcallbackfunc //调用自己registcallbackfunc的函数
f = SetImageStream(ChannelhDevice(0), True, 25, 352, 288, Buf(0))
//将通道1的数据存放到buf数组中!现在出现的情况是采集到了第一帧图象数据,可以用buf(10)看到数据是多少,但是采集第二帧的时候程序就死掉了,这是什么原因???请赐教~!!!! 提示说什么vb内部错误~

解决方案 »

  1.   

    小弟我把程序精简了一下:
    声明:
    Public Declare Function RegisterImageStreamCallback Lib "DS40xxSDK.dll" (ByVal streamcallback As Long, ByVal context As Long) As LongPublic Declare Function SetImageStream Lib "DS40xxSDK.dll" (ByVal hDevice As Long, ByVal bStart As Boolean, ByVal fps As Long, ByVal Width As Long, ByVal Height As Long, ByRef imageBuffer As Byte) As LongPublic Function streamcallback(ByVal channelNumber As Long, ByRef DataBuf As Byte, ByVal Length As Long, ByVal FrameType As Long, ByVal context As Long) As Long
      Form1.Text1.Text = Buf(10)
    End Function实现程序如下:
    f = RegisterImageStreamCallback(AddressOf streamcallback, 0)
    f = SetImageStream(ChannelhDevice(0), True, 25, 352, 288, Buf(0))
    问题还是一样,求哪位高手指点~
      

  2.   

    他们说没有VB的DEMO,我看了一下BC的程序,是别人做的一个,基本调用如下:
    for(int i=0;i<GetTotalDSPs();i++)
      {
        ChannelHandle[i]=ChannelOpen(i);   }
      iReturn=RegisterImageStreamCallback(ImageStreamCallback,NULL);  for(int i = 0; i < GetTotalDSPs(); i++)
    {
        iReturn=SetImageStream(ChannelHandle[i],1,25,WIDTH,HEIGHT,imageBuf[i]);
      }void ImageStreamCallback(UINT channelNumber,void * Context)
    {}
    居然没有问题,所以想请各位帮忙看看我错在哪里了~
      

  3.   

    并没有看出有什么问题我做过类似的东西 我是用VB 和 chd375 USB 芯片通讯的基本上核心要用vc  来做 VB 很多事情做出来不稳定如果找不到原因 建议你不要用VB做通讯核心如有其它问题 可以咨询 qq 17310603
      

  4.   

    IMAGE_STREAM_CALLBACK回调函数的原型是:
    (*IMAGE_STREAM_CALLBACK)(UNIT ChannelNumber, void *context)是个无返回值的函数所以你的callbackfunc应该改一下:Public Sub callbackfunc(ByVal channelno As Long, context As Long)
      form1.Text1.Text = Buf(10)  //将buf(10)的数据显示出来
    End Sub
      

  5.   

    jadeluo(秀峰),还是不行啊,你能给个完整的回调数据流的列子么?
      

  6.   

    您们好,我是初学者,我在运行您的程序时,有“ChannelhDevice为定义”的提示,为什么呀!