DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: deshake
今日帖子: 34
在线用户: 19
导航: 论坛 -> 发布代码 斑竹:liumazi,ruralboy  
作者:
男 bluestorm8 (bluestorm) ▲△△△△ -
注册会员
2020/6/27 7:39:57
标题:
海康威视及大华技术SDK C头文件转Delphi Pas文件 浏览:1367
加入我的收藏
楼主:    视频监控领域两家著名的公司海康威视和大华技术,他们提供的SDK都不直接支持Delphi,据他们的说法是Delphi用户不够多,无法什么语言都支持。如果我们想用Delphi调用这些SDK里面的接口,那就需要自己先把其中C头文件转换成Delphi的pas文件。

    海康威视SDK里面的HCNetSDK.h有50734行,而大华技术的dhnetsdk.h和dhconfigsdk.h分别有53335行和13846行,如果手工转的话,不知要转到何年何月,而且手工转不但容易出错、而且难以发现转错的地方。以前我曾经用手工方式试转了一下,感觉既机械又郁闷。后来在网上找了一些别人手工转的,但很不完整,只转其中极小的一部分,而且对应的sdk版本比较老。

   最后是想用程序自动转。在网上找了一下C头文件转pas的工具,发现没有一个是好用的,不论是国外的还是国内的。最后没有办法,只能自己写程序来转换,花了我不少的时间。

  现把这些转换后的文件共享出来,避免大家重复造轮子了。
  这些文件我只是用到其中极少一部分的功能,没有做过完整的测试,仅供参考,有问题欢迎留言。

 文件可以到盒子ftp里面下载, 在ftp里搜索“海康威视”或“大华”就能找到。
此帖子包含附件:bluestorm8_202062774314.zip 大小:1.33M
----------------------------------------------
-
作者:
男 12288144 (12288144) ▲▲▲▲▲ -
普通会员
2020/6/27 8:46:44
1楼: 谢谢
----------------------------------------------
-
作者:
男 www12345 (风云) ★☆☆☆☆ -
盒子活跃会员
2020/6/27 9:05:38
2楼: 辛苦
----------------------------------------------
一卡通专家的中专家www.cnduh.com
作者:
男 qq81709989 (QQ81709989) ▲△△△△ -
注册会员
2020/6/27 9:42:34
3楼: 感谢!建议放Github
----------------------------------------------
Delphi控件/组件/软件/源码下载网站:http://www.pascalscada.cn
作者:
男 tiez (骑牛夜旅) ★☆☆☆☆ -
普通会员
2020/6/27 10:34:07
4楼: 我看了一下,你大华中有如下代码
{$IFDEF WIN64}
  LLONG =  Int64;
  LDWORD = UInt64;
{$ELSE}
  LLONG =  LONG;
  LDWORD = DWORD;
然后多数地方对应的句柄都是用LLONG来定义的
而海康中没有相关的定义转换,我很久前看过海康的代码,好像海康直接使用的LONG,这个LONG在什么地方做了定义,64位系统中也是Int64的,我记不清了,但我在头文件转换时是这样定义的  
THIK_NET_DVR_Login_V30 = function(sDVRIP: PAnsiChar; wDVRPort: Word; sUserName, sPassword: PAnsiChar;
    var lpDeviceInfo: THIK_NET_DVR_DEVICEINFO_V30): NativeInt; stdcall;
THIK_NET_DVR_Logout_V30 = function(lUserID: NativeInt): BOOL; stdcall;
在实际使用中做64位或32位都未发现问题,应该海康和大华在头文件中确实使用了LONG来表示句柄。

后来我做这个始终有点担心,就在头部加了重定义的部分
  THikNet_Int = integer;
  THikNet_Long = Long;
  THikNet_Handle = THikNet_Long;

  TDahNet_Int = integer;
  TDahNet_Long = integer;
  TDahNet_LLong = NativeInt;
  TDahNet_Handle = TDahNet_LLong;
但海康和大华都还有一套解码库,它们的头部我是这样定义的
  THikPlay_Int = integer;
  THikPlay_Long = Long;
  THikPlay_Port = THikPlay_Long;

  TDahPlay_Int = integer;
  TDahPlay_Long = integer;
  TDahPlay_Port = TDahPlay_Long;
其实我还做有别的一些厂商的SDK接口,为了这个32位和64位的问题早就看晕了

有没有海康自己的人把这些类型的宏定义说明一下啊,有的定义部分在一些版本真的找不到了
----------------------------------------------
-
作者:
男 zyp1984 (小李他妈的飞刀) ★☆☆☆☆ -
普通会员
2020/6/27 10:48:11
5楼: 我可以负责的讲,楼主是个好人。造福大家。。。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
作者:
男 kaida (kaida) ★☆☆☆☆ -
盒子活跃会员
2020/6/27 11:05:15
6楼: 楼主好人,十分感谢!
----------------------------------------------
http://down.desei.com.cn/down/1041485/MyWeb/VCLs.html
作者:
男 ken0137 (顺眼即佛) ★☆☆☆☆ -
普通会员
2020/6/27 13:36:06
7楼: 楼主热心,我之前也自己手工转过,真心累
----------------------------------------------
只会简单使用,并未精通深入
作者:
男 bdl1 (bdl1) ▲▲▲▲△ -
注册会员
2020/6/27 14:19:35
8楼: 向作者敬礼!
----------------------------------------------
-我的新浪博客
作者:
男 tulater (tulater) ★☆☆☆☆ -
普通会员
2020/6/27 15:11:20
9楼: 楼主好人,十分感谢!
----------------------------------------------
http://www.cnblogs.com/tulater/
作者:
男 qq81709989 (QQ81709989) ▲△△△△ -
注册会员
2020/6/27 15:16:06
10楼: 推荐一个C2Pascal头文件转换工具,用于将C头文件转换成Delphi格式
https://github.com/neslib/Chet
----------------------------------------------
Delphi控件/组件/软件/源码下载网站:http://www.pascalscada.cn
作者:
男 bluestorm8 (bluestorm) ▲△△△△ -
注册会员
2020/6/27 17:14:38
11楼: 我曾经试过用C2Pascal来转,但各种报错太多,基本上帮不上什么忙。
海康威视sdk里面有宏函数、重复的常量定义、结构体名称和函数名称重复、函数定义里面含有回调函数的定义、结构体定义里面含有联合体的定义,而这些联合体定义又含有结构体的定义,等等,特殊的、复杂的地方太多, C2Pascal应付不过来,我试用了一下就放弃了。
----------------------------------------------
-
作者:
男 bdl1 (bdl1) ▲▲▲▲△ -
注册会员
2020/6/27 17:16:11
12楼: bluestorm:试下Chet,期待结果。
----------------------------------------------
-我的新浪博客
作者:
男 bluestorm8 (bluestorm) ▲△△△△ -
注册会员
2020/6/27 17:21:28
13楼: 我自己都写了转换程序,就没有必要用chet了。试下Chet的事情,为什么你自己不试一下?
----------------------------------------------
-
作者:
男 xjia (xjia) ★☆☆☆☆ -
盒子活跃会员
2020/6/27 22:03:15
14楼: 楼主辛苦了,感谢楼主分享~~~
----------------------------------------------
-
作者:
男 421 (421) ★☆☆☆☆ -
盒子活跃会员
2020/6/28 8:49:44
15楼: 感谢分享~~
楼主辛苦了
曾经用过各种工具转换,出错太多,后来索性用到哪个就手工添加,一直没有如此完整的单元文件
----------------------------------------------
-
作者:
男 bluestorm8 (bluestorm) ▲△△△△ -
注册会员
2020/6/28 10:04:28
16楼: 我试过手工转,但后来发现有转错的地方,如数组下标忘了减1了,因此对手工转没什么信心,才下定决心用程序转。由于第一次写这样的程序,而且完全没有参考别人的转换程序,以为这个程序比较简单,直到写的过程中,才发现工作量和难度远超原来的估计,耗费了一个多月的时间,还加班加点,真是高强度的脑力活。
----------------------------------------------
-
作者:
男 littlestone08 (littlestone08) ★☆☆☆☆ -
普通会员
2020/7/22 14:39:17
17楼: 楼主好人
----------------------------------------------
我和我追逐的梦,擦肩而过
作者:
男 foryour (sean) ▲▲▲▲▲ -
普通会员
2020/7/22 15:15:15
18楼: mark
----------------------------------------------
-
作者:
男 shuaialang (lenog) ▲▲▲▲▲ -
注册会员
2020/8/5 12:09:28
19楼: mark,delphi海康车牌识别做过,也走了不少弯路,为支持楼主,有需要的朋友可以联系我,不收费
----------------------------------------------
-
作者:
男 zyp1984 (小李他妈的飞刀) ★☆☆☆☆ -
普通会员
2020/8/5 14:09:24
20楼: @shuaialang ,海康车牌识别,能发一份demo吗?37540862@qq.com
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..
作者:
男 glwang (glwang) ★☆☆☆☆ -
盒子活跃会员
2020/8/5 14:31:51
21楼: 19楼:同求车牌识别代码 85269698@qq.com
----------------------------------------------
作者:
男 ybj316 (ybj) ★☆☆☆☆ -
盒子活跃会员
2020/8/6 8:33:11
22楼: @shuaialang :同求车牌识别代码 14625154@qq.com   谢谢!!
----------------------------------------------
-
作者:
男 hz_2009 (盒子) ▲▲▲▲▲ -
注册会员
2020/8/6 8:41:43
23楼: 感谢分享!
----------------------------------------------
-
作者:
男 bigboy2050 (bigboy2050) ★☆☆☆☆ -
注册会员
2020/8/13 10:18:35
24楼: 支持楼主大侠!!!
----------------------------------------------
http://www.kittyapp.net
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行46.875毫秒 RSS