首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请教下段C语言函数成名怎么转成VB的?海康威视SDK二次开发

2012-02-01 
请问下段C语言函数成名如何转成VB的?海康威视SDK二次开发最近在用海康威视的板卡搞开发,他们SDK是C语言的,

请问下段C语言函数成名如何转成VB的?海康威视SDK二次开发
最近在用海康威视的板卡搞开发,他们SDK是C语言的,其中获取原始图像函数部分是这样的:

C/C++ code
1 注册回调函数:int __stdcall RegisterImageStreamCallback(IMAGE_STREAM_CALLBACK ImageStreamCallback,void *context)  参数:IMAGE_STREAM_CALLBACK:原始图像数据流回调函数,Void *context: 设备上下文2 回调函数:typedef void(*IMAGE_STREAM_CALLBACK)(UNIT channelNumber,void *context)3 开启数据捕获:int __stdcall SetImageStream(HANDLE hChannel,BOOL bStart,UINT fps,UINT width,UINT height,unsigned char *ImageBuffer)

我的函数声明是:
VB code
Private Declare Function RegisterImageStreamCallback Lib "DS40xxSDK.dll" (ImageStreamCallBack As Long, ByVal Context As Long) As LongPrivate Declare Function SetImageStream Lib "DS40xxSDK.dll" (ByVal hChannel As Long, ByVal bStart As Boolean, ByVal fps As Long, ByVal Width As Long, ByVal Height As Long, ImageBuffer As Long) As Long


我的代码是:
VB code
Public Sub StartVideo()    Dim Ret As Long, Data() As Long    ReDim Data(99999)    Ret = RegisterImageStreamCallback(AddressOf ImageStreamCallBack, Form1)    Debug.Print "callback ret is :" & Ret    Ret = SetImageStream(m_hChannel, True, 0, 704, 576, Data(0))    Debug.Print "StartVideo ret is :" & RetEnd SubPublic Function ImageStreamCallBack(ByVal ChannelNum As Long, ByVal Context As Long)    Debug.Print "获取到了图像数据" & ChannelNum    DoEvents    Debug.Print Time    End Function


目前的问题是程序执行到“Debug.Print "StartVideo ret is :" & Ret“后就非法关闭了,不知道是我函数生命有问题,还是回调函数这里没处理好,请高手帮忙解答。

[解决办法]
帮顶一下!试试声明变成PUBLIC呢!
[解决办法]
我觉得是你的函数声明错了,个人认为是数据类型的问题。
IMAGE_STREAM_CALLBACK 和这个VB中的声明 Long 完全不同,虽然值得是地址。
[解决办法]
*context参数指的是设备场景,用form1.hdc是对的,难道没有更详细的文档说明了吗?
[解决办法]
设备上下文=设备场景 hdc
[解决办法]
探讨
引用:
我觉得是你的函数声明错了,个人认为是数据类型的问题。
IMAGE_STREAM_CALLBACK 和这个VB中的声明 Long 完全不同,虽然值得是地址。


回调函数的函数指针,其实就是个地址,用long应该没问题的吧。

vb的回调函数貌似有很多限制,我看到了06年的一个帖子,大家也讨论的非常火热,可惜最后没有答案,
不过,似乎是SDK……

[解决办法]
的确,c++默认调用方式 cdecl
2 回调函数:typedef void(*IMAGE_STREAM_CALLBACK)(UNIT channelNumber,void *context)


[解决办法]

热点排行