feat: GeViScope SDK integration with C# Bridge and Flutter app
- Add GeViScope Bridge (C# .NET 8.0) on port 7720 - Full SDK wrapper for camera control, PTZ, actions/events - 17 REST API endpoints for GeViScope server interaction - Support for MCS (Media Channel Simulator) with 16 test channels - Real-time action/event streaming via PLC callbacks - Add GeViServer Bridge (C# .NET 8.0) on port 7710 - Integration with GeViSoft orchestration layer - Input/output control and event management - Update Python API with new routers - /api/geviscope/* - Proxy to GeViScope Bridge - /api/geviserver/* - Proxy to GeViServer Bridge - /api/excel/* - Excel import functionality - Add Flutter app GeViScope integration - GeViScopeRemoteDataSource with 17 API methods - GeViScopeBloc for state management - GeViScopeScreen with PTZ controls - App drawer navigation to GeViScope - Add SDK documentation (extracted from PDFs) - GeViScope SDK docs (7 parts + action reference) - GeViSoft SDK docs (12 chunks) - Add .mcp.json for Claude Code MCP server config Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
7666
GeViScope_SDK_Docs/GeViScope_SDK_Complete.txt
Normal file
7666
GeViScope_SDK_Docs/GeViScope_SDK_Complete.txt
Normal file
File diff suppressed because it is too large
Load Diff
362
GeViScope_SDK_Docs/GeViScope_SDK_Part01_Pages_1-20.txt
Normal file
362
GeViScope_SDK_Docs/GeViScope_SDK_Part01_Pages_1-20.txt
Normal file
@@ -0,0 +1,362 @@
|
||||
================================================================================
|
||||
GeViScope SDK Documentation - Pages 1 to 20
|
||||
================================================================================
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 1
|
||||
============================================================
|
||||
|
||||
GeViScope SDK
|
||||
D ok u m e n t at i on | D oc u m e n t at i on | D oc u m e n t at i on | D oc u m e n t a t i ón
|
||||
Version 04.2013
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 2
|
||||
============================================================
|
||||
|
||||
GeViScope Software Development Kit (SDK)
|
||||
Introduction
|
||||
The GeViScope SDK consists of a collection of free software interfaces for the
|
||||
GEUTEBRÜCK DVRs GeViScope and RePorter. It can be used to integrate these devices
|
||||
in custom applications and although for linking not yet supported peripherals.
|
||||
The interfaces are based on native Win32 DLLs. So they can be used with various devel-
|
||||
opment platforms of the Windows OS.
|
||||
To support the .NET technology the SDK examples contain wrapper classes based on
|
||||
C++/CLI. These wrapper examples can be freely used, modified and extended by the SDK
|
||||
users. The C# examples included in the SDK demonstrate, how the wrappers can be used
|
||||
by custom applications.
|
||||
Contents
|
||||
Files and directory structure of the SDK
|
||||
Setting up a virtual test environment
|
||||
Remote control GSCView
|
||||
Overview of the interfaces in the SDK
|
||||
Supported development platforms
|
||||
Guidelines and hints
|
||||
GSCView data filter plugins
|
||||
Examples overview
|
||||
Action documentation
|
||||
Documentation-History Version 3.9 / PME
|
||||
Files and directory structure of the SDK
|
||||
During the installation of the SDK the environment variable %GSCSDKPATH% which
|
||||
points to the root directory of the SDK is set. This reference path is used in all examples.
|
||||
%GSCSDKPATH%\Bin
|
||||
Contains all dynamic link libraries and is the target directory for the
|
||||
compiled examples
|
||||
%GSCSDKPATH%\include Contains all Delphi import units, C++ header and cppfiles
|
||||
%GSCSDKPATH%\lib
|
||||
Contains all lib files for Borland C++ Builder and Microsoft Visual C++
|
||||
The matching interface units between C++ and Delphi have the same name but compiler
|
||||
specific file extensions.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 3
|
||||
============================================================
|
||||
|
||||
Setting up a virtual test environment
|
||||
Introduction
|
||||
All required components for setting up a virtual GeViScope device are included in the SDK.
|
||||
So an independent development of custom solutions can be achieved without any special
|
||||
hardware required.
|
||||
After starting up the GeViScopeserver (part of the virtual GeViScope device) GeViScope
|
||||
software can be used with full function for two hours. After that time the functionality is lim-
|
||||
ited. After stop and restart of the server full functionality is offered for two hours again.
|
||||
Step by step
|
||||
After the successful installation of the SDK all necessary files exist in the installation folder
|
||||
(normally “%HOMEPATH%\My Documents\GeViScopeSDK”).
|
||||
Ste p 1: As s i gn l oc al pol i c y “Loc k pa ge s i n m e m or y ”
|
||||
To run GeViScopeserver on your local machine, a local policy needs to be assigned to the
|
||||
user account under which GeViScope server should work.
|
||||
Please open the “Local Security Policy” dialog in the control panel – Administrative Tools.
|
||||
With “Security Settings / Local Policies / User Rights Assignment” the privilege “Lock
|
||||
pages in memory” has to be assigned to the user account under which GeViScope server
|
||||
should run.
|
||||
The user has to be a member of the local Administrators group.
|
||||
The user has to logout and login again to let the setting take effect.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 4
|
||||
============================================================
|
||||
|
||||
Ste p 2: unpac k the te s t f i l e s
|
||||
Unpack the file “\BIN\GeViScope.Database.zip” to the root directory of your system drive
|
||||
(normally “C:”). Afterwards the file “C:\GeViScope.Database” should exist. Please note that
|
||||
the file is not seen in the windows explorer if hidden files and folders are masked out.
|
||||
Unpack the file “\BIN\DatabaseBackup.zip” to the sub folder “\BIN” of the GeViScope SDK
|
||||
base directory (normally “%HOMEPATH%\My Documents\GeViScopeSDK”). After that
|
||||
the file “\BIN\DatabaseBackup.gpf“, which contains a test backup file in GBF format
|
||||
(“GEUTEBRÜCK Backup File”) should exist.
|
||||
Ste p 3: s tar t the Ge Vi Sc ope s e r v e r
|
||||
Start the server by double clicking on file “\BIN\GSCServer.exe“. Now a console application
|
||||
should start.
|
||||
Ste p 4: i m por t the te s t s e tup
|
||||
Start the GSCSetupsoftware (file “\BIN\GSCSetup.exe“ ) and establish a connection to the
|
||||
local server. Use the following login information:
|
||||
Username = sysadmin
|
||||
Password = masterkey
|
||||
Send the setup once to the server by using the menu entry “Send setup to server“.
|
||||
The test setup “\BIN\GeViScopeSDKSetup.set“ can be imported into the server with the help
|
||||
of the menu entry “Import setup from file“. Afterwards it should be send to the server once
|
||||
again.
|
||||
Ste p 5: v i e w l i v e v i de o and ba c k up v i de o i n GSCVi e w
|
||||
Now the correct setup of the test environment should be tested. For that purpose the
|
||||
GSCViewsoftware (file “\BIN\GSCView.exe”) can be started and again a connection to the
|
||||
local server should be established. After a successful connection media channels are avail-
|
||||
able and can be viewed. Simply drag the media channels on the viewers of GSCView.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 5
|
||||
============================================================
|
||||
|
||||
The menu entry “Open backup file…” allows opening the test backup file “\BIN\Data-
|
||||
baseBackup.gpf“, which also contains media channels that can be displayed. Please check
|
||||
the correct function of the backup by play back the video material.
|
||||
Ste p 6: U s e of tool “\BI N \ GSCPLCSi m ul a tor . e x e ”
|
||||
The software “\BIN\ GSCPLCSimulator.exe” serves as a monitoring tool for all messages
|
||||
(actions) and events that are transported inside the complete system. Furthermore actions
|
||||
can be triggered and events can be started and stopped.
|
||||
After building up a connection to the local server all action traffic is displayed in a list.
|
||||
This tool is extremely helpful for testing of custom applications based on the SDK and for
|
||||
analyzing message flow in the complete system.
|
||||
Background information
|
||||
To provide a test environment with full functionality the GeViScope media plugin“MCS”
|
||||
(Media Channel Simulator) is used. It simulates real video media channels by channeling
|
||||
test pictures into the GeViScopeserver. 16 media channels can be used as live channels or
|
||||
can be recorded into the test database. Furthermore the channels create messages
|
||||
(actions) that allow using them as base for developing video analysis software.
|
||||
The media plugin“MCS” is part of the SDK including source code (development platform Bor-
|
||||
land C++ Builder 6) and documentation (please see topic “Examples overview” for more
|
||||
information).
|
||||
Overview of the interfaces in the SDK
|
||||
Introduction
|
||||
This document gives a short overview of the different interfaces that belong to the SDK.
|
||||
Please note, that all interfaces include class declarations to access the exported functions
|
||||
of the dynamic link libraries. To use them in C++, the matching cpp files and the lib files cor-
|
||||
responding to the DLLs have to be added to the custom project.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 6
|
||||
============================================================
|
||||
|
||||
Building blocks of functionality
|
||||
DBI
|
||||
l Low level server and database interface
|
||||
l Connection handling, GBF access, raw database access (no video display!), media
|
||||
export functionality, backup functions, access to raw live media (no video display!),
|
||||
setup data access
|
||||
l Supports basic functionality for building blocks “PLC” and “MediaPlayer”
|
||||
l Main binary file: GSCDBI.DLL
|
||||
l Main include files (C++): GSCDBI.h, GSCDBI.cpp
|
||||
l Main include files (Pascal): GSCDBI.pas
|
||||
PLC
|
||||
l Complex notification, action and event processing
|
||||
l Listen to, dispatch, create and send actions
|
||||
l Listen to events and system notifications
|
||||
l Allows controlling and monitoring the system
|
||||
l Main binary file: GSCActions.DLL
|
||||
l Main include files (C++): GSCActions.h
|
||||
l Main include files (Pascal): GSCActions.pas
|
||||
TACI
|
||||
l Telnet Action Command Interface
|
||||
l Simple ASCII-Format communication based on Telnet
|
||||
l Allows controlling and monitoring the system
|
||||
l Received actions need to be parsed
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 7
|
||||
============================================================
|
||||
|
||||
l To use that interface, the media plugin “GSCTelnetActionCommand” needs to be
|
||||
installed
|
||||
Me di aPl ay e r
|
||||
l High level server and database interface including media presentation
|
||||
l Display video, play audio (live and backup)
|
||||
l Integrated export functionality (GBF, MPEG, Video-DVD, Single picture)
|
||||
l Search media data by time or corresponding to event data
|
||||
l Main binary file: GSCMediaPlayer.DLL
|
||||
l Main include files (C++): GSCMediaPlayer.h, GSCMediaPlayer.cpp
|
||||
l Main include files (Pascal): GSCMediaPlayer.pas
|
||||
Of f s c r e e nVi e w e r
|
||||
l Part of building block “MediaPlayer”
|
||||
l Same functionality as MediaPlayer, but: no rendering, only decompressing
|
||||
l Class TGSCOffscreenViewer can be used analogous to TGSCViewer
|
||||
Me di a pl ugi n (Ge Vi Sc ope s e r v e r pl ugi ns )
|
||||
l GeViScope server plugins allow integrating custom peripherals in GeViScope sys-
|
||||
tems
|
||||
l Channeling of video and/or audio media into the server
|
||||
l Including full access to PLC
|
||||
l Plugins run as In-Process-DLLs in GeViScope server software
|
||||
GSCVi e w data f i l te r pl ugi n
|
||||
l GSCView plugins allow integrating custom data filter frontends in GSCView soft-
|
||||
ware
|
||||
l Plugins run as In-Process-DLLs in GSCView software
|
||||
GSCVi e w data pr e s e ntati on pl ugi n
|
||||
l GSCView plugins allow customized presentation of event data in GSCView soft-
|
||||
ware, especially of event data presented in viewed pictures
|
||||
l Plugins run as In-Process-DLLs in GSCView software
|
||||
Remote control GSCView by actions
|
||||
Introduction
|
||||
The simplest approach to view and browse live and recorded video of one or more GeViS-
|
||||
copes is to remote control GSCView out of custom solutions.
|
||||
GSCView can be used in a special mode so that it can be controlled by actions that are sent
|
||||
from a GeViScope server. The actions can be channeled into the system using the SDK
|
||||
(GSCDBI.DLL and GSCActions.DLL) in custom applications. As an alternative the actions
|
||||
can be sent to the TACI interface of the GeViScope server. The TACI interface is a media
|
||||
plugin of the GeViScope server, which can receive actions as ASCII text commands similar
|
||||
to a TELNET communication. The TACI plugin has to be licensed.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 8
|
||||
============================================================
|
||||
|
||||
Step by step
|
||||
The following step by step instructions show how to configure a simple system to demon-
|
||||
strate remote controlling GSCView. The virtual test environment included in the SDK should
|
||||
be successfully installed and set up before following these instructions (see topic Setting up
|
||||
a virtual test environment).
|
||||
Ste p 1: s tar t the Ge Vi Sc ope s e r v e r
|
||||
Start the server by double clicking on file “\BIN\GSCServer.exe“. Now a console application
|
||||
should start.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 9
|
||||
============================================================
|
||||
|
||||
Ste p 2: s tar t GSCVi e w
|
||||
Start the GSCView software (file “\BIN\GSCView.exe”).
|
||||
Ste p 3: s tar t the pr of i l e m anage r
|
||||
The menu entry “Options – Profile manager…” starts the internal profile manager of
|
||||
GSCView. The profil manager allows configuring all GSCView settings.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 10
|
||||
============================================================
|
||||
|
||||
Ste p 4: de c l ar e l oc al c onne c ti on as “c onne c t autom a ti c a l l y ”
|
||||
By selecting “Connections” in the section “Resources” the local connection can be declared
|
||||
as a connection that is automatically built up after starting GSCView. Additional the option
|
||||
“Reconnect automatically” should be activated.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 11
|
||||
============================================================
|
||||
|
||||
If the connection is open in GSCView or GSCSetup, the settings of the connection cannot
|
||||
be changed. Close all local connections at first to be able to change the connection settings.
|
||||
Ste p 5: c onf i gur e GSCVi e w to be abl e to r e m ote c ontr ol i t by
|
||||
a c ti ons
|
||||
The entry “Options profile” in the section “Profiles” shows a tab control with a lot of different
|
||||
GSCView settings. To be able to remote control GSCView the option “Remote control” on
|
||||
the “Actions” tab has to be set.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 12
|
||||
============================================================
|
||||
|
||||
The “Viewer client number” should be set to a arbitrary global number that is unique in the
|
||||
whole system. This global “Viewer client number” identifies this special instance of
|
||||
GSCView in the whole network. The number is used in different actions to remote control
|
||||
GSCView.
|
||||
By contrast the “global number” of a viewer in a custom scene identifies a special viewer in
|
||||
a user defined scene. Details about user defined scenes will be topic of the next step.
|
||||
Ste p 6: us e r de f i ne d s c e ne s
|
||||
To define user defined scenes in GSCView the entry “Scenes” in section “Resources”
|
||||
should be selected. By right clicking on one of the predefined scenes new user defined
|
||||
scenes can be created. For this step by step example two new scenes with the names
|
||||
“MyStartScene” and “MyScene” have to be added. With the button “Edit scene” the global
|
||||
numbers of the viewers of the scene and the video channels that should be displayed can be
|
||||
set.
|
||||
The “MyStartScene” should be based on the “Matrix 4x4”. The viewers should have the
|
||||
global numbers 1001 to 1016. Each viewer should display live pictures of a video channel of
|
||||
the local connection. The video channels can be set via drag & drop while editing the scene.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 13
|
||||
============================================================
|
||||
|
||||
The “MyScene” should be based on the “Matrix 2x2” and the viewers should have the global
|
||||
numbers 1101 to 1104. The viewers should not automatically display any video channel.
|
||||
They will be used by special actions to display video channels.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 14
|
||||
============================================================
|
||||
|
||||
Ste p 7: m odi f y the appe ar anc e of GSCVi e w
|
||||
The appearance of GSCView can be controlled by different settings in the entry “Options pro-
|
||||
file” of the section “Profiles”. For this test scenario, GSCView should appear as a stupid
|
||||
video wall without any user controls directly visible in the GSCView application window. To
|
||||
achieve this, the following options on the “Application” tab have to be set:
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 15
|
||||
============================================================
|
||||
|
||||
Please keep in mind, that if the option “Sensitive area enabled” is not set and if all “Hide…”
|
||||
options are set, the main menu of GSCView only can be accessed by pressing F10!
|
||||
Ste p 8: s av e al l s e tti ngs
|
||||
All settings should be saved by selecting the menu entry “File – Save”.
|
||||
Ste p 9: te s t the s y s te m w i th GSCPLCSi m ul a tor
|
||||
After restarting GSCView it should appear in full mode with 16 viewers displaying live pic-
|
||||
tures of the video channels of the local connection.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 16
|
||||
============================================================
|
||||
|
||||
Now start the software “\BIN\ GSCPLCSimulator.exe” to test the system. The
|
||||
GSCPLCSimulator serves as a monitoring tool for all messages (actions) and events that
|
||||
are transported inside the complete system. Furthermore actions can be triggered and
|
||||
events can be started and stopped.
|
||||
After its start the connection to the local server should be build up automatically and all
|
||||
action traffic is displayed in a list.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 17
|
||||
============================================================
|
||||
|
||||
With the button “Dialog” an action can be selected and with the button “Send” this action can
|
||||
be send to the GeViScope server. For testing the system first select the action “VC change
|
||||
scene by name” in the category “Viewer actions” to display “MyScene” on the GSCView
|
||||
with the global “Viewer client number” 1000.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 18
|
||||
============================================================
|
||||
|
||||
After sending the action, GSCView should display an “empty” “MyScene”.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 19
|
||||
============================================================
|
||||
|
||||
To display video channels in the viewers of “MyScene” the action “Viewer connect live” can
|
||||
be used. The parameter “viewer” now means the global number of a viewer of “MyScene”,
|
||||
e.g. 1102. The parameter “channel” should be set to the global number of the video channel
|
||||
that should be displayed, e.g. 2.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 20
|
||||
============================================================
|
||||
|
||||
After sending the action, GSCView displays live video of the video channel 2 on the upper
|
||||
left viewer in GSCView.
|
||||
848
GeViScope_SDK_Docs/GeViScope_SDK_Part02_Pages_21-40.txt
Normal file
848
GeViScope_SDK_Docs/GeViScope_SDK_Part02_Pages_21-40.txt
Normal file
@@ -0,0 +1,848 @@
|
||||
================================================================================
|
||||
GeViScope SDK Documentation - Pages 21 to 40
|
||||
================================================================================
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 21
|
||||
============================================================
|
||||
|
||||
Background information
|
||||
In GeViScope systems actions are used to communicate between the GeViScope server
|
||||
and any client application. All available actions can be divided into three groups:
|
||||
Notification actions (for example “User Login”), command actions (for example “Viewer con-
|
||||
nect live”) and logical actions (these actions are not directly created by the GeViScope
|
||||
server and they don’t directly result in any reaction in the GeViScope server, for example
|
||||
“Custom action”).
|
||||
All actions are grouped in different categories. The category “Viewer actions” contains all
|
||||
actions that are relevant for remote controlling GSCView.
|
||||
To get notifications about GSCView activities, one of the options “Send notification actions”
|
||||
in the profile manager of GSCView has to be set. All possible notification actions are col-
|
||||
lected in the action category “Viewer notifications”.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 22
|
||||
============================================================
|
||||
|
||||
More detailed information about all available actions can be found in the topic “Action doc-
|
||||
umentation” (especially Viewer actions and Viewer notifications).
|
||||
Please be aware of the fact that GSCView is working in an asynchronous mode. If a custom
|
||||
application sends an action, that depends on the result of the previous sent action there may
|
||||
be the need for inserting a pause time before sending the second action (e.g. send action
|
||||
“Viewer connect live”, wait one second, send action “Viewer print picture”). GSCView does
|
||||
not have an input queue for remote control actions.
|
||||
Supported development platforms
|
||||
The SDK is designed and tested to be used with the following development environments:
|
||||
l CodeGear C++ Builder 6 ©
|
||||
l CodeGear C++ Builder 2009 ©
|
||||
l CodeGear Delphi 7 ©
|
||||
l CodeGear Delphi 2005 ©
|
||||
l CodeGear Delphi 2009 ©
|
||||
l Microsoft Visual Studio 2005, C++, MFC ©
|
||||
l Microsoft Visual Studio 2008, C++, MFC ©
|
||||
l Microsoft Visual Studio 2005, C++/CLI ©
|
||||
l Microsoft .NET © (wrapper classes are contained in the “Examples” folder)
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 23
|
||||
============================================================
|
||||
|
||||
Guidelines and hints
|
||||
Introduction
|
||||
It is recommended to be familiar with the GeViScope system and the possibilities of modern
|
||||
video surveillance systems and video management systems. Before starting programming
|
||||
your custom GeViScope client you should know basics of video formats, video com-
|
||||
pression, GeViScope events, GeViScope actions and the principles of a client - server net-
|
||||
work communication.
|
||||
The following sections support you with some suggestions and hints about using the SDK
|
||||
interfaces.
|
||||
General hints
|
||||
If your application needs to listen to events and actions please use the application PLCSim-
|
||||
ulator.exe that you can find on Your GeViScope device. This software allows you to start
|
||||
actions and events which might be used by your program.
|
||||
You should work and do some tests with a real GeViScope device or with the virtual test
|
||||
environment belonging to the SDK. Create some events and actions, start them with
|
||||
PLCSimulator.exe.
|
||||
Starting the setup software GSCSetup.exe with the command line parameter /utilities will
|
||||
offer you the possibility to open DBITest to discover the database structure and to evaluate
|
||||
and test select statements against the database. Additionally this tool offers you the pos-
|
||||
sibility to start the registry editor to evaluate the internal structure of the GeViScope setup.
|
||||
Make sure to delete all objects that are created inside of DLLs. The objects
|
||||
themselves should always offer a Destroy() or Free() method for that.
|
||||
Callback functions, which are called out of the SDK DLLs, are called from threads, which
|
||||
were created inside the DLLs. Variables and pointers that are passed as arguments of the
|
||||
callback may not be used outside the callback context. They are only valid for the duration
|
||||
of the callback call.
|
||||
Structures that are used as arguments for SDK functions should always be initialized by the
|
||||
function memset(). After setting all the structure elements to zero, the size or structsize ele-
|
||||
ment has to be initialized with the sizeof() function.
|
||||
MPEG-2 files that were created by SDK functions can possibly not be played with the win-
|
||||
dows media player. The reason is a missing MPEG-2 decoder. We recommend using DVD
|
||||
player software like PowerDVD or the VCL Media Player software.
|
||||
Working with handles and instances
|
||||
Integral part of the SDK are units that give the user a comfortable access to the plain func-
|
||||
tions of the DLL, e.g. GSCDBI.h/.cpp/.pas. In these units classes encapsulate access to
|
||||
instances of objects which are created inside the DLL. To have access from outside the
|
||||
DLL (custom application) to the inside residing instances, handles are used. The units have
|
||||
to be added to the project respectively to the solution to avoid linker errors.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 24
|
||||
============================================================
|
||||
|
||||
After work with instances is finished, the instances have to be deleted by calling their des-
|
||||
troy() or free() method. Otherwise there will be memory leaks left.
|
||||
Using the plain exported functions of the DLL is not recommended. To get access to full
|
||||
functionality you should use the units instead (pas files or h/cpp files).
|
||||
The following example (in pseudo code) should illustrate the above facts:
|
||||
// define a handle to a server object
|
||||
HGscServer MyServer;
|
||||
// create a server object instance inside the DLL and
|
||||
// get a handle to it
|
||||
MyServer = DBICreateRemoteserver();
|
||||
...
|
||||
// work with the object instance with the help of the handle
|
||||
MyServer->Connect();
|
||||
...
|
||||
// define a handle to a PLC object
|
||||
HGscPLC PLC;
|
||||
// create a PLC object instance inside the DLL and
|
||||
// get a handle to it
|
||||
PLC = MyServer.CreatePLC();
|
||||
...
|
||||
// work with the object instance with the help of the handle
|
||||
PLC->OpenPushCallback(...);
|
||||
...
|
||||
// destroy PLC object
|
||||
PLC->Destroy();
|
||||
...
|
||||
// destroy server object
|
||||
MyServer->Destroy();
|
||||
Interaction between DBI and MediaPlayer
|
||||
The DBI interface gives access to GeViScope server functionality. After creating an
|
||||
instance with the function DBICreateRemoteserver() a connection to the server can be
|
||||
established by calling the method Connect() of the server object instance.
|
||||
The following methods of a server object instance can be called to get access to different
|
||||
kinds of functions (not a complete list):
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 25
|
||||
============================================================
|
||||
|
||||
Method
|
||||
Function
|
||||
CreateDataSet(),
|
||||
CreateDataPacket()
|
||||
Fetch data from server database
|
||||
CreateLiveStream()
|
||||
Fetch live data from server
|
||||
CreateRegistry()
|
||||
Fetch setup data from server (media channel information, event
|
||||
information, …)
|
||||
CreatePLC()
|
||||
Listen to, create and send actions
|
||||
The example (in pseudo code) of the previous chapter should illustrate the above facts.
|
||||
The MediaPlayer interface offers simple to use objects to display live and recorded video in
|
||||
windows controls. A viewer object instance needs to be created by calling
|
||||
GMPCreateViewer(). The viewer needs a handle to a windows control and a handle to a
|
||||
server object instance. It handles fetching data, decompressing data and displaying video in
|
||||
the linked windows control by itself.
|
||||
The following methods of a viewer object instance can be called to get access to different
|
||||
kinds of functions (not a complete list):
|
||||
Method
|
||||
Function
|
||||
ConnectDB()
|
||||
Fetch video data from the database and display it in any play mode required.
|
||||
Filter and search criteria can optionally be defined.
|
||||
SetPlayMode
|
||||
(pmPlayNextEvent)
|
||||
Display the next available event pictures
|
||||
The following example (in pseudo code) shows how to create a viewer and use it after-
|
||||
wards:
|
||||
// define a handle to a viewer object
|
||||
HGscViewer MyViewer;
|
||||
// create a viewer object instance inside the DLL and
|
||||
// get a handle to it
|
||||
MyViewer = GMPCreateViewer(WindowHandle, ...);
|
||||
// define a structure with data needed to link
|
||||
// the viewer to a media channel in the server
|
||||
TMPConnectData MyViewerConnectData;
|
||||
// handle to the server object instance
|
||||
MyViewerConnectData.Connection = MyServer;
|
||||
MyViewerConnectData.ServerType = ctGSCServer;
|
||||
MyViewerConnectData.MediaType = mtServer;
|
||||
// ID of the media channel that should be displayed
|
||||
MyViewerConnectData.MediaChID = ...
|
||||
// link the viewer to a media channel and display live data
|
||||
MyViewer->ConnectDB(MyViewerConnectData, pmPlayStream, ...);
|
||||
// destroy viewer object
|
||||
MyViewer->Destroy();
|
||||
Beside the viewer object class there is another class in the MediaPlayer interface: The off-
|
||||
screen viewer object class. If you want to decompress media, which should not be
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 26
|
||||
============================================================
|
||||
|
||||
displayed with the help of the viewer object, you can use the offscreen viewer object. An
|
||||
instance can be created with the function GMPCreateOffscreenViewer(). The offscreen
|
||||
viewer object instance provides nearly the same functionality as the viewer object class
|
||||
does. The video footage is not rendered in a window, it is decompressed in a special Decom-
|
||||
pBuffer object instance. After the decompression is done inside the offscreen viewer, the
|
||||
hosting application can be notified with the help of a callback function. Inside the callback
|
||||
the decompressed image can be accessed.
|
||||
The DecompBuffer class encapsulates special functions for effective decompressing. So it
|
||||
is recommend to use it. Creating an instance of the buffer can be reached by calling the func-
|
||||
tion GMPCreateDecompBuffer(). The instance can be used for as many decompressions
|
||||
as needed. The method GetBufPointer() gives access to the raw picture data inside the buf-
|
||||
fer.
|
||||
Here is a short example (in pseudo code) how to work with an offscreen viewer object:
|
||||
// define a handle to a DecompBuffer object
|
||||
HGscDecompBuffer MyDecompBuffer;
|
||||
// create a DecompBuffer object instance inside the DLL and
|
||||
// get a handle to it
|
||||
MyDecompBuffer = GMPCreateDecompBuffer();
|
||||
// define a handle to a offscreen viewer object
|
||||
HGscViewer MyOffscreenViewer;
|
||||
// create an offscreen viewer object instance inside the DLL and
|
||||
// get a handle to it
|
||||
MyOffscreenViewer = GMPCreateOffscreenViewer(MyDecompBuffer);
|
||||
// set callback of the offscreen viewer object
|
||||
MyOffscreenViewer.SetNewOffscreenImageCallBack(NewOff-
|
||||
screenImageCallback);
|
||||
// define a structure with data needed to link
|
||||
// the offscreen viewer to a media channel in the server
|
||||
TMPConnectData MyOffscreenViewerConnectData;
|
||||
// handle to the server object instance
|
||||
MyOffscreenViewerConnectData.Connection = MyServer;
|
||||
MyOffscreenViewerConnectData.ServerType = ctGSCServer;
|
||||
MyOffscreenViewerConnectData.MediaType = mtServer;
|
||||
// ID of the media channel that should be decompressed
|
||||
MyOffscreenViewerConnectData.MediaChID = ...
|
||||
// link the offscreen viewer to a media channel and decompress live data
|
||||
MyOffscreenViewer->ConnectDB(MyOffscreenViewerConnectData, pmPlayStream,
|
||||
...);
|
||||
...
|
||||
// destroy offscreen viewer object
|
||||
MyOffscreenViewer->Destroy();
|
||||
// destroy DecompBuffer object
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 27
|
||||
============================================================
|
||||
|
||||
MyDecompBuffer->Destroy();
|
||||
...
|
||||
// callback function, that is called after images have been decompressed
|
||||
...
|
||||
// get a raw pointer to the picture in the DecompBuffer
|
||||
// object
|
||||
MyDecompBuffer->GetBufPointer(BufferPointer, ...);
|
||||
// copy the picture into a windows bitmap resource
|
||||
// for example
|
||||
SetDIBits(..., BitmapHandle, ..., BufferPointer, ..., DIB_RGB_COLORS);
|
||||
...
|
||||
Enumeration of setup data
|
||||
GeViScope Server resources can be enumerated by custom applications. The setup object,
|
||||
which can be instantiated by calling the server method CreateRegistry(), offers functionality
|
||||
for this.
|
||||
Enumeration of resources normally is done in four steps:
|
||||
1. Define an array of type GSCSetupReadRequest with the only element “/”. This
|
||||
causes the method ReadNodes() to transfer the whole setup from the server to the
|
||||
custom application.
|
||||
2. Call the method ReadNodes() of the setup object to get the whole setup from the
|
||||
server.
|
||||
3. Call one of the Get…() methods of the setup object to get an array of GUIDs rep-
|
||||
resenting the list of resources. There are different Get…() methods, e. g. GetMe-
|
||||
diaChannels() or GetEvents().
|
||||
4. Use the GUID array to receive the resources data by calling Get…Settings() meth-
|
||||
ods, e. g. GetMediaChannelSettings() or GetEventSettings().
|
||||
Here is an example (in pseudo code), that shows how to enumerate the media channels:
|
||||
...
|
||||
// connect to the server
|
||||
MyServer->Connect();
|
||||
...
|
||||
// define a handle to a setup object
|
||||
HGscRegistry MySetup;
|
||||
// create a setup object instance inside the DLL and
|
||||
// get a handle to it
|
||||
MySetup = MyServer->CreateRegistry();
|
||||
// define a array for the setup read request
|
||||
GscSetupReadRequest SetupReadRequest[1];
|
||||
SetupReadRequest[0].NodeName = "/";
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 28
|
||||
============================================================
|
||||
|
||||
// read the setup data from the server
|
||||
MySetup->ReadNodes(&SetupReadRequest, ...);
|
||||
// define a GUID array for the GUIDs of the
|
||||
// existing media channels
|
||||
GuidDynArray MediaChannels;
|
||||
// get the GUID array out of the setup data
|
||||
MySetup->GetMediaChannels(MediaChannels);
|
||||
// get the data of each single media channel
|
||||
for each MediaChannelGUID in MediaChannels
|
||||
MySetup->GetMediaChannelSettings(MediaChannelGUID,
|
||||
MediaChannelID,
|
||||
GlobalNumber,
|
||||
...);
|
||||
...
|
||||
// destroy setup object
|
||||
MySetup->Destroy();
|
||||
// destroy server object
|
||||
MyServer->Destroy();
|
||||
...
|
||||
Please note that especially the media channels can be enumerated by using the global func-
|
||||
tion GMPQueryMediaChannelList() of the MediaPlayer interface as well.
|
||||
PLC, actions and events
|
||||
The PLC (Prcess Logic Control) object supports you with functionality for handling noti-
|
||||
fications, actions and events. The method CreatePLC() of the server object class creates a
|
||||
handle to a PLC object inside the DBI DLL.
|
||||
The following methods of a PLC object instance can be called to get access to different
|
||||
kinds of functions (not a complete list):
|
||||
Method
|
||||
Function
|
||||
SendAction()
|
||||
Send an action to the connected server
|
||||
StartEvent()
|
||||
Start an event of the connected server
|
||||
SubscribeActions()
|
||||
Subscribe a list of actions that should be notified by a registered callback
|
||||
function
|
||||
OpenPushCallback
|
||||
()
|
||||
Register a callback function, that is called if an notification arrives or a
|
||||
event starts/stops or if one of the subscribed actions arrives
|
||||
To receive Notifications and actions a callback function can be registered with the method
|
||||
OpenPushCallback(). After receiving an action, the action should be decoded and dis-
|
||||
patched by the an instance of the class GSCActionDispatcher. The action dispatcher gives
|
||||
you a simple way to react on specific actions. Here is a short example (in pseudo code):
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 29
|
||||
============================================================
|
||||
|
||||
// initialization code:
|
||||
...
|
||||
// connect to the server
|
||||
MyServer->Connect();
|
||||
...
|
||||
// define a handle to a PLC object
|
||||
HGSCPLC PLC;
|
||||
// create a PLC object instance inside the DLL and
|
||||
// get a handle to it
|
||||
PLC = MyServer.CreatePLC();
|
||||
...
|
||||
// link your callback function for a custom action
|
||||
// to the action dispatcher, so that the callback function
|
||||
// is called automatically if a cutsom action arrives
|
||||
ActionDispatcher->OnCustomAction = this->MyCustomActionHandler;
|
||||
// register a callback function for notifications,
|
||||
// events and actions (this callback function dispatches
|
||||
// all received actions with the help of the
|
||||
// GSCActionDispatcher)
|
||||
PLC->OpenPushCallback(...);
|
||||
...
|
||||
// destroy PLC object
|
||||
PLC->Destroy();
|
||||
...
|
||||
// destroy server object
|
||||
MyServer->Destroy();
|
||||
// callback function for all notifications, events and
|
||||
// subscribed actions:
|
||||
...
|
||||
// dispatch the received action to the linked
|
||||
// callback functions
|
||||
ActionDispatcher->Dispatch(ActionHandle);
|
||||
...
|
||||
Media channel IDs
|
||||
The existing media channels can be displayed by the viewer objects of the MediaPlayer
|
||||
interface. Normally this is done with the method ConnectDB(). This method needs the
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 30
|
||||
============================================================
|
||||
|
||||
media channel ID to identify the media channel (camera) that should be displayed.
|
||||
The media channel IDs are generated automatically by the GeViScope server. Every cre-
|
||||
ated media channel gets an ID that is always unique. So if you remove media channels from
|
||||
the setup and add them again, they will sure receive some new IDs.
|
||||
For that reason media channels should not be accessed by constant IDs. It is recommend
|
||||
using global numbers instead, because they can be changed in the setup. To find the fitting
|
||||
media channel ID for a given global number, the media channels should be enumerated from
|
||||
the server setup. Please refer to chapter “Enumeration of setup data” in this document to
|
||||
see how this is done.
|
||||
There is a similar difficulty with events, digital inputs and outputs. Events don’t have global
|
||||
numbers. Here the event name should be used instead.
|
||||
Handling connection collapses
|
||||
The callback OpenPushCallback() of the PLC object enables to listen to different kinds of
|
||||
notifications from the PLC object. One is the “plcnPushCallbackLost” notification. It is fired
|
||||
if a connection is internally detected as collapsed. As a reaction on this event you should
|
||||
destroy or free all objects that were created inside the DLLs and start a phase of reconnect
|
||||
tries. The reconnect tries should start every 30 seconds for example. Additionally your
|
||||
application can listen to UDP broadcasts that are sent by the GeViScope server. After your
|
||||
application received this broadcast it can directly try to reconnect to the server. Please be
|
||||
aware of the fact, that broadcasts only work in LAN – routers normally block broadcasts.
|
||||
Using MediaPlayer with GeViScope and MULTISCOPE III
|
||||
servers
|
||||
Generally the MediaPlayer interface can be used with GeViScope as well as MULTISCOPE
|
||||
III servers. To link the server connection to the viewer object, the connection data structure
|
||||
has to be defined. The type of the structure is “TMPConnectData”. The element “Server-
|
||||
Type” identifies the kind of server whose media should be displayed in the viewer.
|
||||
Please have a look on the example (in pseudo code) in the chapter “Interaction between DBI
|
||||
and MediaPlayer” in this document.
|
||||
For creating different kind of connections, different DLLs have to be used. For GeViScope
|
||||
the DLL “GSCDBI.DLL” and for MULTISCOPE III the DLL “MscDBI.DLL” has to be
|
||||
included in the project or solution of the custom application. They can coexist.
|
||||
Handling a connection to a MULTISCOPE III server is similar to GeViScope. Details can be
|
||||
found in the MULTISCOPE III SDK documentation.
|
||||
Using the SDK with .NET
|
||||
To make the usage of the native Win32 DLLs easier in .NET languages like C# or VB.NET,
|
||||
the SDK contains some wrapper assemblies around the plain SDK DLLs.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 31
|
||||
============================================================
|
||||
|
||||
These wrapper assemblies are developed in C++/CLI and published with the SDK. The
|
||||
assemblies can be found in the GeViScope SDK binary folder “GeViScopeSDK\BIN”.
|
||||
The SDK provides wrapper assemblies for the .NET-Frameworks versions 2.0 and 4.0
|
||||
which are named as follows:
|
||||
.NET-Framework 2.0
|
||||
• GscExceptionsNET_2_0.dll
|
||||
• GscActionsNET_2_0.dll
|
||||
• GscMediaPlayerNET_2_0.dll
|
||||
• GscDBINET_2_0.dll
|
||||
.NET-Framework 4.0
|
||||
• GscExceptionsNET_4_0.dll
|
||||
• GscActionsNET_4_0.dll
|
||||
• GscMediaPlayerNET_4_0.dll
|
||||
• GscDBINET_4_0.dll
|
||||
These wrapper assemblies can be used together with our native SDK DLLs (GscAc-
|
||||
tions.DLL, GscDBI.DLL, GscHelper.DLL, GscMediaPlayer.DLL, MscDBI.DLL) to create
|
||||
custom applications under any .NET language on a windows platform. The assemblies
|
||||
need to be referenced by the .NET project and all the files (assemblies and native DLLs)
|
||||
have to reside in the application folder.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 32
|
||||
============================================================
|
||||
|
||||
Deploying a custom solution based on the .NET wrapper
|
||||
To successfully deploy a custom application that uses the .NET wrapper contained in the
|
||||
SDK, the following prerequisites have to be fulfilled:
|
||||
a ) Mi c r os of t Vi s ual C+ + Re di s tr i buta bl e Pa c k age ha s to be
|
||||
i ns tal l e d
|
||||
The wrapper assemblies are developed in C++/CLI. So for executing them on a none devel-
|
||||
opment machine, the Microsoft Visual C++ Redistributable Package is needed. This pack-
|
||||
age exists in a debug or in a release version. On productive machines the release version
|
||||
needs to be installed.
|
||||
For applications using the .NET-Framework 2.0 the Visual C++ 2008 Redistributable Pack-
|
||||
age is needed. In case that the application is developed using the .NET-Framework 4.0 you
|
||||
need to install the Visual C++ 2010 Redistributable Package.
|
||||
b) . N ET F r am e w or k Ve r s i on 2. 0 SP 1 or ne w e r ha s to be
|
||||
i ns tal l e d
|
||||
If updating the .NET Framework on a GEUTEBRÜCK device (GeViScope or re_porter)
|
||||
fails, a special Microsoft tool Windows Installer CleanUp Utility (MSICUU2.exe) can
|
||||
improve the situation. After executing this tool, updating the Framework should be possible.
|
||||
c ) Wr appe r as s e m bl i e s AN D na ti v e SDK DLLs ar e ne e de d
|
||||
Beside the custom application also the wrapper assemblies and the native SDK DLLs (lis-
|
||||
ted above) are needed in the same folder as in which the custom application resides.
|
||||
If the application uses the .NET-Framework 4.0 you need to reference the GeViScope wrap-
|
||||
per DLLs with the extension _4_0 otherwise please use the wrapper assemblies with the
|
||||
extension _2_0 (see above).
|
||||
GeViScope REGISTRY
|
||||
Using the GscRegistry with .NET
|
||||
Introduction
|
||||
By using the GeViScope registry (GSCREGISTRY) it is possible to modify GeViScope/Re_
|
||||
porter settings programmatically. The GscRegistry is a proprietary registry format
|
||||
developed by GEUTEBRÜCK. This registry format is similar to the Microsoft Windows
|
||||
registry.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 33
|
||||
============================================================
|
||||
|
||||
All needed GeViScope server settings are stored in the GscRegistry database. The creation
|
||||
of own registry databases based on files is also possible.
|
||||
The GEUTEBRÜCK GEVISCOPE SDK provides several classes and methods to allow a
|
||||
comfortable access to the GscRegistry.
|
||||
Requirements
|
||||
The following requirements are needed to create a .NET application that uses the GscRe-
|
||||
gistry functionality:
|
||||
• .NET-Framework 2.0 SP1 or newer
|
||||
- .NET-Framework 2.0 SP1 Wrapper-Assemblies:
|
||||
GscExceptionsNET_2_0.dll
|
||||
GscDBINET_2_0.dll
|
||||
- .NET-Framework 4.0 Wrapper-Assemblies:
|
||||
GscExceptionsNET_4_0.dll
|
||||
GscDBINET_4_0.dll
|
||||
• Native Win32-DLLs, used by the .NET-Wrapper:
|
||||
- GscActions.dll
|
||||
- GscDBI.dll
|
||||
- GscMediaPlayer.dll
|
||||
- GscHelper.dll
|
||||
- MscDBI.dll
|
||||
• Microsoft Visual C++ Redistributable Package
|
||||
Using the registry
|
||||
In the following, the usage of the GscRegistry with .NET is explained in detail. It discusses
|
||||
the following steps:
|
||||
l Open the registry
|
||||
l Read values out of nodes
|
||||
l Create a node
|
||||
l Add values to a node
|
||||
l Save the registry
|
||||
All necessary classes and methods for using the GscRegistry are available in the GscDBI
|
||||
namespace. To include this namespace the following using-statement is needed:
|
||||
using GEUTEBRUECK.GeViScope.Wrapper.DBI;
|
||||
Ope n the r e gi s tr y
|
||||
To read or modify GeViScope/Re_porter settings it is necessary to establish a connection
|
||||
to the preferred GeViScope/Re_porter server before. After this is done you need to create a
|
||||
new object of the class GscRegistry and initialize it by using the CreateRegistry() method
|
||||
which is contained in the GscServer object.
|
||||
C#-Code: Open the registry
|
||||
if (_GscServer != null)
|
||||
{
|
||||
// create an object instance of the server registry
|
||||
GscRegistry GscRegistry = _GscServer.CreateRegistry();
|
||||
if (GscRegistry != null)
|
||||
{
|
||||
// define an array for the setup read request (registry node paths
|
||||
to read)
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 34
|
||||
============================================================
|
||||
|
||||
GscRegistryReadRequest[] ReadRequests = new GscRegistryReadRequest
|
||||
[1];
|
||||
ReadRequests[0] = new GscRegistryReadRequest("/", 0);
|
||||
// read the nodes (setup data) out of the server registry
|
||||
GscRegistry.ReadNodes(ReadRequests);
|
||||
}
|
||||
}
|
||||
The method ReadNodes() of the GscRegistry object expects an array of the type GscRe-
|
||||
gistryReadRequest which contains all node paths to be read out of the registry. In the
|
||||
source code snippet above, the array simply contains one element which represents the
|
||||
root node (“/”). By reading the root node the entire registry will be read out.
|
||||
Re a d v al ue s of node s
|
||||
The following source code snippet shows how to read values out of nodes:
|
||||
C#-Code: Read values out of nodes
|
||||
if (GscRegistry != null)
|
||||
{
|
||||
GscRegNode RegNode = GscRegistry.FindNode("/System/MediaChannels/");
|
||||
for (int i = 0; i < RegNode.SubNodeCount; ++i)
|
||||
{
|
||||
// find the GeViScope registry node of the parent node by means of
|
||||
the index
|
||||
GscRegNode SubRegNode = RegNode.SubNodeByIndex(i);
|
||||
GscRegVariant RegVariant = new GscRegVariant();
|
||||
// Get the value "Name" out of the sub registry type and store the
|
||||
value and
|
||||
// value type in the GscRegVariant class
|
||||
SubRegNode.GetValueInfoByName("Name", ref RegVariant);
|
||||
if (RegVariant != null && RegVariant.ValueType ==
|
||||
GscNodeType.ntWideString)
|
||||
Console.WriteLine(RegVariant.Value.WideStringValue);
|
||||
}
|
||||
}
|
||||
To read a specific node out of the registry the GscRegistry class provides the method
|
||||
FindNode().
|
||||
For that the path to the preferred node has to be committed to the method and it you will get
|
||||
back an object of the type of GscRegNode. This object contains all sub nodes and values of
|
||||
the found node.
|
||||
To access a sub node of the parent node the method SubNodeByIndex() provided by the
|
||||
class GscRegNode can be used or use the SubNodeByName() method if the name of the
|
||||
sub node is already known.
|
||||
The method GetValueInfoByName() can be used to access a specific value of a node. This
|
||||
method expects the name of the specific value as well as a reference to an object of type of
|
||||
GscRegVariant. The GscRegVariant object will be filled with the type of the value
|
||||
(ValueType) as well as the value itself (Value).
|
||||
Cr e ate a node
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 35
|
||||
============================================================
|
||||
|
||||
To create a new node in a parent node the method CreateSubNode() which is provided by
|
||||
the class GscRegNode needs to be called. The method expects the name of the new node.
|
||||
C#-Code: Create a node
|
||||
if (_GscRegistry != null)
|
||||
{
|
||||
GscRegNode RegNode = _GscRegistry.FindNode("/System/MediaChannels/0000");
|
||||
// create a new sub node in NodePath
|
||||
if (RegNode != null)
|
||||
RegNode.CreateSubNode("NewNode");
|
||||
}
|
||||
Add v al ue s to a node
|
||||
There are several methods in the class GscRegNode to add values to a node. Depending on
|
||||
the type of the value it is needed to call the right method for writing this type into the registry.
|
||||
For example if you would like to write an Int32 value into the registry you need to use the
|
||||
method WriteInt32().
|
||||
C#-Code: Add values to node
|
||||
public void AddValue(string NodePath, string ValueName, GscNodeType ValueType,
|
||||
object Value)
|
||||
{
|
||||
GscRegNode RegNode = _GscRegistry.FindNode(NodePath);
|
||||
if (RegNode != null)
|
||||
{
|
||||
switch (ValueType)
|
||||
{
|
||||
case GscNodeType.ntWideString:
|
||||
{
|
||||
RegNode.WriteWideString(ValueName, Value.ToString());
|
||||
break;
|
||||
}
|
||||
case GscNodeType.ntInt32:
|
||||
{
|
||||
RegNode.WriteInt32(ValueName, Convert.ToInt32(Value));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Sa v e the r e gi s tr y
|
||||
After the GscRegistry object was modified (e.g. new nodes/new values), the server also
|
||||
needs to know about the changes made. For this the GscRegistry class provides the
|
||||
method WriteNodes().
|
||||
C#-Code: Add values to node
|
||||
// define an array for the setup write request
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 36
|
||||
============================================================
|
||||
|
||||
GscRegistryWriteRequest[] WriteRequests = new GscRegistryWriteRequest[1];
|
||||
WriteRequests[0] = new GscRegistryWriteRequest("/", 0);
|
||||
GscRegistry.WriteNodes(WriteRequests, true);
|
||||
The WriteNodes() method expects an array containing objects of the type of GscRe-
|
||||
gistryWriteRequest. Each GscRegistryWriteRequest contains a path to a node that has to
|
||||
be saved.
|
||||
NOTICE
|
||||
It is recommended to only add one element to this array which contains the root path (“/”).
|
||||
This results in saving the entire registry structure.
|
||||
Structure of GSCRegistry
|
||||
The GEVISCOPE SDK offers two possibilities to browse the structure of the GscRegistry.
|
||||
By means of the application GscRegEdit that is delivered with the SDK, it is possible to
|
||||
browse or modify the registry similar to Microsoft’s Windows registry.
|
||||
In addition to GscRegEdit you can also use the registry editor which is integrated in
|
||||
GSCSetup. To activate this feature the key combination STRG+ALT+U needs to be actu-
|
||||
ated. The entry Registry editor in the section Utilities in the navigation bar on the left will
|
||||
now be shown.
|
||||
Examples
|
||||
To get a better idea of how to use the GscRegistry, the GEVISCOPE SDK provides further
|
||||
.NET example applications.
|
||||
The examples can be found in the folder „Examples“ folder in the GeViScopeSDK main
|
||||
folder:
|
||||
l C:\Program Files (x86)\GeViScopeSDK\Examples\VS2008NET\VS2008NET_
|
||||
GscRegEdit
|
||||
Simple registry editor, GUI application (Visual Studio 2008)
|
||||
l C:\Program Files (x86)\GeViScopeSDK\Examples\VS2008NET\VS2010NET_
|
||||
GscRegEdit
|
||||
Simple registry editor, GUI application (Visual Studio 2010)
|
||||
l C:\Program Files (x86)\GeViScopeSDK\Examples\VS2008NET\VS2008NET_
|
||||
GscRegistryBasics
|
||||
Console application (Visual Studio 2008)
|
||||
l C:\Program Files (x86)\GeViScopeSDK\Examples\VS2010NET\VS2010NET_
|
||||
GscRegistryBasics
|
||||
Console application (Visual Studio 2010)
|
||||
GSCView data filter plugins
|
||||
Introduction
|
||||
GSCView offers the possibility to integrate customized data filter dialogs. Data filter dialogs
|
||||
are used to search and filter video footage by additional event data. They can be customized
|
||||
to the different business environments in which GeViScope is used.
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 37
|
||||
============================================================
|
||||
|
||||
The following sections support you with some suggestions and hints about creating cus-
|
||||
tomized data filter plugins.
|
||||
General hints
|
||||
Custom data filters are hosted in flat windows 32Bit dynamic link libraries. Differing from nor-
|
||||
mal DLLs the data filter DLLs have the extension “.GPI”. All data filter DLLs existing in the
|
||||
same folder as GSCView are integrated in GSCView automatically.
|
||||
The customized data filter DLL interface
|
||||
Each DLL has to export the function GSCPluginRegisterSearchFilter() that is called by
|
||||
GSCView to use the customized dialogs. The exact definition of this function and some
|
||||
additional type definitions can be found in the unit “GSCGPIFilter.pas/.h”.
|
||||
Inside the function GSCPluginRegisterSearchFilter() one or even more data filter dialogs
|
||||
have to be registered by calling the function Callbacks.RegisterFilter().
|
||||
The following example (in pseudo code) shows how this is done:
|
||||
if(Callbacks.RegisterFilter == NULL)
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 38
|
||||
============================================================
|
||||
|
||||
return FALSE;
|
||||
TPluginFilterDefinition def;
|
||||
def = SimpleFilter.GetFilterDefinition();
|
||||
Callbacks.RegisterFilter(Callbacks.HostHandle, def);
|
||||
The structure TPluginFilterDefinition defines some informational data and all the callback
|
||||
functions needed for a single dialog. GSCView uses the definition to call the different call-
|
||||
back functions during its execution.
|
||||
Name of callback
|
||||
function
|
||||
Function
|
||||
InitFilter()
|
||||
Can be used to initialize the data filter dialog. To integrate the dialog in
|
||||
GSCView, the function has to return true.
|
||||
ShowFilter()
|
||||
Inside this function the dialog should be displayed as a stand-alone
|
||||
(modal) dialog. GSCView calls the function after the user activates the
|
||||
button.
|
||||
DeinitFilter()
|
||||
Can be used to deinitialize the data filter dialog. The function has to return
|
||||
true, even if it is not used.
|
||||
GetFilterGuid()
|
||||
The function should provide a global unique identifier (GUID) that is used
|
||||
inside GSCView to identify the dialog. The GUID can be defined as a static
|
||||
constant value.
|
||||
As an alternative to the modal display of the data filter dialog, the dialog can be displayed
|
||||
nested in the GSCView main window or GSCView event list. But at the moment this feature
|
||||
is only supported by custom filter dialogs created with Borland Delphi ©.
|
||||
To achieve the nested display, the additional callback functions of the structure TPlu-
|
||||
ginFilterDefinition have to be implemented. The Borland Delphi © example
|
||||
“GSCViewDataFilter” demonstrates the details.
|
||||
Creating the filter criteria
|
||||
If the custom data filter is applied, GSCView does a query against the tables “events” and
|
||||
“eventdata” of the internal GeViScope database. For this query a filter criteria is needed. The
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 39
|
||||
============================================================
|
||||
|
||||
custom data filter delivers the criteria and gives it back to GSCView in the ShowFilter() call-
|
||||
back function.
|
||||
To build up meaningful filter criteria some background knowledge of the GeViScope data-
|
||||
base is needed.
|
||||
The table “events” contains all the events recorded in the database (only event information,
|
||||
not the samples; the samples are linked to the events).
|
||||
The table “eventdata” contains additional data belonging to the events. Inside the table the
|
||||
different parameters of actions are saved. If for example an event is started by the Cus-
|
||||
tomAction(4711, “Hello world”), the value 4711 is saved in the row “Int64_A” and the value
|
||||
“Hello world” is saved in the row “String_A”. Because the event is started by a Cus-
|
||||
tomAction, the value 8 is saved in the row “EventDataKind”. Each action has an individual
|
||||
mapping of action parameters to rows in the table “eventdata”.
|
||||
For different business environments special actions can be created by GEUTEBRÜCK.
|
||||
There already exist some special actions like:
|
||||
Action name
|
||||
Business environment
|
||||
ATMTransaction()
|
||||
Automated teller machines
|
||||
ACSAccessGranted()
|
||||
Access control systems
|
||||
SafebagOpen()
|
||||
Cash management systems
|
||||
POSData()
|
||||
Point of sale systems
|
||||
The action internally defines the mapping of action parameters to rows in the table “event-
|
||||
data”. The code of an action (for a CustomAction the code is 8) is stored in the row
|
||||
“EventDataKind”. The codes of actions are listed in the action reference documentation
|
||||
“GSCActionsReference_EN.pdf”.
|
||||
To evaluate the mapping of action parameters to database rows, GSCSetup can be used.
|
||||
By pressing STRG+ALT+U in GSCSetup the special utility “DBI test” gets available.
|
||||
With “DBI test” the structure and content of the GeViScope database can be analyzed. The
|
||||
following SQL queries can be helpful:
|
||||
SQL query
|
||||
Function
|
||||
select * from events
|
||||
Fetches records from the table “events”
|
||||
select * from eventdata
|
||||
Fetches records from the table “eventdata”
|
||||
select * from samples
|
||||
Fetches records from the table “samples”
|
||||
The following table should demonstrate how to build up filter criteria depending on para-
|
||||
meters given in the custom data filter dialog (here the CustomAction() is used to start the
|
||||
events):
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 40
|
||||
============================================================
|
||||
|
||||
Action
|
||||
para-
|
||||
meter
|
||||
INT
|
||||
Action
|
||||
para-
|
||||
meter
|
||||
STRING
|
||||
Fil-
|
||||
terCriteria.SQLstatement
|
||||
SQL query
|
||||
Nothing
|
||||
Nothing
|
||||
EventData.EventDataKind = 8 select * from EventData left join Events on
|
||||
EventData.EventID = Events.EventID with
|
||||
EventData.EventDataKind = 8
|
||||
Nothing
|
||||
Hello
|
||||
world
|
||||
EventData.EventString_A =
|
||||
"Hello world" and
|
||||
EventData.EventDataKind = 8
|
||||
select * from EventData left join Events on
|
||||
EventData.EventID = Events.EventID with
|
||||
EventData.EventString_A = "Hello world"
|
||||
and EventData.EventDataKind = 8
|
||||
4711
|
||||
Nothing
|
||||
EventData.EventInt64_A =
|
||||
4711 and
|
||||
EventData.EventDataKind = 8
|
||||
select * from EventData left join Events on
|
||||
EventData.EventID = Events.EventID with
|
||||
EventData.EventInt64_A = 4711 and
|
||||
EventData.EventDataKind = 8
|
||||
4711
|
||||
Hello
|
||||
world
|
||||
EventData.EventInt64_A =
|
||||
4711 and
|
||||
EventData.EventString_A =
|
||||
"Hello world" and
|
||||
EventData.EventDataKind = 8
|
||||
select * from EventData left join Events on
|
||||
EventData.EventID = Events.EventID with
|
||||
EventData.EventInt64_A = 4711 and
|
||||
EventData.EventString_A = "Hello world"
|
||||
and EventData.EventDataKind = 8
|
||||
Nothing
|
||||
Hello*
|
||||
EventData.EventString_A =
|
||||
"Hello*" and
|
||||
EventData.EventDataKind = 8
|
||||
select * from EventData left join Events on
|
||||
EventData.EventID = Events.EventID with
|
||||
EventData.EventDataKind = 8 where
|
||||
EventData.EventString_A LIKE "Hello*"
|
||||
During testing the custom data filter dialog in the GSCView event list a double click on the
|
||||
status bar of the event list delivers the SQL query that is executed in the GeViScope server.
|
||||
Examples overview
|
||||
The examples overview is organized in two different views on all examples including the
|
||||
GeViScopeSDK:
|
||||
Examples grouped by programming tasks
|
||||
Examples grouped by development platforms
|
||||
1380
GeViScope_SDK_Docs/GeViScope_SDK_Part03_Pages_41-60.txt
Normal file
1380
GeViScope_SDK_Docs/GeViScope_SDK_Part03_Pages_41-60.txt
Normal file
File diff suppressed because it is too large
Load Diff
1549
GeViScope_SDK_Docs/GeViScope_SDK_Part04_Pages_61-80.txt
Normal file
1549
GeViScope_SDK_Docs/GeViScope_SDK_Part04_Pages_61-80.txt
Normal file
File diff suppressed because it is too large
Load Diff
1611
GeViScope_SDK_Docs/GeViScope_SDK_Part05_Pages_81-100.txt
Normal file
1611
GeViScope_SDK_Docs/GeViScope_SDK_Part05_Pages_81-100.txt
Normal file
File diff suppressed because it is too large
Load Diff
1443
GeViScope_SDK_Docs/GeViScope_SDK_Part06_Pages_101-120.txt
Normal file
1443
GeViScope_SDK_Docs/GeViScope_SDK_Part06_Pages_101-120.txt
Normal file
File diff suppressed because it is too large
Load Diff
467
GeViScope_SDK_Docs/GeViScope_SDK_Part07_Pages_121-127.txt
Normal file
467
GeViScope_SDK_Docs/GeViScope_SDK_Part07_Pages_121-127.txt
Normal file
@@ -0,0 +1,467 @@
|
||||
================================================================================
|
||||
GeViScope SDK Documentation - Pages 121 to 127
|
||||
================================================================================
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 121
|
||||
============================================================
|
||||
|
||||
Parameter
|
||||
Function
|
||||
client account
|
||||
ClientAccount
|
||||
Windows user account
|
||||
under that GSCView is run-
|
||||
ning
|
||||
VC scene changed
|
||||
Action name:VCSceneChanged(Viewer, Scene)
|
||||
Action category: notification
|
||||
The active scene of the GSCView with the transmitted viewer client number has been
|
||||
changed.
|
||||
GSCView has fired this notification because its active scene has been changed via a
|
||||
VCChangeSceneByName or ViewerChangeScene action while GSCView is remote con-
|
||||
trolled or because the user has manually changed the active scene in GSCView.
|
||||
Parameter
|
||||
Function
|
||||
viewer
|
||||
Viewer
|
||||
Global viewer client number, identifies the GSCView that fired
|
||||
this notification
|
||||
scene
|
||||
Scene
|
||||
The name of the scene that is displayed after the change
|
||||
Viewer cleared
|
||||
Action name:ViewerCleared(Viewer, ClientHost, ClientType, ClientAccount)
|
||||
Action category: notification
|
||||
The viewer with the transmitted global number on some GSCView in the network has been
|
||||
cleared.
|
||||
GSCView has fired this notification because one of its viewers has been cleared via a View-
|
||||
erClear action while GSCView is remote controlled or because the user has manually
|
||||
cleared the viewer in GSCView.
|
||||
Parameter
|
||||
Function
|
||||
viewer
|
||||
Viewer
|
||||
Global number of a viewer on some GSCView in the network
|
||||
client host
|
||||
ClientHost
|
||||
Host name of the PC where GSCView is running
|
||||
client type
|
||||
ClientType
|
||||
1 = GSCView
|
||||
All other values are for future use!
|
||||
client account
|
||||
ClientAccount
|
||||
Windows user account under that GSCView is running
|
||||
Viewer connected
|
||||
Action name:ViewerConnected(Viewer, Channel, PlayMode, ClientHost, ClientType, Cli-
|
||||
entAccount)
|
||||
Action category: notification
|
||||
The viewer with the transmitted global number on some GSCView in the network has been
|
||||
connected.
|
||||
GSCView has fired this notification because one of its viewers has been connected via a
|
||||
ViewerConnect or ViewerConnectLive action while GSCView is remote controlled or
|
||||
because the user has manually connected the viewer in GSCView.
|
||||
The parameter "play mode" defines in which mode the pictures are presented (live, forward,
|
||||
backward, .).
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 122
|
||||
============================================================
|
||||
|
||||
Parameter
|
||||
Function
|
||||
viewer
|
||||
Viewer
|
||||
Global number of a
|
||||
viewer on some
|
||||
GSCView in the network
|
||||
channel
|
||||
Channel
|
||||
Global number of the
|
||||
media channel
|
||||
play mode
|
||||
PlayMode
|
||||
play stop = if the viewer
|
||||
is already displaying pic-
|
||||
tures from that channel,
|
||||
it is stopped; if not the
|
||||
newest picture in the
|
||||
database is displayed
|
||||
play forward = if the
|
||||
viewer is already dis-
|
||||
playing pictures from
|
||||
that channel, it is dis-
|
||||
playing pictures in nor-
|
||||
mal speed forward from
|
||||
the actual position; if
|
||||
not display of pictures
|
||||
with normal speed
|
||||
starts at the beginning
|
||||
of the database
|
||||
play backward = if the
|
||||
viewer is already dis-
|
||||
playing pictures from
|
||||
that channel, it is dis-
|
||||
playing pictures in nor-
|
||||
mal speed backward
|
||||
from the actual position;
|
||||
if not display of pictures
|
||||
with normal speed
|
||||
starts at the end of the
|
||||
database
|
||||
fast forward = like "play
|
||||
forward" but with high
|
||||
speed
|
||||
fast backward = like
|
||||
"play backward" but
|
||||
with high speed
|
||||
step forward = like
|
||||
"play forward" but only
|
||||
one picture
|
||||
step backward = like
|
||||
"play backward" but
|
||||
only one picture
|
||||
play BOD = display the
|
||||
first (the oldest) picture
|
||||
in the database
|
||||
play EOD = display the
|
||||
last (the newest) pic-
|
||||
ture in the database
|
||||
live = display live pic-
|
||||
tures
|
||||
next event = like "play
|
||||
forward" but only pic-
|
||||
tures that belong to
|
||||
event recordings
|
||||
prev event = like "play
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 123
|
||||
============================================================
|
||||
|
||||
Parameter
|
||||
Function
|
||||
backward" but only pic-
|
||||
tures that belong to
|
||||
event recordings
|
||||
peek live picture = dis-
|
||||
play only one actual live
|
||||
picture
|
||||
next detected motion =
|
||||
like "play forward" but
|
||||
only pictures with
|
||||
motion in it (if no MOS
|
||||
search area is defined in
|
||||
GscView the whole pic-
|
||||
ture size is used for it)
|
||||
are displayed; the dis-
|
||||
play stops after motion
|
||||
is detected
|
||||
prev detected motion =
|
||||
like "play backward" but
|
||||
only pictures with
|
||||
motion in it (if no MOS
|
||||
search area is defined in
|
||||
GscView the whole pic-
|
||||
ture size is used for it)
|
||||
are displayed; the dis-
|
||||
play stops after motion
|
||||
is detected
|
||||
client host
|
||||
ClientHost
|
||||
Host name of the PC
|
||||
where GSCView is run-
|
||||
ning
|
||||
client type
|
||||
ClientType
|
||||
1 = GSCView
|
||||
All other values are for
|
||||
future use!
|
||||
client account
|
||||
ClientAccount
|
||||
Windows user account
|
||||
under that GSCView is
|
||||
running
|
||||
Viewer play mode changed
|
||||
Action name:ViewerPlayModeChanged(Viewer, Channel, PlayMode, ChannelTime, Cli-
|
||||
entHost, ClientType, ClientAccount)
|
||||
Action category: notification
|
||||
The playmode of the viewer with the transmitted global number on some GSCView in the
|
||||
network has been changed.
|
||||
GSCView has fired this notification because the playmode of one of its viewers has been
|
||||
changed via a ViewerConnect, ViewerConnectLive, ViewerSetPlayMode, View-
|
||||
erPlayFromTime, ViewerJumpByTime or one of the ViewerShowAlarmBy. actions while
|
||||
GSCView is remote controlled or because the user has manually changed the playmode of
|
||||
the viewer in GSCView.
|
||||
Parameter
|
||||
Function
|
||||
viewer
|
||||
Viewer
|
||||
Global number of a
|
||||
viewer on some
|
||||
GSCView in the network
|
||||
channel
|
||||
Channel
|
||||
Global number of the
|
||||
media channel, dis-
|
||||
played in the viewer
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 124
|
||||
============================================================
|
||||
|
||||
Parameter
|
||||
Function
|
||||
play mode
|
||||
PlayMode
|
||||
play stop = if the viewer
|
||||
is already displaying pic-
|
||||
tures from that channel,
|
||||
it is stopped; if not the
|
||||
newest picture in the
|
||||
database is displayed
|
||||
play forward = if the
|
||||
viewer is already dis-
|
||||
playing pictures from
|
||||
that channel, it is dis-
|
||||
playing pictures in nor-
|
||||
mal speed forward from
|
||||
the actual position; if
|
||||
not display of pictures
|
||||
with normal speed
|
||||
starts at the beginning
|
||||
of the database
|
||||
play backward = if the
|
||||
viewer is already dis-
|
||||
playing pictures from
|
||||
that channel, it is dis-
|
||||
playing pictures in nor-
|
||||
mal speed backward
|
||||
from the actual position;
|
||||
if not display of pictures
|
||||
with normal speed
|
||||
starts at the end of the
|
||||
database
|
||||
fast forward = like "play
|
||||
forward" but with high
|
||||
speed
|
||||
fast backward = like
|
||||
"play backward" but
|
||||
with high speed
|
||||
step forward = like
|
||||
"play forward" but only
|
||||
one picture
|
||||
step backward = like
|
||||
"play backward" but
|
||||
only one picture
|
||||
play BOD = display the
|
||||
first (the oldest) picture
|
||||
in the database
|
||||
play EOD = display the
|
||||
last (the newest) pic-
|
||||
ture in the database
|
||||
live = display live pic-
|
||||
tures
|
||||
next event = like "play
|
||||
forward" but only pic-
|
||||
tures that belong to
|
||||
event recordings
|
||||
prev event = like "play
|
||||
backward" but only pic-
|
||||
tures that belong to
|
||||
event recordings
|
||||
peek live picture = dis-
|
||||
play only one actual live
|
||||
picture
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 125
|
||||
============================================================
|
||||
|
||||
Parameter
|
||||
Function
|
||||
next detected motion =
|
||||
like "play forward" but
|
||||
only pictures with
|
||||
motion in it (if no MOS
|
||||
search area is defined in
|
||||
GscView the whole pic-
|
||||
ture size is used for it)
|
||||
are displayed; the dis-
|
||||
play stops after motion
|
||||
is detected
|
||||
prev detected motion =
|
||||
like "play backward" but
|
||||
only pictures with
|
||||
motion in it (if no MOS
|
||||
search area is defined in
|
||||
GscView the whole pic-
|
||||
ture size is used for it)
|
||||
are displayed; the dis-
|
||||
play stops after motion
|
||||
is detected
|
||||
channel time
|
||||
ChannelTime
|
||||
Timestamp belonging to
|
||||
the picture presented in
|
||||
the viewer directly after
|
||||
the plamode had
|
||||
changed. The para-
|
||||
meter is transmitted in
|
||||
the following format:
|
||||
"2009/05/06
|
||||
14:47:48,359
|
||||
GMT+02:00"
|
||||
client host
|
||||
ClientHost
|
||||
Host name of the PC
|
||||
where GSCView is run-
|
||||
ning
|
||||
client type
|
||||
ClientType
|
||||
1 = GSCView
|
||||
All other values are for
|
||||
future use!
|
||||
client account
|
||||
ClientAccount
|
||||
Windows user account
|
||||
under that GSCView is
|
||||
running
|
||||
Viewer selection changed
|
||||
Action name:ViewerSelectionChanged(Viewer, Channel, PlayMode, ClientHost, Cli-
|
||||
entType, ClientAccount)
|
||||
Action category: notification
|
||||
The active viewer on some GSCView in the network has been changed.
|
||||
GSCView has fired this notification because the user has selected one of its viewers by
|
||||
mouse click or by dragging a camera onto one of its viewers.
|
||||
GSCView only fires the notification, if a camera is displayed on the selected viewer.
|
||||
Parameter
|
||||
Function
|
||||
viewer
|
||||
Viewer
|
||||
Global number of a
|
||||
viewer on some
|
||||
GSCView in the network
|
||||
channel
|
||||
Channel
|
||||
Global number of the
|
||||
media channel, dis-
|
||||
played in the viewer
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 126
|
||||
============================================================
|
||||
|
||||
Parameter
|
||||
Function
|
||||
play mode
|
||||
PlayMode
|
||||
play stop = if the viewer
|
||||
is already displaying pic-
|
||||
tures from that channel,
|
||||
it is stopped; if not the
|
||||
newest picture in the
|
||||
database is displayed
|
||||
play forward = if the
|
||||
viewer is already dis-
|
||||
playing pictures from
|
||||
that channel, it is dis-
|
||||
playing pictures in nor-
|
||||
mal speed forward from
|
||||
the actual position; if
|
||||
not display of pictures
|
||||
with normal speed
|
||||
starts at the beginning
|
||||
of the database
|
||||
play backward = if the
|
||||
viewer is already dis-
|
||||
playing pictures from
|
||||
that channel, it is dis-
|
||||
playing pictures in nor-
|
||||
mal speed backward
|
||||
from the actual position;
|
||||
if not display of pictures
|
||||
with normal speed
|
||||
starts at the end of the
|
||||
database
|
||||
fast forward = like "play
|
||||
forward" but with high
|
||||
speed
|
||||
fast backward = like
|
||||
"play backward" but
|
||||
with high speed
|
||||
step forward = like
|
||||
"play forward" but only
|
||||
one picture
|
||||
step backward = like
|
||||
"play backward" but
|
||||
only one picture
|
||||
play BOD = display the
|
||||
first (the oldest) picture
|
||||
in the database
|
||||
play EOD = display the
|
||||
last (the newest) pic-
|
||||
ture in the database
|
||||
live = display live pic-
|
||||
tures
|
||||
next event = like "play
|
||||
forward" but only pic-
|
||||
tures that belong to
|
||||
event recordings
|
||||
prev event = like "play
|
||||
backward" but only pic-
|
||||
tures that belong to
|
||||
event recordings
|
||||
peek live picture = dis-
|
||||
play only one actual live
|
||||
picture
|
||||
|
||||
|
||||
============================================================
|
||||
PAGE 127
|
||||
============================================================
|
||||
|
||||
Parameter
|
||||
Function
|
||||
next detected motion =
|
||||
like "play forward" but
|
||||
only pictures with
|
||||
motion in it (if no MOS
|
||||
search area is defined in
|
||||
GscView the whole pic-
|
||||
ture size is used for it)
|
||||
are displayed; the dis-
|
||||
play stops after motion
|
||||
is detected
|
||||
prev detected motion =
|
||||
like "play backward" but
|
||||
only pictures with
|
||||
motion in it (if no MOS
|
||||
search area is defined in
|
||||
GscView the whole pic-
|
||||
ture size is used for it)
|
||||
are displayed; the dis-
|
||||
play stops after motion
|
||||
is detected
|
||||
client host
|
||||
ClientHost
|
||||
Host name of the PC
|
||||
where GSCView is run-
|
||||
ning
|
||||
client type
|
||||
ClientType
|
||||
1 = GSCView
|
||||
All other values are for
|
||||
future use!
|
||||
client account
|
||||
ClientAccount
|
||||
Windows user account
|
||||
under that GSCView is
|
||||
running
|
||||
5509
GeViScope_SDK_Docs/GscActionsOverview_EN.txt
Normal file
5509
GeViScope_SDK_Docs/GscActionsOverview_EN.txt
Normal file
File diff suppressed because it is too large
Load Diff
24875
GeViScope_SDK_Docs/GscActionsReference_EN.txt
Normal file
24875
GeViScope_SDK_Docs/GscActionsReference_EN.txt
Normal file
File diff suppressed because it is too large
Load Diff
85
GeViScope_SDK_Docs/TACI_Telnet_Action_Interface.txt
Normal file
85
GeViScope_SDK_Docs/TACI_Telnet_Action_Interface.txt
Normal file
@@ -0,0 +1,85 @@
|
||||
Plugin: TACI - Telnet Action Command
|
||||
Interface
|
||||
Konzept | Concept | Projet | Concepto
|
||||
|
||||
GeViScope provides an internal optional to send and receive actions system-wide. The normal method
|
||||
of externally sending and receiving actions is provided by the GeViScope SDK. However, in a number
|
||||
of situations it is not possible to use the Win32-based SDK. TACI (Telnet Action Command Interface)
|
||||
thus provides an option for sending and receiving actions in ASCII format. TACI converts these ASCII
|
||||
actions into normal GeViScope actions, or conversely converts GeViScope actions into ASCII format
|
||||
for transmission over a Telnet port.
|
||||
|
||||
G u t z u w i s s e n | G o o d t o k n o w | B o n à s a v o i r | C o n v i e n e s a b e r
|
||||
Your software must be capable of sending and receiving text in ASCII format.
|
||||
|
||||
Use the description of the actions in the SDK to become familiar with the actions and their parameters.
|
||||
The GSCPLC Simulator helps you to find the GeViScope directory.
|
||||
|
||||
|
||||
Prozedur | Procedur | Procédure | Procedimiento
|
||||
|
||||
How to configure TACI
|
||||
Ensure that the file GscTelnetActionCommandInterface.dll has been copied to the directory
|
||||
GeViScope/Mediaplugins. Copy the file to this location if it is not already there.
|
||||
|
||||
In GSCSetup, open the Hardware Selection menu.
|
||||
|
||||
Click with the right mouse button in the list view and select Add in the popup menu.
|
||||
|
||||
|
||||
|
||||
Select the plugin GscTelnetActionCommandPlugin (in our example, Plugin 004) by marking it and
|
||||
clicking on Add.
|
||||
|
||||
The TACI plugin is now entered as a hardware resource in the hardware module list. If you click on it,
|
||||
you can set the required parameters.
|
||||
|
||||
The following describes the parameters:
|
||||
|
||||
ADVICE
|
||||
UDP is not currently implemented.
|
||||
|
||||
ActionFilterIn/ ActionFilterOut
|
||||
Regular Expression to filter incoming or outgoing
|
||||
messages. * means pass all.
|
||||
CommandTerminationChars
|
||||
Chars defining the end of a command
|
||||
FormatASCIIReply
|
||||
Format string of the reply from TACI {0}: Return value
|
||||
3: Error(No action 4: OK) {1}: Position of echo {2}:
|
||||
Send termination signal at the end (CR/ LF)
|
||||
FormatBinaryReply
|
||||
Obsolete
|
||||
FormatReceivedActions
|
||||
{0} Position of Action in the received string
|
||||
MaxTCPVonnections
|
||||
Maximum number of allowed TACI connections for one
|
||||
server
|
||||
SendAllActions
|
||||
Forward all actions from GeviScope to Telnet
|
||||
TCPBinaryIntelByteOrder
|
||||
Obsolete
|
||||
TCPBinaryRepyDownwardsCompatible Obsolete
|
||||
|
||||
|
||||
TCPEnabled
|
||||
Obsolete
|
||||
TCPPort
|
||||
Number of TCP Port for the telnet connection
|
||||
Number of TCP Port for the telnet
|
||||
connection
|
||||
If set tot true you will receive an echo of your
|
||||
command
|
||||
|
||||
Hello World!
|
||||
After you have configured TACI as described above, simply open a Telnet connection using the
|
||||
Windows Telnet program. To do this, open the CMD, tip in telnet and press enter.
|
||||
Then type o [hostname] 12007 .
|
||||
|
||||
You can now send a simple user action, for instance CustomAction (1,"HelloWorld"). In the
|
||||
PLCSimulator, you see the actions that you have sent and you can send actions from the
|
||||
PLCSimulator to the Telnet clients.
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user