海康威视4008HC版卡,做视频监控用的,可是得不到该卡的序列号,附函数原型及说明,急,在线等...谢谢(200分)

  • 主题发起人 主题发起人 selonboy
  • 开始时间 开始时间
To wr960204:
十分感谢帮助。周一我试一下你给的函数是否可行...

zhongs:
根据官方技术人员的说法,第一块版卡索引号从0算起,可是我从0算起时居然会出错,而且索引号置0后,用SDK其它函数得不到正确的结果,只有为1时才可得到,比如用getboardnum来获取主板上装了几块卡,用getboardnum(0)就得不到,用getboardnum(1)就可得到。
 
人家的SDK的例子也是从 0 开始的:

boardCount=GetBoardCount();//这儿是得到主板上装的板卡总数
for(UINT board=0;board<boardCount;board++)//循环检测已安装的每块版卡
{
GetBoardDetail(board,&boardDetail);//这是关键函数,得到板卡详细信息
 
看SDK文档中的确是这样,所以我才一直郁闷中。
无论是0还是大于0的数都得不到正确的序列号,而且用0时还会出错,即使不运算序列号而只是运行一句GetBoardDetail(0,&boardDetail)同样出错。
感觉wr960204写的代码有希望,明天去试一下。
 
To wr960204:
昨晚没上线。
看来还是不管用,你给的函数调试顺利通过了(没出错),但是还是得不到正确的序列号。
海康威视的技术人员也没能答出个大概之所以然。
 
// 今晚偶有位同学问俺数字与ASII码相差多少,从而想起楼主这道题,顺便看看
// 于是写下,楼主可以试试,感觉应该是对了
// 声明 var 是因为你为传出参数
function GetBoardDetail(boardNum: UInt;
var pBoardDetail:
PDS_BOARD_DETAIL): integer;
stdcall;
// 实现
var
// 在此 PDS_BOARD_DETAIL = ^TDS_BOARD_DETAIL 是你记录类型指针就行了
pBoardDetail: PDS_BOARD_DETAIL;

strSn: string;
begin

strSn := '';
GetMem(pBoardDetail, SizeOf(TDS_BOARD_DETAIL));
GetBoardDetail(1, pBoardDetail);
for i := 0 to 11do

begin

// 这里你不用担心,c中+$30 只是变为ASII的1,2,3,4...显示需要而已
// Delphi可以轻松搞定 IntToStr就ok
strSn := IntToStr(pBoardDetail.sn) + strSn;

end;

ShowMessage(strSn);
FreeMem(pBoardDetail);
end;
 
解决此问题,还是要看SDK。
 
我个人认为海康威视的技术人员,对客户的问题不够重视,总是回答:我们重视开发硬件,软件的二次开发没有必要.
 
uiit:
谢谢。你的代码已经让我看到了曙光。
但是奇怪的是用这段函数得到的“序列号”长度是不固定的!
基本上GetBoardDetail一次就会得到一个不同的号。有的长度居然达到了18位。
怪事一桩。
我怀疑是不是原SDK函数就有问题才导致这样的结果。
 
不好意思,俺的代码写的有点问题,没有测试,现改一下,应该可以了
俺觉得先从自己代码身上找原因,然后再说SDK
// 这里参数为指针,并不需要var,我以前搞错了
function GetBoardDetail(boardNum: UInt;
pBoardDetail:
PDS_BOARD_DETAIL): integer;
stdcall;

// 实现
var
// 在此 PDS_BOARD_DETAIL = ^TDS_BOARD_DETAIL 是你记录类型指针就行了
BoardDetail: TPDS_BOARD_DETAIL;

strSn: string;
begin

strSn := '';
GetBoardDetail(1, @BoardDetail);
// 传入指针指向地址
// 这里看你是否确定了板卡长度而定
for i := 0 to 11do

begin

// 这里你不用担心,c中+$30 只是变为ASII的1,2,3,4...显示需要而已
// Delphi可以轻松搞定 IntToStr就ok
strSn := IntToStr(BoardDetail.sn) + strSn;

end;

ShowMessage(strSn);
end;
 
来自:rzqcjwrz, 时间:2006-4-27 6:14:54, ID:3428145
我个人认为海康威视的技术人员,对客户的问题不够重视,总是回答:我们重视开发硬件,软件的二次开发没有必要.

同意,我是没用过 海康威视 的卡的,以前部门现在有个项目用的是这个的卡,我徒弟说demo只有C++的,希望他们提供一个delphi的都说没有
硬件开发是重要,当不同应用人员有不同的功能需求,所以说二次开发是非常重要的,他们就不能多写几种语言的demo?

这一点我觉得天敏的还有大恒的到是做的很不错,提供了全面的demo,有VB,VC,DELPHI,BCB,资源相当丰富,使用方面天敏的感觉最为方便,大恒的有点烦琐,而且不是很稳定
 
五一了,放假了,祝所有帮助和支持过我的朋友们快乐,也祝富翁的朋友们节日快乐,出游愉快!

uiit:
我照你的代码编译了几次,这次没有内存分配的语句倒是长度固定了,但得出的结果却是两块卡的都一样(分别在两台PC上面测试)。虽如此,还是要感谢你,感谢热心跟帖的朋友们。
本来想早日结帖的,想了一下还是再等等吧,相信Uiit及如同Uiit、zhongs等热心的朋友还会有高见,也许会遇到有过此类软件开发经验的朋友来指点迷津,再次感谢大家!
 
这么久还没有新帖,结了吧,分放出去了,别嫌少。[:)]
希望大富翁论坛常青!
 
后退
顶部