Upload
desma
View
87
Download
0
Embed Size (px)
DESCRIPTION
NetRecorder SDK. 詹嘉文 [email protected] M2CA, NFIC. 簡介. NetRecorder 系統架構 基本操作 透過遠端: NetRecorder 網頁 主機: GetVideo 資料庫結構簡介 系統、錄影設定 存檔記錄 其他. 簡介 ( cont.). 背景知識 網頁設計 NetRecorder 系統與錄影設定 新增、修改、刪除 變更通知 動態產生網頁. 簡介 ( cont.). 網頁設計 查詢存檔影像 撥放影像 瀏覽即時影像 登入、登出系統. 簡介 ( cont.). - PowerPoint PPT Presentation
Citation preview
NetRecorder SDK 2
簡介 NetRecorder 系統架構 基本操作
– 透過遠端 : NetRecorder 網頁– 主機 : GetVideo
資料庫結構簡介– 系統、錄影設定– 存檔記錄– 其他
NetRecorder SDK 6
NetRecorder 系統架構伺服器
IIS
NFXVRDER
瀏覽器
撥放影像ISAPI
新增、修改、查詢資料
RDS
變更通知
db
nfgvocxa
GetVideoRemoteScripting
NetRecorder SDK 7
資料庫簡介 系統設定
– 系統參數» PARAMETER» 安全容量、頻寬、保留天數
– 存檔路徑» DIRECTORY» 編號、路徑、自動刪除
– 即時影像» LIVEVIDEO_CFG» 名稱、 IP 、帳號
錄影設定– 定時錄影
» REGULAR_VIDEO» 時間、 IP 、帳號
– 警報錄影» EVENT» IP 、 GPI 、錄影時間
– 定時擷取» SNAPSHOT» 時間、 IP 、帳號、檔名
NetRecorder SDK 9
資料庫簡介 其他
– 使用者密碼» USER» 帳號、密碼、 IP 、操作員
– 管理者密碼» ADMINISTRATOR» 帳號、密碼
– 登錄記錄» LOGIN_LOG» 時間、帳號密碼、 IP
– 變更記錄» UPDATE_LOG» 時間、帳號、 IP 、變更內容
» Add 、 Delete 、 Modify
– 定時備份» AUTOBACKUP» 時間、類別、天數、路徑、是否刪除
NetRecorder SDK 10
背景知識
– HTML– Scripting Language:
» Java Script» VB Script
– Active Server Pages– Remote Data Service– Remote Scripting
NetRecorder SDK 12
網頁設計 - 系統與錄影設定
<BODY onLoad="OpenDB()"><TABLE DATASRC=#RDS1 Border=1><THEAD><TR><TD>ADM NO</TD><TD>ID</TD><TD>PASSWORD</TD></TR></THEAD>
<TBODY><TR><TD><Input NAME='ADM NO' Type=Text DATAFLD='ADM NO'></TD><TD><Input NAME='ID' Type=Text DATAFLD='ID'></TD><td><Input name=’password' type=text datafld='PASSWORD'></td></TR></TBODY></TABLE>
<Input Type=Button Value="AddNew" onClick="AddNewRecord()"><Input Type=Button Value="Update" onClick="SubmitChange()"><Input Type=Button Value="Delete” onClick=“DeleteRecord()”>
NetRecorder SDK 13
網頁設計 - 系統與錄影設定
<OBJECT ID="RDS1" ClassID="ClsID:BD96C556-65A3-11D0-983A-00C04FC29E33"></OBJECT>
<SCRIPT Language=VBScript>Sub OpenDB() RDS1.Server = "http://my_netrecorder" RDS1.Connect = "driver={Microsoft Access Driver (*.mdb)}" & _ ";dbq=C:\Inetpub\wwwroot\NetRecorder\GetVideo\NetRecorder.mdb" RDS1.SQL = "Select * From ADMINISTRATOR “ & _
“Order by [ADM NO] ASC" RDS1.RefreshEnd Sub</SCRIPT>
NetRecorder SDK 14
網頁設計 - 新增Sub AddNewRecord() On Error Resume Next Set rs = RDS1.Recordset rs.MoveLast intIndex=rs("ADM NO") rs.AddNew rs.Update rs("ADM NO") = intIndex+1 MsgBox " 新增一筆完成 " RDS1.SubmitChanges Location.Reload()End Sub
NetRecorder SDK 15
網頁設計 - 更改Sub SubmitChange() On Error Resume Next RDS1.SubmitChanges
If Err.Number <> 0 Then Location.Reload() MsgBox " 無法更新資料 " Else MsgBox " 更新資料完成 " End IfEnd Sub
NetRecorder SDK 16
網頁設計 - 刪除Sub DeleteRecord() DialogRet = showModalDialog (
"dlg.asp?Table=Administrator&Key=ADM NO”) Set rs = RDS1.Recordset rs.MoveFirst Do While Not rs.eof If CLng(rs("ADM NO")) = CLng(DialogRet) Then rs.delete rs.MoveLast Else rs.MoveNext End If Loop RDS1.SubmitChangesEnd Sub
NetRecorder SDK 17
網頁設計 - 刪除document.writeln( '<HTML><BODY>' );document.writeln( " 正在從 administrator 中刪除一筆資料 ");document.writeln(' <SELECT NAME="SelectMenu" onChange="jumpPage(this.form)">');for (var i = 1; i <= CamId.length; i++)
document.writeln("<OPTION>" + CamId[i]CamId[i]);document.writeln('</SELECT>');document.writeln('<Input Type=Button Value = " 取消 "
onClick="top.window.close()">');
function jumpPage(form) { i = form.SelectMenu.selectedIndex; if (i == 0) return; returnValue=CamId[i+1]; top.window.close();}
NetRecorder SDK 18
網頁設計 - 刪除 使用 Active Server Pages 動態產生資料
<!-- 檔案名稱 : myasp.ASP -->ASP Data = "<% max_data = 5 For counter = 1 to max_data%> <%=counter%>,<% Next %>"輸出結果:
ASP Data = " 1, 2, 3, 4, 5, "
NetRecorder SDK 19
網頁設計 - 刪除
<%DBPath=Server.MapPath("../GetVideo/NetRecorder.mdb")Set conn = Server.CreateObject("ADODB.Connection")conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" &_
DBPathsql = "Select * From Administrator”Set rs = Server.CreateObject("ADODB.Recordset")rs.Open sql, conn, 3, 3%>
NetRecorder SDK 20
網頁設計 - 刪除<SCRIPT LANGUAGE = "JavaScript">function MakeArray() { this.length = MakeArray.arguments.length; for (var i = 0; i < this.length; i++) this[i+1] = MakeArray.arguments[i]; }// var CamId = new MakeArray(“ 選擇” , 1,2,3….);
var CamId = new MakeArray(" 選擇任一筆資料 ",<% DO WHILE Not rs.eof %> "<%=rs.Fields("ADM NO").Value%>",<% rs.MoveNext LOOP %> "");</SCRIPT>
NetRecorder SDK 21
網頁設計 - 變更通知 目的
– 資料庫內容變動時主動通知 GetVideo 方法
– 透過 Remote Scripting 及中介軟體nfxgvocxa 通知 GetVideo
時機– 資料庫內容變更時:更新、刪除
NetRecorder SDK 22
Sub DoNoticeOCX() If StrComp("<%=vTable%>" , "regular_video") = 0 Then handleRSExecute("DoSchRecConfigUpdate") ElseIf StrComp("<%=vTable%>", ”save_dir") = 0 Then handleRSExecute("DoSaveDirConfigUpdate") End IfEnd Sub
網頁設計 - 變更通知 Client Script
NetRecorder SDK 23
網頁設計 - 變更通知<script language="JavaScript" src="rs.htm"></script><script language="JavaScript">
RSEnableRemoteScripting("../mynet");</script>
<SCRIPT Language="JavaScript">function handleRSExecute(Method){ var co = RSExecute("sm1.asp", Method);}</SCRIPT>
NetRecorder SDK 24
網頁設計 - 變更通知 Server Script
– Filename: SM1.ASP– Notifications
» DoSchRecConfigUpdate» DoEvTrigRecConfigUpdate» DoSchSnapShotConfigUpdate» DoAutoBackupConfigUpdate» DoParameterConfigUpdate» DoSaveDirConfigUpdate
NetRecorder SDK 25
1. Usage: dynapage.asp?table=ADMINISTRATOR&key=ADM NO
2. dynapage.asp vTable = Request("table") vKey = Request("key") vSQL="Select * From "& vTable &" Order By ["&vKey&"] ASC” Set conn = Server.CreateObject("ADODB.Connection") conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & vDbq Set rs = Server.CreateObject("ADODB.Recordset") rs.Open vSQL, conn, 3, 3
Response.Write "<table DATASRC=#RDS1><thead><tr>" For i = 0 to rs.Fields.Count - 1 Response.Write "<td>" & rs.Fields(i).Name & "</td>" Next Response.Write ”</tr></thead>"
網頁設計 - 動態產生網頁 (ASP)
NetRecorder SDK 26
網頁設計 - 動態產生網頁 (ASP)
Response.Write "<TBODY><TR>”
For i = 0 to rs.Fields.Count - 1 vName = rs.Fields(i).Name If rs.Fields(i).Type = vbBoolean Then Response.Write "<td><Input Type=CheckBox datafld='" & vName & "'>" Else Response.Write "<td><Input Type=Text datafld ='" & vName & "'>” End IfNext
Response.Write "</TR></TBODY></TABLE>"
NetRecorder SDK 28
網頁設計 -查詢存檔影像
Response.Write "<TBODY><TR>”For i = 0 to rs.Fields.Count - 1 vName = rs.Fields(i).Name If StrComp(vName, "FILENAME") = 0 Then Response.Write "<TD><Input NAME=PBFile Type=Text ID=PBFileID
DATAFLD='" & vName & "' "></TD>" ElseIf StrComp(rs.Fields(i).Name, "PATH ID") = 0 Then Response.Write "<TD><Input NAME='"&vName & "'
TYPE=HIDDEN DATAFLD='" & vName & "'></TD>" ElseIf rs.Fields(i).Type = vbBoolean Then Response.Write "<TD><DIV NAME='" & vName & "' Type=CheckBox
DATAFLD='" & vName & "'></TD>" Else Response.Write "<TD><DIV NAME='" & vName & "' DATAFLD='" &
vName & "' Size=" & LenB(vName) & "></TD>"
NetRecorder SDK 29
網頁設計 -查詢存檔影像
Response.Write "</TR></TBODY></TABLE>”
Response.Write "<INPUT Type=Button Value=Prev OnClick=""MYTABLE.previousPage()"">"
Response.Write "<INPUT Type=Button Value=NextOnClick=""MYTABLE.nextPage()"">"
NetRecorder SDK 30
網頁設計 -查詢存檔影像
<SCRIPT FOR=PBFileID EVENT=onclick LANGUAGE="JScript">
var idx = window.event.srcElement.sourceIndex; var fn = document.all(idx).value
if (fn.length > 0) window.open("pb.asp?IP=<%=vServerIP%>&FileName=" + fn+"&dir_id="+document.all(idx+2).value);</SCRIPT>
NetRecorder SDK 32
網頁設計 - 撥放影像<SCRIPT LANGUAGE="VBScript">function document_onstop() LV263a.Close()end function</SCRIPT>
<OBJECT ID="LV263a" WIDTH=320 HEIGHT=280 CLASSID="CLSID:894C310D-6FD7-11D3-BEE7-0000E8CEC6C9" CODEBASE="../CabFiles/nfx263.cab#version=1,0,0,2"> <PARAM NAME="ControlType" VALUE="1"> <PARAM NAME="ISAPI_PATH" VALUE="NetRecorder/Exec"> <PARAM NAME="URL" VALUE="http://<%=Request("IP")%>"> <param name="SaveFileName" value="<%=Request("FileName")%>"> <PARAM NAME="DIR_ID" VALUE="<%=Request("DIR_ID")%>"></OBJECT>
NetRecorder SDK 33
網頁設計 -瀏覽即時影像
<%vIP = Request("IP")vID = Request("ID")vNAME = Request("NAME")vPWD = Request("PWD")%><HTML><BODY><EMBED type="video/x-nficwmh263"
src="http://<%=vIP%>/pushall.htm;<%=vID%>?zzx=<%=vNAME%>&zzy=<%=vPWD%>&zzz=1&noinput=1" WIDTH="320" HEIGHT="240">
</BODY></HTML>
NetRecorder SDK 35
網頁設計 - 登入、登出系統
使用方法<-- filename: myasp.asp -->
<!--#include file="pwd.asp" -->
<HTML><body>…….</body></HTML>
NetRecorder SDK 36
網頁設計 - 登入、登出系統
<%ID = Request("ID")Pwd = Request("Pwd")If IsEmpty(Session("AdmPassed")) Then Session("AdmPassed") = FalseIf ID = "" Or Pwd = "" Then Head = " 請輸入您的認證資料 "ElseIf CheckAdmPwd( ID, Pwd ) Then Session("AdmPassed") = TrueElse Head = " 『使用者名稱』或『密碼』錯誤 "End If
If Not Session("AdmPassed") Then %>
NetRecorder SDK 37
網頁設計 - 登入、登出系統
<HTML> <%=Head%><FORM Action=<%=Request.ServerVariables("path_info")%>?
<%=Request.ServerVariables("query_string")%>Method=post>
使用者名稱 :<Input Type=Text Name=ID Size=12 Value=<%=ID%>>密碼 :<Input Type=Password Name=Pwd Size=12 value=<%=Pwd%>><Input Type=Submit Value=" 確 定 "></FORM></BODY></HTML><% Response.End End If%>
NetRecorder SDK 38
網頁設計 - 登入、登出系統
Function CheckAdmPwd( ID, Pwd ) …. sql = "Select * From ADMINISTRATOR Where id='" & id &
"' And PASSWORD = '" & Pwd & "'" Set rs = conn.Execute( sql ) If rs.EOF Then CheckAdmPwd = False Else CheckAdmPwd = True End IfEnd Function