BOOL NET_DVR_PlayBackControl_V40(
LONG lPlayHandle,
DWORD dwControlCode,
char *lpInBuffer
DWORD dwInLen,
char *lpOutBuffer,
DWORD *lpOutLen
);
C#转化的
[DllImport("HCNetSDK.dll")]
public static extern bool NET_DVR_PlayBackControl_V40(int lPlayHandle, uint dwControlCode, string dwInValue, uint dwInvalue_len, StringBuilder LPOutValue, ref uint LPOutValue_len);
C#调用的
StringBuilder uCurTime = new StringBuilder();
uint uCuiTime_len = 0;
HCNetSDK.NET_DVR_PlayBackControl_V40(iPlayHandle, HCNetSDK.NET_DVR_PLAYGETTIME, null, 0, uCurTime, ref uCuiTime_len);
19 个解决方案
#1
报错了?
#2
C#转化的
[DllImport("HCNetSDK.dll")]
public static extern bool NET_DVR_PlayBackControl_V40(int lPlayHandle, uint dwControlCode, Intptr dwInValue, uint dwInvalue_len, Intptr LPOutValue, ref uint LPOutValue_len);
C#调用的
uint uCuiTime_len = 0;
HCNetSDK.NET_DVR_PlayBackControl_V40(iPlayHandle, HCNetSDK.NET_DVR_PLAYGETTIME, Intptr.Zero, 0, Intptr.Zero, ref uCuiTime_len);
[DllImport("HCNetSDK.dll")]
public static extern bool NET_DVR_PlayBackControl_V40(int lPlayHandle, uint dwControlCode, Intptr dwInValue, uint dwInvalue_len, Intptr LPOutValue, ref uint LPOutValue_len);
C#调用的
uint uCuiTime_len = 0;
HCNetSDK.NET_DVR_PlayBackControl_V40(iPlayHandle, HCNetSDK.NET_DVR_PLAYGETTIME, Intptr.Zero, 0, Intptr.Zero, ref uCuiTime_len);
#3
应该是参数对应错误了 char* 转换有问题
#4
我试验了这个,将Intptr.Zero改为uCurTime 提前定义了IntPtr uCurTime = new IntPtr();
得到返回值一直是0,这个应该是从0开始逐步变大的
#5
这个函数的意思是,获取当前播放文件的播放时间,我已经获得了该文件的总时间,现在想要获取播放时间,用了timer空间,在tick事件中,更新这个获取的当前时间
#6
不报告错误,就是获取的值不是我要的值
#7
/// Return Type: BOOL->int
///lPlayHandle: LONG->int
///dwControlCode: DWORD->unsigned int
///lpInBuffer: char*
///dwInLen: DWORD->unsigned int
///lpOutBuffer: char*
///lpOutLen: DWORD*
[System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="NET_DVR_PlayBackControl_V40")]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool NET_DVR_PlayBackControl_V40(int lPlayHandle, uint dwControlCode, System.IntPtr lpInBuffer, uint dwInLen, System.IntPtr lpOutBuffer, ref uint lpOutLen) ;
#8
有个小工具可以帮助生成C#代码
叫做 winsiggen
叫做 winsiggen
#9
主要是我转化的函数对不对?
返回的值是什么 ?是 对应的内存的指针?还是什么 ?
如果是对应内存的指针,如何将数据提取出来呢 ?我需要的是一个uint的值
返回的值是什么 ?是 对应的内存的指针?还是什么 ?
如果是对应内存的指针,如何将数据提取出来呢 ?我需要的是一个uint的值
#10
在CSDN资源里面下载了1个,解压缩错误,不能用啊
#11
下载下来了,英文版的,怎么用呀?有说明书么?QQ 261108689帮忙下,谢谢
#12
应该是参数类型转化错了
传入的char*用string 传出的用StringBuilder
传入的char*用string 传出的用StringBuilder
#13
这个实验过了,输出的是乱码
#14
切换到 SigImp Translate Snippet 页
选择Language 为 CSharp
在 Native Code Snippet 中粘贴C++代码
点 Generate 后在右边框就会生成 C#代码
#15
试验了所有的方法,能返回值了,但是都不是我要的,没办法了,现在在播放进度条下面改成进度了,获取播放位置函数好用,也不知道是怎么回事
试验了直接返回uin、返回string、返回stringbuiler、返回指针再从内存读数据,都不行~愁死了
试验了直接返回uin、返回string、返回stringbuiler、返回指针再从内存读数据,都不行~愁死了
#16
他返回的应该是当前帧数之类的东西吧,例如你总文件大小是100 ,他返回的 ref uint LPOutValue_len 是1,2,3,4这样的?不是?
#17
不同的函数返回的不一样,用老的80系列的DVR可以实现 返回总帧数、总时间、播放帧数、播放时间、播放位置等等
但是用新的硬盘录像机,只能返回总时间、总帧数、播放位置
播放时间返回的值是好几万的uint值,肯定不正确,因为总时间才 几千。。。
所以我换了新的SDK函数,但是返回的值没有合适的。
返回的播放时间值,应该是从1开始,逐渐变大,直到等于总时间。。。。
怎么回事呢?
但是用新的硬盘录像机,只能返回总时间、总帧数、播放位置
播放时间返回的值是好几万的uint值,肯定不正确,因为总时间才 几千。。。
所以我换了新的SDK函数,但是返回的值没有合适的。
返回的播放时间值,应该是从1开始,逐渐变大,直到等于总时间。。。。
怎么回事呢?
#18
他返回的值没有变化?
#19
是的,每次返回的值都一样,而且不是我要的值
#20
#1
报错了?
#2
C#转化的
[DllImport("HCNetSDK.dll")]
public static extern bool NET_DVR_PlayBackControl_V40(int lPlayHandle, uint dwControlCode, Intptr dwInValue, uint dwInvalue_len, Intptr LPOutValue, ref uint LPOutValue_len);
C#调用的
uint uCuiTime_len = 0;
HCNetSDK.NET_DVR_PlayBackControl_V40(iPlayHandle, HCNetSDK.NET_DVR_PLAYGETTIME, Intptr.Zero, 0, Intptr.Zero, ref uCuiTime_len);
[DllImport("HCNetSDK.dll")]
public static extern bool NET_DVR_PlayBackControl_V40(int lPlayHandle, uint dwControlCode, Intptr dwInValue, uint dwInvalue_len, Intptr LPOutValue, ref uint LPOutValue_len);
C#调用的
uint uCuiTime_len = 0;
HCNetSDK.NET_DVR_PlayBackControl_V40(iPlayHandle, HCNetSDK.NET_DVR_PLAYGETTIME, Intptr.Zero, 0, Intptr.Zero, ref uCuiTime_len);
#3
应该是参数对应错误了 char* 转换有问题
#4
我试验了这个,将Intptr.Zero改为uCurTime 提前定义了IntPtr uCurTime = new IntPtr();
得到返回值一直是0,这个应该是从0开始逐步变大的
#5
这个函数的意思是,获取当前播放文件的播放时间,我已经获得了该文件的总时间,现在想要获取播放时间,用了timer空间,在tick事件中,更新这个获取的当前时间
#6
不报告错误,就是获取的值不是我要的值
#7
/// Return Type: BOOL->int
///lPlayHandle: LONG->int
///dwControlCode: DWORD->unsigned int
///lpInBuffer: char*
///dwInLen: DWORD->unsigned int
///lpOutBuffer: char*
///lpOutLen: DWORD*
[System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="NET_DVR_PlayBackControl_V40")]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool NET_DVR_PlayBackControl_V40(int lPlayHandle, uint dwControlCode, System.IntPtr lpInBuffer, uint dwInLen, System.IntPtr lpOutBuffer, ref uint lpOutLen) ;
#8
有个小工具可以帮助生成C#代码
叫做 winsiggen
叫做 winsiggen
#9
主要是我转化的函数对不对?
返回的值是什么 ?是 对应的内存的指针?还是什么 ?
如果是对应内存的指针,如何将数据提取出来呢 ?我需要的是一个uint的值
返回的值是什么 ?是 对应的内存的指针?还是什么 ?
如果是对应内存的指针,如何将数据提取出来呢 ?我需要的是一个uint的值
#10
在CSDN资源里面下载了1个,解压缩错误,不能用啊
#11
下载下来了,英文版的,怎么用呀?有说明书么?QQ 261108689帮忙下,谢谢
#12
应该是参数类型转化错了
传入的char*用string 传出的用StringBuilder
传入的char*用string 传出的用StringBuilder
#13
这个实验过了,输出的是乱码
#14
切换到 SigImp Translate Snippet 页
选择Language 为 CSharp
在 Native Code Snippet 中粘贴C++代码
点 Generate 后在右边框就会生成 C#代码
#15
试验了所有的方法,能返回值了,但是都不是我要的,没办法了,现在在播放进度条下面改成进度了,获取播放位置函数好用,也不知道是怎么回事
试验了直接返回uin、返回string、返回stringbuiler、返回指针再从内存读数据,都不行~愁死了
试验了直接返回uin、返回string、返回stringbuiler、返回指针再从内存读数据,都不行~愁死了
#16
他返回的应该是当前帧数之类的东西吧,例如你总文件大小是100 ,他返回的 ref uint LPOutValue_len 是1,2,3,4这样的?不是?
#17
不同的函数返回的不一样,用老的80系列的DVR可以实现 返回总帧数、总时间、播放帧数、播放时间、播放位置等等
但是用新的硬盘录像机,只能返回总时间、总帧数、播放位置
播放时间返回的值是好几万的uint值,肯定不正确,因为总时间才 几千。。。
所以我换了新的SDK函数,但是返回的值没有合适的。
返回的播放时间值,应该是从1开始,逐渐变大,直到等于总时间。。。。
怎么回事呢?
但是用新的硬盘录像机,只能返回总时间、总帧数、播放位置
播放时间返回的值是好几万的uint值,肯定不正确,因为总时间才 几千。。。
所以我换了新的SDK函数,但是返回的值没有合适的。
返回的播放时间值,应该是从1开始,逐渐变大,直到等于总时间。。。。
怎么回事呢?
#18
他返回的值没有变化?
#19
是的,每次返回的值都一样,而且不是我要的值