最新消息:

NSIS System.dll调用其他dll(例调海康SDK取板卡序列号)

nsis 永恒心锁 2313浏览 0评论
  1.  System::Call ‘F:Ds40xxSDK::InitDSPs() i().r0’             ;初始化芯片,函数: int __stdcall InitDSPs()
  2.  System::Call ‘F:Ds40xxSDK::GetBoardCount() i().r1’        ;获取板卡信息,函数:int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail)
  3.  StrCpy $2 1                                                ;传入通道号
  4.  System::Call ‘F:Ds40xxSDK::ChannelOpen(i r2)  i.r3’       ;打开通道,函数:HANDLE __stdcall ChannelOpen(int ChannelNum)
  5.  ${NSD_CreateLabel} 0 0 100% 12u ‘通道数$0,板卡数$1,通道句柄$3’     ;输出到自定义界面的label上
  6.  Pop $Label
  7.  System::Alloc 1024                                ;分配内存
  8.  Pop $R1                                           ;地址
  9.  System::Call “*$R1(i,i,i,i,i,i,i,i,i,i,i,i,i)”    ;创建结构体
  10.  Dumpstate::debug                           ;debug工具,查看变量及栈数据
  11.  StrCpy $5 0
  12.  System::Call ‘F:Ds40xxSDK::GetBoardDetail(i r5,i $R1) i .r6’    ;获取板卡信息,函数:int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail) ,传入板卡号($5)及结构体地址($R1),返回的信息保存到结构体中
  13.  messagebox MB_OK $6                           ;函数返回值,判断是否成功
  14.                    ;返回结构体:typedef struct{BOARD_TYPE_DS type;板卡型号BYTE sn[16];序列号……..}
  15. System::Call “*$R1(i,&i1 .r0,&i1 .r1,&i1 .r2,&i1 .r3,&i1 .r4,&i1 .r5,&i1 .r6,&i1 .r7,&i1 .r8,&i1 .r9)” ;把数组中的序列号,按1字节(&i1)取出
  16. StrCpy $R0 “$0$1$2$3$4$5$6$7$8$9”
  17. System::Call “*$R1(i .r2,&i1,&i1,&i1,&i1,&i1,&i1,&i1,&i1,&i1,&i1,&i1 .r0,&i1 .r1)”
  18. StrCpy $R0 “$R0$0$1”                                                                                   ;序列号1组12位,只是取最前面12位
  19. Dumpstate::debug
  20. ${NSD_CreateText} 0 13u 100% 12u “板卡类型$2 序列号为 $R0”                                             ;输出到Text控件上 Pop $Text
永恒心锁,版权所有丨如未注明,均为转载丨本网站采用BY-NC-SA协议进行授权

转载请注明:永恒心锁-分享互联网 » NSIS System.dll调用其他dll(例调海康SDK取板卡序列号)

您必须 登录 才能发表评论!