海康压缩卡在delphi中如何设置OSD示例

 
procedure TDvr_Main.BitBtn1Click(Sender: TObject); //设置OSD
var
 i:integer;
begin
 for i:=0 to DSPChannl-1 do
 begin
    SetOSDFormat(i);
    setosd(i,true);
 end;
end;
function TDvr_Main.SetOSDFormat(i: Integer):BOOLEAN; //设置视频OSD
var
 L,m,nLength: Integer;
 Format1,Format2:array[0..40] of Word ;
 wFormat:WORD ;
 str:String ;
 wH,wL:char ;
begin
 Format1[0]:=16;
 Format1[1]:= 272;
 Format2[0]:= SpinEdit1.Value;
 Format2[1]:= SpinEdit2.Value;
 if not(RadioGroup1.ItemIndex=0) then //0:显示日期,1:不显示日期
    Format2[2]:=Ord(#0)
 else
 begin
    Format2[2]:= _OSD_YEAR4 ;
    Format2[3]:= Ord('-') ;
    Format2[4]:= _OSD_MONTH2 ;
    Format2[5]:= Ord('-') ;
    Format2[6]:= _OSD_DAY ;
    if (RadioGroup3.ItemIndex=0) then   //0:显示时间 ,1:不显示时间
    begin
      Format2[7]:= Ord(' ') ;
      Format2[8]:= _OSD_HOUR24 ;
      Format2[9]:= Ord(':') ;
      Format2[10]:= _OSD_MINUTE ;
      Format2[11]:= Ord(':') ;
      Format2[12]:= _OSD_SECOND ;
      Format2[13]:= Ord(#0) ;
      end
      else
      Format2[7]:= Ord(#0) ;
 end;
/
 L := 0;
 Format1[0]:= SpinEdit3.Value;
 Format1[1]:= SpinEdit4.Value;
 if (RadioGroup4.ItemIndex=0) then
 begin
    str:='第'+''+ inttostr(i+1)+''+'路';
 if (RadioGroup2.ItemIndex=0) then
 begin
    str:=trim(edit4.Text);
 end;   
    nLength:= Length(str);
    m:=1;
     while m < nLength+1 do
     begin
       wH:=str[m];
       wL:=str[m + 1];
       if (ord(wH) > 128)   then
       begin
         m:=m+1;
         wFormat:= ord(wH) * 16 * 16 + ord(wL);
       end
       else
       wFormat:= ord(wH);
       Format1[L + 2]:= wFormat;
       L:=L+1;
       m:=m+1;
 end;
 Format1[L + 2]:= Ord(#0);
 end
 else
 Format1[2]:= Ord(#0);
 SetOsdDisplayMode(i,255, false,1, @Format1, @Format2);
 Result :=True;
end;
 
 
type TShowStr = record X: Word; Y: Word; S: array [0 .. 43] of AnsiChar; end; type TCamera = record pHWND: HWND; strict private aCam: LongInt; g_nPort: LongInt; struDeviceInfo: NET_DVR_DEVICEINFO_V30; lRealHandle: LongInt; struPlayInfo: NET_DVR_CLIENTINFO; pUser: Pointer; dwRet: Integer; public property ErrCode: Integer read dwRet; procedure HCLogin(IP, User, Psd: String; Port: Word); procedure HCPlay(aHWND: HWND); procedure HCAddChar(str: TArray); procedure HCAddChar_V30(str: TArray); function HCGetJpeg(JpgName: String; JpgSize: Word = 0; JpgQua: Word = 19): Boolean; procedure HCStop; procedure HCLogout; end; {$ENDIF //} implementation procedure TCamera.HCLogin(IP, User, Psd: String; Port: Word); begin NET_DVR_Init(); lRealHandle := -1; dwRet := 0; aCam := NET_DVR_Login_V30(PAnsiChar(ansistring(IP)), Port, PAnsiChar(ansistring(User)), PAnsiChar(ansistring(Psd)), @struDeviceInfo); dwRet := NET_DVR_GetLastError; end; procedure TCamera.HCPlay(aHWND: HWND); begin struPlayInfo.lChannel := 1; struPlayInfo.lLinkMode := 0; struPlayInfo.sMultiCastIP := NIL; struPlayInfo.hPlayWnd := aHWND; lRealHandle := NET_DVR_RealPlay_V30(aCam, @struPlayInfo, nil, pUser, true); dwRet := NET_DVR_GetLastError; end; procedure TCamera.HCAddChar(str: TArray); var i: Integer; aStr: NET_DVR_SHOWSTRING; begin if length(str) > MAX_STRINGNUM then begin setlength(str, MAX_STRINGNUM); end; for i := 0 to length(str) - 1 do begin aStr.struStringInfo[i].wShowString := 1; aStr.struStringInfo[i].wStringSize := length(str[i].S); aStr.struStringInfo[i].wShowStringTopLeftX := str[i].X; aStr.struStringInfo[i].wShowStringTopLeftY := str[i].Y; move(str[i].S[0], aStr.struStringInfo[i].sString[0], length(str[i].S)); end; aStr.dwSize := sizeof(aStr); NET_DVR_SetDVRConfig(aCam, NET_DVR_SET_SHOWSTRING, 1, @aStr, sizeof(NET_DVR_SHOWSTRING)); dwRet := NET_DVR_GetLastError; end; procedure TCamera.HCAddChar_V30(str: TArray); var i: Integer; aStr: NET_DVR_SHOWSTRING_V30; begin if length(str) > MAX_STRINGNUM_V30 then begin setlength(str, MAX_STRINGNUM_V30); end; for i := 0 to length(str) - 1 do begin aStr.struStringInfo[i].wShowString := 1; aStr.struStringInfo[i].wStringSize := length(str[i].S); aStr.struStringInfo[i].wShowStringTopLeftX := str[i].X; aStr.struStringInfo[i].wShowStringTopLeftY := str[i].Y; move(str[i].S[0], aStr.struStringInfo[i].sString[0], length(str[i].S)); end; aStr.dwSize := sizeof(aStr); NET_DVR_SetDVRConfig(aCam, NET_DVR_SET_SHOWSTRING_V30, 1, @aStr, sizeof(NET_DVR_SET_SHOWSTRING_V30)); dwRet := NET_DVR_GetLastError; end; function TCamera.HCGetJpeg(JpgName: String; JpgSize: Word = 0; JpgQua: Word = 19): Boolean; var aJpg: NET_DVR_JPEGPARA; begin aJpg.wPicSize := JpgSize; aJpg.wPicQuality := JpgQua; if aCam >= 0 then begin result := NET_DVR_CaptureJPEGPicture(aCam, 1, aJpg, PAnsiChar(ansistring(JpgName))); dwRet := NET_DVR_GetLastError(); end else result := false; dwRet := NET_DVR_GetLastError; end; procedure TCamera.HCStop; begin if lRealHandle >= 0 then begin NET_DVR_StopRealPlay(lRealHandle); lRealHandle := -1; end; PlayM4_CloseStream(g_nPort); PlayM4_FreePort(g_nPort); end; procedure TCamera.HCLogout; begin if lRealHandle > -1 then begin HCStop; end; if aCam >= 0 then begin NET_DVR_Logout_V30(aCam); aCam := -1; end; NET_DVR_Cleanup(); end;
要通过 Delphi 编程来实现海康录像机录像计划的开发和设置,你需要使用海康提供的开发包。以下是基本的步骤: 1. 下载并安装海康开发包。 2. 创建一个新的 Delphi 项目。 3. 在项目添加海康开发包的相关组件。 4. 在代码初始化海康录像机连接。 5. 编写代码来设置录像计划,包括录像时间、录像模式、录像通道等。 6. 将设置保存到海康录像机。 以下是一个简单的示例代码,可供参考: ``` uses hcnetsdk, hcnettype; // 初始化海康录像机连接 procedure InitSDK; begin NET_DVR_Init; NET_DVR_SetConnectTime(2000, 1); NET_DVR_SetReconnect(10000, True); end; // 设置录像计划 procedure SetRecordPlan; var lpRecordParam: NET_DVR_RECORD_V30; begin // 设置通道号 lpRecordParam.dwChannel := 1; // 设置录像模式 lpRecordParam.dwRecordMode := NET_DVR_RECORD_MODE_MANUAL; // 设置开始时间 lpRecordParam.struStartTime.dwYear := 2021; lpRecordParam.struStartTime.dwMonth := 7; lpRecordParam.struStartTime.dwDay := 1; lpRecordParam.struStartTime.dwHour := 0; lpRecordParam.struStartTime.dwMinute := 0; lpRecordParam.struStartTime.dwSecond := 0; // 设置结束时间 lpRecordParam.struStopTime.dwYear := 2021; lpRecordParam.struStopTime.dwMonth := 7; lpRecordParam.struStopTime.dwDay := 2; lpRecordParam.struStopTime.dwHour := 0; lpRecordParam.struStopTime.dwMinute := 0; lpRecordParam.struStopTime.dwSecond := 0; // 设置录像时间长度 lpRecordParam.dwDuration := 3600; // 将设置保存到海康录像机 NET_DVR_SetDVRConfig(lUserID, NET_DVR_SET_RECORDCFG_V30, 0, @lpRecordParam, SizeOf(lpRecordParam)); end; // 主程序 var lUserID: NET_DVR_USER_LOGIN_INFO; begin InitSDK; lUserID := NET_DVR_Login_V30(...); // 连接海康录像机 SetRecordPlan; // 设置录像计划 NET_DVR_Logout(lUserID); // 断开连接 end. ``` 需要注意的是,具体的代码实现可能会因为海康开发包版本的不同而有所变化。因此,建议你先仔细阅读海康开发包的文档,并参考相关的示例代码来进行开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值