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.   

    我看了一下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)
    {}
    居然没有问题,所以想请各位帮忙看看我错在哪里了~