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:
Administrator
2026-01-19 08:14:17 +01:00
parent c9e83e4277
commit a92b909539
76 changed files with 62101 additions and 176 deletions

View File

@@ -0,0 +1,144 @@
================================================================================
PAGE 1
================================================================================
GeViSoft SDK
Dokumentation |Documentation |Documentation |Documentatión
Version 2012_1.7|Date19.07.2012
================================================================================
PAGE 2
================================================================================
GeViSoft SDK
Introduction
TheGeViSoftSDKallowsintegrating yourcustomsolutionsandproductswithGeutebrücks
GeViSoftsuite.Itincludesanapplication programming interface(API)withallnecessary
DLLs,headers,exampleprojects,anddocumentation tohelpyougettingstartedwithyour
integration easily.
TheSDKsupportsC++andDelphi.Furthermore a.Netwrapperisincludedwhichallowsyou
tousetheSDKfromC#.Itprovidesvariousexampleprojectsandsolutionsintheselan-
guages.
================================================================================
PAGE 3
================================================================================
GeViSoft
GeViSoftisGeutebrücks centralmanagement systemforvideocontrol.Itsmainfunctionis
theswitchingofvideosignalsbetweendifferentcameras,monitorsandDVRsbycontrolling
avideomatrixsystem.Alarmhandlingaswellastheremotecontrolofpan/tiltanddomecam-
erasisafurtherfunctionality ofGeViSoft.
GeViSoftcanalsobeusedtohandlegeneralpurposedigitalinputsandoutputsandthus
allowsintegrating customsensortechnology andactuatingelementstotheGeutebrück sys-
tem.
Furthermore, differentperipherals commontovideocontrolsystems,likevideomotionanal-
ysisoroperatorconsoles, canbemanaged.
GeViSoft Architecture
Thearchitecture ofGeViSoftfollowstheclient-serverparadigm. Theserversoftware(GeV-
iServer)usualrunsonadedicated PC.ThishardwareplatformiscalledGeViStation. The
combined systemofsoftwareandhardwareiscalledGeViControl.
AtleastoneIOclientmusthandleconnections totheperipherals. Thisclientiscom-
municating withtheGeViSoftserverandrunsonthesamemachine.ItiscalledGeViIO.
TheGeViIOclientprovidestheinterfaces forthecommunication totheattachedperipherals
likeaVX3matrixoraPTZ.Theseperipherals canalsobevirtualized.
GeViServer andGeViIOcanbeconfigured fromtheGeViSetapplication. Theconfiguration is
described indetailinchapterConfiguration ofGeViSoft.
ThefollowingfigureshowsasetupofGeViSoftwithanattachedVX3,digitalIOandtwoPTZ
devices.
================================================================================
PAGE 4
================================================================================
================================================================================
PAGE 5
================================================================================
Figure1-GeViSoft Example Configuration
Historically, therehasbeenademandtocontrolalargenumberofvideofeedswithalimited
numberofmonitorsinsurveillance systems.Thishasleadtotheinventionofvideomatrixes
liketheVX3,whichalloweddifferentcamerasignalstobedynamically routedtotheattached
monitors.Theroutingcouldbeuserinitiatedortriggeredbyexternaleventslikealarmsordig-
italinputs.
Besidesthevideoroutingitwasnecessary toallowtheoperatortoremotecontrolPTZand
domecamerasfromacentralconsoletoreactonalarmsorotherevents.
Aconfiguration liketheonedescribed aboveisreflectedinthesetupaccording tofigure1.
Nowadays analoguevideocamerasandmonitorsaregettingreplacedbyIPcamerasand
PCsrunningsoftwareviewerslikeGSCView. GeViSoftallowsthehandlingofthesemodern
setupsaswellsothattheycanbeintegrated seamlessly intoexistinginstallations.
Figure2givesanexampleforacomplexsetupintegrating analogueaswellasdigitalcom-
ponents.
================================================================================
PAGE 6
================================================================================
Figure2-Complex GeViSoft Setup
================================================================================
PAGE 7
================================================================================
Additional tocontrolling thecrossswitchinginsidethematrix,GeViSoftcanbeusedtocom-
municatewithGeViScopes. ItispossibletoconfigureGeViSoftinsuchawaythataGeV-
iScopeandtheconnected GscViews canbecontrolled justlikeananaloguevideomatrix,
e.g.aVX3.
Thenextchaptergivesanoverviewofthedifferentcomponents thatadduptoGeViSoft.
GeViServer
GeViServer isthebackendserverinaGeViSoftsystem.Italsomanagestheinternaldata-
base.GeViServer usuallyrunsasaWindowsserviceonproduction machines, butcanalso
bestartedasaconsoleapplication fortestingpurposesordebugging. IfinstalledbytheSDK
setup,theGeViServer mustbestartedfromtheconsole.
ItispossibletorunGeViServer inaclustertoincreasereliability.
GeViAdmin
Theapplication GeViAdmin isusedtosetuptheGeViServer database. Itcanalsobeusedto
configureredundancy settingsbyclustering severalGeViServers. Furthermore, GeViScope
canbeusedfordiagnostics andloadanalysis.GeViAdmin ispartoftheshippingproduct,but
notoftheSDK.TheSDKinstallerautomatically setsupaGeViSoftdatabaseduringthe
installation process.
GeViIO
TheGeViIOclientisresponsible forthecommunication withtheexternalinterfaces and
peripherals. ItrunsonthesamemachineastheGeViServer. Otherinstances ofGeViIO
mightrunonseparatemachines.
================================================================================
PAGE 8
================================================================================
GeViSet
GeViSetistheconfiguration toolforGeViServer. ItcanbeusedtoconfigureGeViIOclients,
users,events,alarmsandallotherfunctionalities ofGeViServer, aswellasconnections to
GeViScope servers.Someconfiguration stepsandoptionsinsideGeViSetareshowninthe
followingchapters.
GeViAPI TestClient
TheGeViAPITestClientallowstestinganddebugging GeViSoftapplications. Withthistool
youcansendandreceiveactionsandalarms,querythedatabase, andretrievesysteminfor-
mation.
================================================================================
PAGE 9
================================================================================
SDKIntroduction
TheGeViSoftSDKprovidesyouwithanopenapplication programming interfacetotheGeV-
iSoftsuiteandallowsyoutointegrateyourcustomproductswithGeutebrücks.
TheSDKincludestheDLLsandcorresponding headerfilesrequiredbyyourC++orDelphi
projects.Furthermore .NetwrapperDllsareincludedwhichallowyoutousetheSDKfrom
yourC#application.
Severalexampleapplications helpyougettingstartedwiththeGeViSoftSDKdevelopment
andmayactasafoundation foryourownsolutions.
FilesandDirectory Structure
Duringinstallation, theenvironment variable%GEVISOFTSDKPATH% isset.Itpointstothe
rootdirectoryoftheSDKinstallation. Thevariablesvalueisdetermined bythepathchosen
astheinstalldirectoryduringsetup.Usually,thisis“C:\GEVISOFT”. AllSDKdirectories are
locatedinsidethisrootdirectory.
Thisisa(partial)treeviewofthestandardinstallation:
================================================================================
PAGE 10
================================================================================

View File

@@ -0,0 +1,203 @@
================================================================================
PAGE 11
================================================================================
PleasenotethatthedirectoryC:/GEVISOFT/DATABASE willbecreatedwithoutregarding
thechoseninstallpath.ThisdirectoryhoststheGeViSoftdatabaseGeViDB.mdb whichis
hiddenbydefault.
Insidethe%GEVISOFTSDKPATH% directory,astructurelikethisiscreated:
lADocumentation foldercontaining allGeViSoftrelateddocumentation andmanuals.
lAnExamples folderincludingsubfolders thatarenamedaccording tothecor-
responding IDEandprogramming language.
-Insideeachofthese,thereisaGeViScopeSDK andGeViSoftSDK folderwiththe
respective IncludeandLibfoldersfortheprogramming languageaswellasthefolders
withthedifferentexamples.
-TheC++headersarelocatedinsidetheIncludefolderandthelibrariesinsidetheLib
folder.
-ForDelphi,the.pasandthe.incfilescanallbefoundinsidetheIncludefolder.
The%GEVISOFTSDKPATH% directoryitselfhostsalltheexecutables, dynamiclinklibraries,and
runtimefilesthatareneededbyGeViSoft. Bydefault,alltheexampleprojectswilloutputtheir
generated binariesintothisfolderaswell.Thisguarantees thatallruntimedependencies are
metandyourcompiledexecutables findtheneededDLLs.
Additionally, the.Netwrapperassemblies Geutebrueck.GeViSoftSDKNetWrapper.dll and
GscActionsNET.dll resideinthisfolder.
================================================================================
PAGE 12
================================================================================
SDKSetup
SetupofTest/Build Environment
Thischapterdescribes howtosetupandconfiguretheGeViSofttestenvironment.
 NOTICE
Pleasenotethatyouneedadministrative privileges onthedevelopment machine.
Installation ofGeViSoft
TheSDKisshippedasanexecutable installer.Youjustneedtorunitonyourdevelopment
machinein
ordertoinstalltheSDK.
 NOTICE
Itishighlyrecommended toinstallGeViSoft tothedefaultpathC:/Gevisoft.
 WARNING
PleasemakesurethatyoudonotinstalltheSDKonaproduction GeViSoft machine asthesetup
willoverwrite theinstalled GeViSoft fileswithout notice.
Starting GeViServer
YoucanstartGeViServer fromthecommand promptbyissuingthecommand
%GEVISOFTSDKPATH%/geviserver.exe console
orbyexecuting thestartserver.bat scriptinyourGeViSoftinstallations rootfolder.The
consoleargumentforcesthesoftwaretorunasaconsoleapplication andallowsyouto
================================================================================
PAGE 13
================================================================================
easilymonitortheserversoutput.Onaproduction machine,GeViServer usuallyrunsasa
windowsservice.
 NOTICE
Pleasenotethatwithout alicensedongle, theserverwillterminate aftertwohours.Youcan
directly restartitwithout anyfurther restrictions.
Configuration ofGeViSoft
Inthischapteryouwilllearnhowtoestablishaconnection totheGeViServer withthesetup
clientGeViSet(Settinguptheserverconnection ).
Afterthatthereisadescription forsettingupaGeViIOclientthatprovidesavirtualvideo
matrixanddigitalIO(Configuration oftheGeViIOClient).Youdonotneedtocarryoutthe
stepsdescribed inthatparagraph. Theyareforreferenceonlybecausethisconfiguration is
alreadydoneforyouinthedatabasethatisdeliveredwiththeSDK.
Settinguptheserverconnection
1StartGeViServer byexecuting startserver.bat ifnotalready doneso
2StartGeViSet.exe
3Setuptheserverconnection
aOpenFile->GeViSoft serverconnections
bIfaconnection localhost exists,pressConnect andmovetostep4
cIfnoconnection existschooseConnections ->NewConnection
dEnterlocalhost asthenameofthenewconnection andpresstheForward button
eIntheCreateNewServerConnection window setthecomputer nametolocalhost ,
theusernametosysadmin .CheckSavepassword andsetthepassword tomas-
terkey.SelectLocalconnection asconnection type.PresstheForward button.
Choose thelocalhost connection andpressConnect
================================================================================
PAGE 14
================================================================================
Configuration oftheGeViIOClient(reference)
TheGeViIOclientsconfiguration isalreadydoneforyouinsidethedatabasethatisshipped
withtheSDK.Thestepsdescribed hereareonlyareferenceforyouifyouneedtoadaptset-
tingsforyourtestenvironment.
1.IntheClientsfieldpushtheAddbuttonandaddanewGeViIOclientwiththename
GeViIO_ 01.
2.SelectthenewGeViIOclientandpressConfigure.
3.MarktheclientasActiveandVirtual.
4.AddanewVX3matrixbypressing AddintheInterfaces fieldandselectingtheappro-
priatetype(VX3/CX3).Nametheinterface VirtualVX3.
5.SelectthenewlycreatedVX3interfaceandpressEdit.
6.Add16newvideoinputstotheVX3interfacebypressingtheAddbuttonintheVideo
inputstab.IntheNewvideoInputwindowsetCountto16andpressok.Thenew
videoinputchannelsshouldshowupintheVideoinputtab.
7.Add4newvideooutputsinthesamemannerastheinputs.
8.Add8newinputcontactsand8newoutputcontactsinthesamewayyoudidforthe
videoinput.
9.Sendyournewlycreatedsetuptotheserverbychoosing File->Setuptoserverorby
clicking
.
Nowyourclientwindowshouldlooklikethis:
================================================================================
PAGE 15
================================================================================
Connection toGeViScope (optional)
IfyouhaveaGeViScope serverupandrunning,youcanconnectGeViSofttoitviaaTCP/IP
connection. Ifconnected, actionscanbeexchanged betweenthetwosystems.Asan
================================================================================
PAGE 16
================================================================================
examplethiscanbeusedtoremotecontrolGSCView.
PleasenotethatyoucaninstalltheGeViScope ServerasapartofGeutebrücks GeViScope
SDKifyouhavenotdoneityet.YoucandownloadthisSDKonwww.geutebrueck.com or
requestitfromtheSDKdivision.
InstallingtheGeViScope SDKisaprerequisite forthescenarioandexampleinthechapter
Switching Video.
Youcanconfiguretheconnection toGeViScope insideGeViSet.ChoosethemenuServer->
GeViScope Connections andpressAddinthepop-upmenu.Youcanthenconfigurethecon-
nectionparameters insidetheGeViScope connection window.
 NOTICE
PleasenotethattheAliasisusedtoaddressdifferentGeViScope serversfrominsidethe
SDKwithGSCActions. SeeActionmessages >creatingactionmessages >4.Exampleofcre-
atingaGeViScope ActionMessage
================================================================================
PAGE 17
================================================================================
FirstStepswithGeViSoft
Thischapterwillleadyouthroughout yourfirststepswithGeViSoft. Youwilllearnhowtocon-
necttoaGeViServer, sendsomebasicactions,andcustomize messagelogginganddisplay
toyourneeds.IfyouarealreadyfamiliarwithGeViSoft, youcanskipthischapterorskim
throughit.
GeViAPI TestClient
TheeasiestwaytotestyourGeViSoftsetupisbyusingtheGeViAPITestClient.Youcan
startitfromyour%GEVISOFTSDKPATH% directory.
PleasemakesurethatyourGeViServer isalreadystarted.Ifnotstartitbyexecuting the
“startserver.bat” insidetheGeViSoftrootdirectory.
AfterstartupconnecttotheGeViServer byaddingyourcredentials andpressingthe“Conn”
button.Ifeverything worksout,the“Connected” indicatorwillbeilluminated ingreenandsev-
eralmessages willpopupinthe“Communication log”.Atthispointyourcommunication is
setupcorrectly.
Ifyouhavefollowedtheconfiguration stepsinchapterSettingupGeViIOyouwillalreadybe
abletouseGeViSoftforswitchingyourvirtualvideoI/O.
CrossSwitching Video
SelectthetabVideo/DigIO .Youcanswitchyourvideosignalinthefollowingway:
1.Selectanactiveinputandanactiveoutput.Thesignalwillbeswitchedbetweenthese
two.YoucanseetheactiveI/OonthewindowsrighthandsidebeneaththetextVideo.
a)Toselectanactiveoutput,left-clickononeofyourconfigured videooutputsinthe
upperwindowarea.YoushouldseeActOutchangingwithregardtoyourselection.
================================================================================
PAGE 18
================================================================================
b)Nowmovethemouseoverthedesiredinput(e.g.7)andright-clickontheinput.
Thenumberofyourselectedinputshouldnowappearintheblacksquareaboveyour
selectedoutput.
2.Clearavideooutput.Movethemouseovertheoutputtoclearandright-clickonit.The
numberintheblacksquareabovetheoutputshouldvanish.
================================================================================
PAGE 19
================================================================================
================================================================================
PAGE 20
================================================================================
 NOTICE
Whenswitching theoutput, aCrossSwitch actionwiththechosen channels isdisplayed inthe
Communication LogshowninthelowerpartoftheGeViAPI TestClients window.
IfarealVX3wouldbeconnected toyourGeViSoftandtheinputswereconnected tovideosig-
nals,youwouldswitchtherealsignaltotheaccording output(normallyamonitor).Youwill
learnhowtousetheseswitchactionstoremotecontrolaGscViewinthesamewayyou
woulduseananaloguematrixinthechapterSwitching Video.
Manipulating DigitalI/O
Similartothevideosignalsyoucanswitchdigitaloutputsandgeneratedigitalinputsignalsin
yourvirtualtestclient.
Generateasimulated digitalinput:
Togenerateaninputmoveyourmousepointeroverthedesiredinputchannel.Aleftclick
willsimulateaclosingofthecontact,arightclickanopening.Thecontactsstatesare
colorcodedaccording tothistable:
Color State
White Unknown
Red Closed
Green Open
Gray Unavailable
Generateasimulated digitaloutput:
Togenerateanoutputmovethepointeroverthedesiredoutputsignal.Left-clickingwill
settheoutputsstatetoopen,right-clickingtoclose. Theoutputsstatesarecolorcoded
according tothistable:
Color State
White Unknown
Red Closed

View File

@@ -0,0 +1,151 @@
================================================================================
PAGE 21
================================================================================
Green Open
Yellow Alternating (CanbesetviaAlternate Contact action)
Gray Unavailable
Information
IftheGeViIO clientwasconnected torealDIOhardware, youcouldseetheinput
signals changing inrealtime.Setting oftheoutputs would result inswitching
realloads.
================================================================================
PAGE 22
================================================================================
Actions
SofaryouonlyusedGeViAPITestClientsbuilt-infunctionality tointeractwithGeViServer.
InthischapteryouwilllearntouseGeViSoftactionstocontrolthesystem.
GeViSoftactionscanbesentbytypingthemintothetextboxinthelowermiddleoftheGeVi-
APITestClientswindow.Youcanfindacompletelistofthepossibleactionsinthedoc-
umentation.
Hint
Youcaninteractively generate actions andlearnabouttheirparameters bycom-
posing theminGeViSet. Therefore, openGeViSet, andconnect totheserver.
Thennavigate toServer ->Named actions andpressAddinthewindow that
popsup.Inthewindow Named action settings youmaypressthebutton withthe
threedots(“…”)totakeyoutotheAction settings menu.
Thereyoucanchoose anyoftheimplemented actions andviewtheirparameters
andsettings. Tofiltertheactions bycategory choose oneofthecategories from
theupper leftlistbox.Hoover themouse overanyoftheparameters togeta
detailed description ofit.
Asanexample select Crossbar control asacategory andmovetoCrossSwitch to
seethemessages parameters ontherightside.
Thecomplete message is:
CrossSwitch (IDVideoInput, IDVideoOutput, Switchmode) .
CrossSwitching Video
1.Routevideofromaninputtoanoutput--Tosendthevideofrominput7tooutput3,do
thefollowing:
================================================================================
PAGE 23
================================================================================
a)TypethisactionintothetextboxinthelowermiddleoftheGeViAPITestClient
windowandsendit: CrossSwitch (7,3,0)
b)Makesurethatthesignalisroutedaccordingly bycheckingtheoutputinthetab
Video/DigIO
c)Routevideoinput3tooutputchannel2.(CrossSwitch (3,2,0))
2.Clearvideooutput2:ClearVideoOutput (2)
================================================================================
PAGE 24
================================================================================
Crossswitching video1
================================================================================
PAGE 25
================================================================================
Manipulating DigitalI/O
1.Opencontact1andclosecontact2--TheactionsOpenContact (ContactNumber) and
CloseContact (ContactNumber) canbeusedtosetthedigitaloutputsfromGeViSoft.
a)Toopencontact1sendtheaction:OpenContact (1)
b)IntheTabVideo/DigIO ofGeViAPITestClientmakesurethattheindicationof
outputonehasturnedtogreen
c)Toclosecontact2sendtheaction:CloseContact (2)
d)Makesurethattheoutputturnedred.
2.Simulateaclosingoftheinputcontact3andanopeningoftheinputcontact5
a)InputContact (3,true)
b)Makesurethatinput3issignaling closed(redindication)
c)InputContact (5,false)
d)Makesurethatinput5issignaling open(greenindication)
3.Alternating acontact --Simulateaflashlightonoutput8
a)Toalternateacontact,youcanusetheactionAlternateContact (ContactID,
BlinkPeriod_ in_ms,BlinkOnTime_ in_ms)
b)Sendthecommand toflashthelightwithafrequency of1Hzandadutycycleof
500ms: AlternateContact (8,1000,500)
================================================================================
PAGE 26
================================================================================
c)Checkthatthecontactisalternating afterpressingtheRefreshbutton,theout-
put8stateshouldbealternating (yellow).
================================================================================
PAGE 27
================================================================================
================================================================================
PAGE 28
================================================================================
Manipulating digitalIO
================================================================================
PAGE 29
================================================================================
GETAS
InthischapteryouwilllearnaboutGETAS,theGeutebrück TelnetActionServer.The
GETAScomponent allowsyoutosendandreceiveGeViSoftactionsviatelnet.Multiple
clientscanconnecttooneGeViServer atatime.
Thetelnetinterfaceallowsyoutoeasilyintegratesimpleapplications intoyourGeViSoftinfra-
structure.Furthermore itoffersanoptiontoconnectnon-Windowsplatforms.
 CAUTION
Bydefault, GETASisnotactive.Toactivate GETAS, openGeViSet andnavigate toServer->
GETAS.IntheGETASsettings window, youcanthenactivate thecomponent bychecking Enable
TCPport.BydefaultGETASwilllistentoport7707.Leavetheothersettings unmodified and
pressOK.Sendthealteredsetuptotheserverafterwards (File->Setuptoserver).
 CAUTION
Toconnect toGETAS, youneedatelnetclient.YoucaneitherusetheWindows telnetclientora
thirdpartyapplication likeputty.
 ADVICE
IfyouareusingWindows 7,thetelnetclientisnotactivated bydefault. Toactivate itgotoStart
->Control Panel->Programs andFeatures andselecttheTelnetClientfromthelistbox.
NowyoucanconnecttoGeViServer andsendsomeactions.
BasicGETASUsage
1.ConnecttoGeViServer viaGETASOpenacommand window(cmd.exe) andstart
telnet.Inacommand windowtype:telnetlocalhost 7707
================================================================================
PAGE 30
================================================================================
2.Makesurethatyourinputisechoedlocallybyentering setlocalecho
3.Youmaywanttopressenteroncetoclearyourscreenifnecessary.
4.MakesurethatyoustartedyourGeViAPITestClientandconnected ittotheGeV-
iServer
5.Sendanactiontotheserver:
a)CustomAction (42,"HelloGETAS")
b)Ifyoureceiveanechoofyouractionprecededbya4;fromtheGeViSoftserver,
yourconfiguration isworking
c)VerifythatyoucanalsoseetheactionintheGeViAPITestClientscom-
munication log.Ifyoucannotseethemessage, makesureyouareconnected and
yourfiltersettingsinthetabFilterGeViSoftaresetcorrectly.Tobesure,setthe
filtertoacceptallmessages.
6.Monitoractionssentbyotherclientsinyourtelnetsession:
a)SendanactionfromGeViAPITestClient:CustomAction (23,"HelloGETAS
client")
b)Verifythatyoureceivedtheactioninyourtelnetwindow.
VideoandIOControlwithGETAS
1.NowcontrolyourvirtualVX3byusingGETASMakesurethatGeViAPITestClient
isrunningwhileyouissuecommands viatelnetandyoucanseetheVideo/DigIO tab.
YourGeViIO_01configuration shouldbethesameasinchapterSettingupGeViIO.

View File

@@ -0,0 +1,176 @@
================================================================================
PAGE 31
================================================================================
2.Routevideoinput7tovideooutput2:
a)ConnecttotheGeViServer viatelnetinacommand windowifnotdoneityet.
b)Send:CrossSwitch (7,2,0)
c)MakesurethatthevideosignalisroutedcorrectlyintheVideo/DigIO tabofGeVi-
APITestClient
3.Copythevideosignalfromoutput2tohaveitalsoonoutput4:
a)Send:CopyCameraOnMonitor (2,4)
b)Makesure,thatinput7isroutedtooutput2and4intheGeViAPITestClient
4.Clearthevideooutputonchannel2:
a)Send:ClearVideoOutput (2)
b)Makesurethecommand worked(GeViAPITestClient)
5.Closedigitaloutputcontact5:
a)Send:CloseContact (5)
b)Verifytheresultofthecommand inGeViAPITestClient
GETASLimitations
GETAScanbeusedforsimpleapplications orintegration ofnon-Windowsclients.Nev-
erthelessthereisonelimitation. Thetelnetconnection isonlyestablished tooneserverata
================================================================================
PAGE 32
================================================================================
time.IfGeViServer isrunninginaredundancy setup,theactionsarenotforwarded between
thedifferentservers.
 WARNING
Ifyouplantointegrate yourGETASsolution intoacomplex setupwithmirroring, youhaveto
takecareofthecommunication withthedifferent servers onyourown.
Thishasnottobeconsidered ifyouareusingtheSDKfunctionality asdescribed inchapter
SDKUsage.TheSDKfunctionswilltakecareofcommunicating withthevarioussystems.
================================================================================
PAGE 33
================================================================================
ActionMapping
Actionmappingcomesinhandyifyouneedtotriggeroneactionbyanother.Assumeyou
wanttoswitchonabeaconifadoorisopened.Thebeaconisconnected toadigitaloutput2
andthedoortoadigitalinput3(whichopenstogetherwiththedoor).Theseactionscanbe
mappedinthefollowingway.
1.InGeViSetselectServer>Actionmapping
2.PressAddintheActionmappingwindow.TheActionmapping settingswindowwill
open.
3.Pressthe…buttontoaddanewinputactionandchoosetheDigitalcontactscategory
intheActionsettingswindow
4.SelecttheInputContact actionandsettheparameters GlobalContactID to3and
ChangedTo tofalse.SetCaptiontodoorcontacthasopenedandpressOK.
5.Pressthe+buttontosettheoutputactionintheActionmapping settingswindow
6.Toflashabeacon,theoutputsignalmustalternatebetweenonandoff.Thiscanbe
achievedwiththeAlternateContact action.
7.SettheAlternateContact actionsparameters toGlobalContactID =2,BlinkPeriod =
1000ms,andBlinkOnTime =500ms.EnterblinkthebeaconasCaption.
8.SendthesetuptotheGeViServer
9.TestthemappingbysendingtheactionInputContact (3,false)eitherbyGETASor
insideGeViAPITestClient.YoushouldseethemappedactionAlternateContact (2,
1000,500)deliveredbytheGeViServer directlyafterwards. Youcanalsochecktheout-
putsstatusinGeViAPITestClientsVideo/DigIO tabafterhittingtherefreshbutton.
================================================================================
PAGE 34
================================================================================
10.Toswitchoffthebeaconafterthedoorhasclosed,youneedtomapanotheraction
pairinGeViSet.Forthat,mapInputContact (3,true)toCloseContact (2)andsend
thesetuptotheGeViServer.
11.Checkifthebeaconisswitchedoffimmediately aftersendingtheactionInput-
Contact(3,true)
Pleasenotethatyoucanmapmultipleactionstooneinput.Thisallowsyoutorealizemore
complexsetups.
================================================================================
PAGE 35
================================================================================
Timer(optional)
GeViSoftallowsyoutoconfiguretimerswhichcanscheduleactions,givingyouaversatile
toolforcustomapplications. YoucanconfiguredifferenttypesoftimersinGeViSet.Timers
internallycountin“ticks”.Eachtickequalsonemillisecond.
TypesofTimers
lOncetimer(singleshot)thistimercountsdownforthenumberofmainticksafter
beingstartedandattheendfirestheconfigured action
lPeriodical timerthistimerallowstriggeringactionsperiodically everytimeit
reachesthenumberofmainticks.Afterfiringtheaction,thetimerrestartscounting
ticksfromzero.
lPeriodical timerwithembedded tickthistimeractssimilartothesimpleperi-
odicaltimer.Inaddition,itcanfireasecondactiononreachingthe“embedded tick”
count.Asanexample,youcouldrealizeswitchingonandoffofabeaconlightwitha
timerlikethis.Simplyclosetheoutputattheembedded tickandopenitatthemain
tick.
================================================================================
PAGE 36
================================================================================
Timer1
================================================================================
PAGE 37
================================================================================
Configuring aTimer
1.Torealizethebeaconstimerselect„Server->„TimerinGeViSet.
2.Addanewtimer.Makesure,theActivecheckbox isticked.NamethetimerBea-
conTimeranddescribeitasTimertotoggleabeaconondigitaloutput2
3.SettheTimertypetoPeriodical withembedded tick,themainticktooccurevery
1000ms,andtheembedded ticktooccurevery500ms.Thiswillgenerateatimerwith
twotickspersecondandaspacingof500msinbetween.
4.PresstheEditbuttonOnembedded ticktosettheactionthatshalloccurwithevery
embedded tick.ChoseOpenContact fortheGlobalContactID 2andgivetheactionacap-
tionliketurnofbeacon.
5.Forthemaintick,settheactiontoCloseContact forthesameoutputandthecaption
toturnonbeacon.
6.SendthenewsetuptotheserverandswitchtoGeViAPITestClient
7.YoucanstartthetimerbysendingtheStartTimer action.Thisactiontakestwoparam-
eters,theTimerIDandtheTimerName .IfyouwanttoaddressatimerbyitsID,justsend
anemptyTimerName .SendStartTimer (1,"BeaconTimer")
8.IntheVideo/DigIO tab,youshouldseethatoutput2toggleswithafrequency of1Hz.
9.Tostopthetimer,sendaStopTimer (1,"BeaconTimer") action.
 NOTICE
HintforusingStartTimer andStopTimer actions:
GeViSoft firsttriestoevaluate thetimerbyTimerName andonlyifnonameisgivenbyID.Ifyou
================================================================================
PAGE 38
================================================================================
useanonexisting name,thetimerwillnotbestarted, evenifyoustatetherightID.Ifyouwant
tostartatimerbyID,sendanemptystringasname(e.g.StartTimer (1,"")).
================================================================================
PAGE 39
================================================================================
Events(optional)
Eventscanbeusedtocontrolcomplexbehaviorcausedbyastartconditionasatrigger.The
GeViSofteventhandlingimplementation allowsaveryflexiblesetupofeventtriggersand
resultingactions.
================================================================================
PAGE 40
================================================================================
YoucanaddeventsinGeViSet(Server->Events->Add).
Options forEvents
Option Description
Active Eventscanonlybetriggered ifmarked Active
Trigger Enabled Iftriggerisenabled, theeventisrestarted iftheStartbycondition occurs
again.
RepeatActions IftheStartbycondition occurs, theOnstartactionisinvoked
Adjustautostop
timeIftheStartbycondition occurs, theelapsed Autostoptimeisresettozero
Adjuststarttime Ifchecked, thestarttimeisadjusted onretriggering
Stopbefore
AutostopEnabled Ifenabled, theeventstopsafterthetimeframesetinStopafter
Stopafter Periodoftimeafterwhichtheeventautomatically stops
AutoStoponleaveof
validtimerangesEventscanbeactivated forcertaintimerangesonly.Ifthisoptionis
checked, theeventautomatically stopsifthevalidtimerangesareleft
Timerangefield Listofallthetimerangeswheretheeventisactivated. Notethatifnotime
rangeisgiven,theeventcannotbetriggered!
Startby Listofactions thattriggertheevent.Ifmultiple actions areconfigured, any
oftheactions willtriggertheeventonitsown(logical ORoperation)
Stopby Listofactions thatterminate theevent.Ifmultiple actions areconfigured,
anyoftheactions willstoptheeventonitsown(logical ORoperation)
Onstart Listofactions thatareallexecuted oneventstart(logical AND)
OnStop Listofactions thatareallexecuted oneventtermination (logical AND)
Configuring anEvent
1.Hereisanexamplehowtoconfigureaneventthatroutesvideosignalsbasedondig-
italinput--closingofcontact3triggerstheroutingofvideoinput3tovideooutput2.After
5seconds,theeventstopsandvideooutput2iscleared.Theeventwillbeconfigured for
automatic retriggering. Herearethesettings:

View File

@@ -0,0 +1,172 @@
================================================================================
PAGE 41
================================================================================
Example ofanEvent
2.TheactionsforStartby,Onstart,andOnstopare:
a)Startby:Contact3closed->InputContact (3,true)
================================================================================
PAGE 42
================================================================================
b)Onstart:RoutevideoIn3toVideoout2->CrossSwitch (3,2,0)
c) Onstop:Clearvideooutput2->ClearVideoOutput (2)
3.AfterthesetuphasbeensenttotheGeViServer, theeventcanbetestedwiththe
GeViAPITestClient
4.Ifyouleftclickinputcontact3theeventisstarted.Youwillseethatvideoinputstream
3isroutedtovideooutput2.After5secondstheoutputisclearedagain.Youcanalso
seetheeventbeingstartedinthecommunication log.
5.Theeventcanberetriggered. Ifyouleftclickinput3againwhiletheeventisrunning,
the5secondautostoptimestartsoveragain.
6.YoucanalsostarttheeventbysendingaStartEvent message(StartEvent (ID,
"MessageName") ).
================================================================================
PAGE 43
================================================================================
Alarms(optional)
Duetothelargeamountofvideocamerasconnected tomodernvideosurveillance systems,
operatorscannotobserveallthestreamsatthesametime.Moreover, onlycertainincidents
areofinterestorneedaction.Therefore, itishelpfulthatapreselection ofthevideomaterial
showntotheuseriscarriedoutbythesystem.Oftenspecialactionshavetobetakenifapar-
ticularsituationishappening. Asanexampleassumethataparkinglotwithabarrieratthe
entranceisbeingmonitored. Theoperatorissupposed toopenthebarrieraftermakingsure
thatawaitingvehicleisallowedtoenter.Normally, theoperatorwouldhavetowatchthe
streamofthecamerapermanently andactonit.IncaseslikethisGeutebrück systemscan
assistbyprovidingalarms.Alarmsareverysimilartoevents,butoffermoreversatileoptions
forcustomizing anddefiningrequireduserinteraction.
AlarmOptions
GeViSetoffersseveraloptionsforalarms.
Option Description
Name Alarmnamecanbeusedinactions
Description Fieldforthedescription ofanalarm
AlarmID Alarmidentifier --canbeusedinactions
Active Alarmscanonlybetriggered ifmarked Active
Priority Alarmscanhaveapriority from1(high)to10(low).Ahigherpriority
alarmwilldisplace alowerpriority oneifconfigured tobeshownon
thesamemonitor group
Monitor Group Several monitors thatareaddressed asagroupforeasieradmin-
istration
Cameras Listofcameras thatarerelevant forthealarm.Theirpictures are
shownonthemonitor groupincaseanalarmoccurs
Retriggerable Ifchecked, thealarmcanberetriggered byitsinitialactivator.
Popup(Retrigger)
================================================================================
PAGE 44
================================================================================
Option Description
Undoacknowledge
(Retrigger)Ifset,thealarmhasalready beenacknowledged andthealarmis
retriggered, thestatewillberesettonotacknowledged.
Userspecific (Retrigger) Ifchecked, acustom listofactions canbeaddedwhichwillbe
executed onaretrigger eventofthealarm
StartbyAction Listofactions. Anyoftheactions willstartthealarm(logical OR)
OnstartAction Listofactions. Alloftheactions willbesentonstart(logical AND)
Acknowledge byAction Listofactions. Anyoftheactions willacknowledge thealarm(logical
OR)
Onacknowledge Action Listofactions. Alloftheactions willbesentonacknowledge (logical
AND)
QuitbyAction Listofactions. Anyoftheactions willquitthealarm(logical OR)
OnquitAction Listofactions. Alloftheactions willbesentonquit(logical AND)
Configuring anAlarm
Configure analarmfortheparkinglotscenarioasdescribed above.Assumethatthedetec-
tionofavehicleisdonebyasensorondigitalinput1(vehicleisdetectedonclose).After
checkingifthevehiclemayentertheoperatormustopenthebarrier.Todosoheacknowl-
edgesthealarmbypushingabuttonconnected todigitalinput2.Asthebarrieriscontrolled
bydigitaloutput1theOnacknowledge actionmustopenthiscontact.Afterthevehiclehas
passed,theoperatormustquitthealarmbypushingabuttonconnected todigitalinput3.On
quitthebarriermustbeclosedbyclosingdigitaloutput1.Theparkinglotissurveilledbytwo
camerasoninputs4and7.Duringthealarm,thesemustberoutedtooutputs1and2.
1.AlarmsaredisplayedinMonitorGroups.FirstdefineoneInGeViSet.
a)Server->Monitorgroups->Add
b)SetthegroupsNameandDescription toMonitorGroup1
c)Addvideooutputs1and2tothegroup
================================================================================
PAGE 45
================================================================================
d) Leavetherestofthesettingsastheyare
2.AddanewalarminGeViSet: Server->Alarms->Add
a)IntheGeneraltab,setNameandDescription toParkingLot
b)PresstheMonitorgroupbuttonandaddMonitorGroup1
c)AddVideoinput4andVideoinput7toCameras
================================================================================
PAGE 46
================================================================================
AlarmSettings 1
================================================================================
PAGE 47
================================================================================
d)IntheActionstab,settheStartbyactiontoInputContact ,theGlobalContactID to
1andChangedTo totrue.AddtheCaptionvehicledetected
e)SettheAcknowledge byactiontoInputContact ,theGlobalContactID to2and
ChangedTo totrue.AddtheCaptionbuttonacknowledged pressed
f) SettheOnacknowledge actiontoOpenContact ,andtheGlobalContactID to1.
AddtheCaptionopeningbarrier
g)SettheQuitbyactiontoInputContact ,theGlobalContactID to3andChangedTo
totrue.AddtheCaptionbuttonquitpressed
h)SettheOnquitactiontoCloseContact ,andtheGlobalContactID to1.Addthe
Captionclosingbarrier
================================================================================
PAGE 48
================================================================================
AlarmSettings 2
================================================================================
PAGE 49
================================================================================
3.Sendthesetuptotheserver
4.TestthenewalarminGeViAPITestClient
a)Clearvideooutputs1and2byright-clickingonthem.
b)Simulatethearrivalofthevehiclebyleft-clickinginput1.
c)Checkifthealarmistriggeredbyverifyingthatstreams4and7aredisplayedon
monitors1and2.Notethattheoutputscolorchangedtoredwhichindicatesan
alarmfeed.YoushouldalsofindtheAlarmStarted ()actionintheCommunication
log
d)Acknowledge thealarmandopenthebarrierbyleft-clickinginputcontact2.Make
surethatthisleadstotheopeningofoutput1andanAlarmAcked ()actionappearing
inthelog.
e)Quitthealarmbyleft-clickinginputcontact3.Thevideooutputscolorshould
changetogreenasthealarmhasfinished.Thebarrier(output1)shouldhaveclosed.
================================================================================
PAGE 50
================================================================================
Switching Video
Thoughmonitorgroupsdatebacktoanaloguevideorecording, theideabehindthemcomesin
handywhencomplexsituations aretobepresented tooperators. InmodernCCTVsystems
mostofthesourcesaredigitalonesandtheviewersrunassoftwareondedicated consoles.
Nevertheless theconceptofmonitorgroupscanstillbereproduced withGeutebrücks sys-
tems.Thestandardviewer--GscView--canberemotecontrolled toshowpredefined scene
setupsinawaysimilartomonitorgroups.
InthischapteryouwilllearnhowtoswitchbetweentwouserdefinedGscViewscenesbytrig-
geringaGeViSoftalarm.Youwillhaveanormal4-by-4scenedisplaying 16channelsoflive
footagefromaGeViScope. OntriggeringanalarminGeViSoft, GscViewwillbeswitchedtoa
2-by-2scenedisplaying predetermined videochannels.
Scenario
Assumethefollowingsituation,whichiscloselyrelatedtoConfiguring anAlarminchapter
Alarms:
Configure analarmfortheparkinglotscenario.Assumethatthedetectionofavehicleisdone
byasensorondigitalinput1(vehicleisdetectedonclose).Aftercheckingifthevehiclemay
enter,theoperatormustopenthebarrier.Thishappensonacknowledging thealarmbypush-
ingabuttonconnected todigitalinput2.Asthebarrieriscontrolled bydigitaloutput1,theOn
acknowledge actionmustopenthiscontact.Afterthevehiclehaspassed,theoperatormust
quitthealarmbypushingabuttonconnected todigitalinput3.Onquitthebarrierhavetobe
closedbyclosingdigitaloutput1.Theparkinglotissurveilledbytwocamerasoninputs4and
7.Duringthealarm,thesemustberoutedtooutputs1and2ofa2-by-2sceneMyScenein
GscView. Beforeandafterthealarm,all16GeViScope channelsshouldbedisplayedina4-
by-4sceneMyStartScene inGscView.

View File

@@ -0,0 +1,195 @@
================================================================================
PAGE 51
================================================================================
Prerequisites
1.PleasesetuptheGeViScope SDKonyourdevelopment machineifyouhavenotdone
ityet.
2.Configure GscViewasdescribed inthechapterRemotecontrolGscView byactionin
theGeViScope SDKdocumentation. CheckthatfromGSCPLCSimulator youcan
switchbetweenthescenes.
3.Configure aconnection toGeViScope asdescribed inConnection toGeViScope
(optional).
4.YoushouldnowhaveaGscViewsetupwithtwoscenes:MyStartScene andMyScene
thatcanberemotecontrolled.
Configuring theAlarm
1.Configure thealarmasdescribed inConfiguring anAlarm.
2.Afterthat,themonitorgroupmustbemappedtoaGscViewScene.GeViSoftusesthe
CrossSwitchWithAlarm actiontoroutethevideotothemonitorgroupinternally. There-
foretheseactionsmustbemappedtoGSCViewer Controlactions(e.g.VCChange
SceneByName).ThisisdoneinGeViSetbyaddinganewActionmapping:
c)Thischangesthesceneintheviewer.Afterthat,channel4mustberoutedto
viewer1101inthescene.Forthat,addanotheroutputactiontothesetbypressing
the+button:
d)AddtheViewerconnectliveactionwiththeGeviScope alias=GEVISCOPE ,the
viewer=1101,thechannel=4,andCaption=ViewerConnectLive (1101,4)
================================================================================
PAGE 52
================================================================================
a)AsInputactionselectCrossSwitchWithAlarm withVideoInput =4,VideoOutput =
1,andCaption=CrossSwitchWithAlarm (4,1)
b)Tochangethesceneintheviewertherearedifferentpossibilities. Youcaneither
callVCChangeSceneByName ordirectlyconnectalivestreamtoaviewernumber.
ThisisdonebysendingaViewerConnectLive action.Here,channel4mustbe
routedtoviewer1101inthescene.Forthat,addanoutputactiontothesetbypress-
ingthe+button:
c)AddtheViewerconnectliveactionwiththeGeviScope alias=GEVISCOPE ,the
viewer=1101,thechannel=4,andCaption=ViewerConnectLive (1101,4)
d)TheActionmappingsettingswindowshouldlooklikethis:
================================================================================
PAGE 53
================================================================================
Switching Video1
e)NowrepeattheprocessfortheCrossSwitchWithAlarm actionforvideoinput7
andviewer1102.
================================================================================
PAGE 54
================================================================================
f)Ifexecuted, themappings abovewillswitchthescenetoMySceneinGscView
androutethevideochannelstotherespective viewer.Execution oftheCross-
SwitchWithAlarm actionstakesplaceatthemomentoftriggeringthealarminGeV-
iSoft.
3.Afterquittingthealarmthe4-by-4sceneMyStartScene mustbereloadedinGscView,
according tothescenario.ThiscanbedoneasanOnquitactionoftheGeViSetalarm:
a)IntheGeViSet AlarmsettingsoftheParkingLot alarm,addaVCchangesceneby
nameactiontotheOnquitlist.
================================================================================
PAGE 55
================================================================================
b)ChosetheactionfromGSC:VieweractionandsetGeviScope aliastoGEV-
ISCOPE,viewerto1000,scenetoMyStartScene ,andCaptiontoVCChan -
geSceneByName (1000,MyStartScene ).
c)Sendthesetuptotheserver.
4.OpenGeViAPITestClientandGscViewtotestyournewconfiguration. Onstarting
thealarmbyleftclickinginput1inGeViSet,thesceneshouldswitchtoMyScenein
GscViewwithchannel4beingdisplayedinviewer1101andchannel7inviewer1102.
Onquittingthealarmbyleftclickinginput3inGeViAPITestClient,thesceneshould
switchbacktoMyStartScene .
================================================================================
PAGE 56
================================================================================
SDKUsage
Introduction
Itisrecommended tobefamiliarwiththeGeViSoftsystem,thepossibilities ofmodernvideo
surveillance systemsandvideomanagement systemsingeneral.Beforestartingpro-
gramming yourcustomGeViSoftapplication, youshouldunderstand thebasicsofaction,
alarm,andeventhandlinginGeViSoft, aswellastheprinciplesofclient-servernetworkcom-
munication.
Thefollowingsectionssupportyouwithsomesuggestions andhintsaboutusingtheSDK
interfaces.
General Hints
YoucanalwaysmonitortheactionssentbytheGeViServer oryourapplication insidethe
GeViAPITestClient.Furthermore, thisapplication allowsyoutosendactionsanddatabase
queries.Itislocatedinthe%GEVISOFTSDKPATH% .
 NOTICE
Onadevelopment system itisrecommended tostartGeViServer withthestartserver.bat script
orfromacommand prompt inconsole mode(geviserver.exe console ).Thisallowsyouto
monitor theservers outputduringyourdevelopment.
 WARNING
Makesuretodeleteallobjects thatarecreated insideofDLLs.TheSDKoffersaDeleteObject ()
method fortheseobjects.
 NOTICE
================================================================================
PAGE 57
================================================================================
Callback functions whicharecalledoutoftheSDKDLLsarecalledfromthreads. Thesewere
created insidetheDLLs.Variables andpointers thatarepassed asarguments ofthecallback
maynotbeusedoutside thecallback context. Theyareonlyvalidfortheduration ofthecallback
call.
 NOTICE
Structures thatareusedasarguments forSDKfunctions shouldalwaysbeinitialized byuseof
thefunction memset ().Ifthestructure contains asizeorstructsize element, thenithastobe
initialized withthesizeof()function.
================================================================================
PAGE 58
================================================================================
Overview oftheSDKsInterfaces forC++andDelphiusers
 NOTICE
Thefollowing paragraphs describe theSDKusagefromC++andDelphi. Foradescription ofthe
.NetInterfaces seechapter C#and.Netspecifics
GeViProcAPI
TheSDKisbasedontwoDLLsandthecorresponding headers.TheGeViProcAPI.dll incon-
nectionwiththeGSCActions.dll implements alltheSDKsfunctionality. GSCActions.dll is
usedtoallowtheinteroperability betweenGeViSoftandGeViScope. ItmakestheGeV-
iScopeactionsavailabletoyourGeViSoftapplication. Thecorresponding headersandPas-
calfilesallowyoutoaccessthefunctionsprovidedbytheseDLLsdirectly.
GeViSoftisaclient/server architecture andbasedonacentraldatabasemanagedbythe
GeViServer. ThisisreflectedinthefunctioncallsprovidedbytheSDK.Therearefourmajor
functiontypesdeclaredinGeViProcAPI. Theycanbedistinguished bytheirprefixes:
GeViAPI_ Database_
ThesedatabasefunctionsallowyoutointeractwithGeViSoftserverdirectly.Theyare
theonesyounormallyusefordeveloping yourapplication.
Example:GeViAPI_Database_ Connect()isusedtoconnectyourapplication tothe
server.
GeViAPI_ DeviceClient_
TheDeviceClient functionsareusedbytheGeViIOclientinternally. Theyareusuallynot
ofinterestforSDKdevelopers.
GeViAPI_ SetupClient_
================================================================================
PAGE 59
================================================================================
TheSetupClient functionsareusedbyGeViSettochangetheserversetup.Theyare
usuallynotofinterestforSDKdevelopers.
GeViAPI_
Thesearegeneralhelperfunctionsneededforcarryingoutstandardtasksinyourappli-
cation.
Example:GeViAPI_FreePointer ()to releasememoryallocatedbyyourobjectsinside
theDLLthreads.
GeViProcAPI providesflatfunctioncallsforcommunicating withaGeViServer. Togiveyoua
moreconvenient andobjectorientedoptiontodevelopyourapplication, anotherabstraction
layerhasbeenaddedtotheSDK.ThislayerhidestheflatfunctioncallstotheGeViProcAPI
fromyou.Itsfunctionality canbefoundintheGeViAPIClient headersandC++files.
Foracomprehensive description ofthesefunctions, pleaseconsulttheGeViSoftAPIDoc-
umentation whichisdeliveredwiththeGeViSoftAPISDK.
GeViAPIClient
GeViAPIClient asanabstraction layerusestheflatfunctionsprovidedbyGeViProcAPI and
encapsulates themintoaCGeViAPIClient class.Youcaninstantiate anobjectofthisclass
anduseitsprovidedmethodstohandlethecommunication withtheGeViServer.
Foracomprehensive description ofthesefunctions, pleaseconsulttheGeViSoftAPIDoc-
umentation whichisdeliveredwiththeGeViSoftAPISDK.
================================================================================
PAGE 60
================================================================================
Configuring yourIDEforGeViSoft Projects
VisualStudio2008,C++
1.)AddGeViSofts headerandcppfilestoyourproject.
(YoucandothisbydragginganddroppingtheGeViScopeSDK\Include folderandtheGeV-
iSoftSDK\Include folderfrom%GEVISOFTSDKPATH%\Examples\VS2008CPP toyour
project.)
2.)AddtheSDKsincludefilestoyourprojectbyadding
$(GEVISOFTSDKPATH) \Examples\VS2008CPP\GeViScopeSDK\Include
and
$(GEVISOFTSDKPATH) \Examples\VS2008CPP\GeViSoftSDK\Include
toyourConfiguration Properties ->C/C++->General>Additional IncludeDirectories
3.)IntheConfiguration Properties ->C/C++->Preprocessor tabaddthePreprocessor Def-
initionGEVI_GSC_INCLUDE
4.)Intheprojectsproperties TABConfiguration Properties ->Linker->Generaladd
$(GEVISOFTSDKPATH) \Examples\VS2008CPP\GeViScopeSDK\lib
and
$(GEVISOFTSDKPATH) \Examples\VS2008CPP\GeViSoftSDK\lib
totheAdditional LibraryDirectories ofyourproject
5.)Intheprojectsproperties TABConfiguration Properties ->Linker->Input->Additional
Dependencies addGeViProcAPI.lib andGscActions.lib
6.)MakesurethatyouroutputfilecanfindthepathtoGeViProcAPI andGscActions DLLs.
Itisrecommended tosetConfiguration Properties ->Linker->General->OutputFileto
$(GEVISOFTSDKPATH) \$(ProjectName).exe orcopytheDLLsintotheapplications folder.
7.)SettheConfiguration Properties ->Debugging ->Command toyourexecutables name:

View File

@@ -0,0 +1,258 @@
================================================================================
PAGE 61
================================================================================
$(GEVISOFTSDKPATH) \$(TargetName) $(TargetExt)
 NOTICE
Pleasemakesurethatyouselectthecorrect configuration whensettingproperties. Bestprac-
ticeistoadopttheGeViSoft settings toAllConfigurations
 NOTICE
PleasenoticethatVisualStudioreferstoenvironment variables intheform$(VAR) whereas Win-
dowsusesthe%VAR% notation. Takethisintoaccount ifyouusetheGEVISOFTSDKPATH var-
iable.
VisualStudio2010,C++
Thefollowing guideissuitable forconsole projects orMFCprojects. Ifyouwish
tobuildWindows Forms orC++/CLI applications moreconfigurations mightbe
necessary.
1.)AddGeViSofts headerandcppfilestoyourproject.
(YoucandothisbydragginganddroppingtheGeViScopeSDK\Include folderandtheGeV-
iSoftSDK\Include folderfrom%GEVISOFTSDKPATH%\Examples\VS2010CPP toyour
project.
2.)AddtheSDKsincludefilestoyourprojectbyadding
$(GEVISOFTSDKPATH) \Examples\VS2010CPP\GeViScopeSDK\Include
and
$(GEVISOFTSDKPATH) \Examples\VS2010CPP\GeViSoftSDK\Include
toyourConfiguration Properties ->VC++Directories ->IncludeDirectories
3.)AddtheSDKslibraryfilestoyourprojectbyadding
$(GEVISOFTSDKPATH) \Examples\VS2010CPP\GeViScopeSDK\lib
and
================================================================================
PAGE 62
================================================================================
$(GEVISOFTSDKPATH) \Examples\VS2010CPP\GeViSoftSDK\lib
toyourConfiguration Properties ->VC++Directories ->LibraryDirectories
4.)Intheprojectsproperties TABConfiguration Properties ->Linker->Input->Additional
Dependencies addGeViProcAPI.lib andGscActions.lib
5.)MakesurethatyouroutputfilecanfindthepathtoGeViProcAPI andGscActions DLLs.
Itisrecommended tosetConfiguration Properties ->Linker->General->OutputFileto
$(GEVISOFTSDKPATH) \$(ProjectName).exe orcopytheDLLsintotheapplications folder.
6.)SettheConfiguration Properties ->Debugging ->Command toyourexecutables name:
$(GEVISOFTSDKPATH) \$(TargetName) $(TargetExt)
================================================================================
PAGE 63
================================================================================
Common Tasks
Thischapterdescribes severalcommontasksyoumightneedtocarryoutduringyourdevel-
opment.
Thesearedescribed inpseudocodeandC++.Foradescription ofthe.NetAPIseechapter
C#and.Netspecifics.
Connecting toaGeViServer
ThefirstexampleshowsyouhowtoconnecttoaGeViServer byusingtheflatAPIcallsfrom
GeViProcAPI. Thesecondandrecommended methodshowsyouhowtoestablishthecon-
nectionwiththehelpofaGeViAPIClient object.
Connecting usingGeViProcAPI calls
Pseudo code
1.Declareadatabasehandle
2.Encryptthepassword string
3.CreatearemotedatabaseobjectinsidetheDLL
4.ConnecttothedatabaseobjectcreatedinsidetheDLL
C++, direct GeViProcAPI calls:
//declare astringtoholdthepassword hash
//(32byte+'\0')
charencodedPassword [33];
================================================================================
PAGE 64
================================================================================
//declare adatabase handle
GeViAPI_ Namespace::HGeViDatabase database;
//encodethepassword
GeViAPI_ EncodeString (encodedPassword, "masterkey",
sizeof(encodedPassword));
//createaremotedatabase objectinsidethe DLL
//toaccessaGeViSoft database
GeViAPI_ Database_ Create(database, "localhost" ,
"127.0.0.1" ,"sysadmin" ,
encodedPassword, "","");
if(database) //database successfully created
{
//Connect functions result
TConnectResult result;
//Connect tothedatabase object.
GeViAPI_ Database_ Connect(database, result,
NULL/*yourcallback here!*/,
NULL/*yourinstance here!*/);
if(result ==connectOk)
std::cout <<"Connection established!";
}
Connecting usingGeViAPIClient Objects (recommended)
Pseudo code
1.DeclareaGeViAPIClient wrapperobject
2.Declareanddefineaconnection callbackfunctiontomonitortheconnection progress(this
functionwillbecalledfrominsidetheDLLandreturnaprogressstateinitsarguments)
================================================================================
PAGE 65
================================================================================
3.Encryptthecleartextpassword
4.CreateaninstanceoftheGeViAPIClient wrapperobject
5.Callthewrappers connectmethod
6.CheckIftheconnectmethodreturnedasuccess
C++, GeViAPIClient calls:
1.Connection handling
//wrapper aroundaGeViAPIclientobject
GeViAPIClient* m_APIClient;
//declare astringtoholdthepassword hash
charencodedPassword [33];
GeViAPIClient::EncodePassword (encodedPassword,
"mypassword" ,
sizeof(encodedPassword) );
//createannewinstance ofthewrapper
m_APIClient =newGeViAPIClient ("MyGeViServer" ,
"127.0.0.1" ,"sysadmin" ,
encodedPassword, NULL,NULL);
if(m_APIClient)
{
//connect totheserverConnectProgressCB isyourcallback
TConnectResult ConnectResult =
m_APIClient- >Connect (ConnectProgressCB, this);
if(ConnectResult ==connectOk)
{
//Connection successfully established
//Doyourworkhere.
}
================================================================================
PAGE 66
================================================================================
}
2.Callbacks
//Callback function forconnect progress display
bool__stdcall ConnectProgressCB (void*Instance,
intPercentage,
intPercent100)
{
if(Instance ==NULL)
{
return(true);
}
//Callthecallback methodofyourclass
//object's instance
CYourClass* yourClass =(CYourClass*) Instance;
return( yourClass- >ConnectProgress (
Percentage, Percent100) );
}
//Yourclasss callback
boolCYourClass::ConnectProgress (intpercentageLower,
intpercentageUpper)
{
//Dos.th.,e.g.showaProgress Ctrl.
return(true);
}
Connection Monitoring
GeViSoftoffersmethodstomonitorifyourconnection isstillestablished. Itisadvisableto
monitortheconnection fromyourapplication andtryareconnect ifitbreaksdown.
YoucanusethesendPing()methodforconnection monitoring whichreturnstrueifthecon-
nectionisstillestablished andfalseifnot.
================================================================================
PAGE 67
================================================================================
BestpracticeistocyclicallycallsendPing()fromaseparatethreadandhandletherecon-
nectionfrominsidethisthreadifnecessary.
Monitoring connections isimplemented intheSDKsexample CPP_Mon-
itoredConnectionClient.
Monitoring aConnection
Pseudo code
1.Createaseparatethreadinsideyourapplication ifaconnection shouldbeestablished
2.Insidethisthead,DO:
a.Sendapingtotheserver
b.IFtheresultofthepingisNOTtrue:tryareconnect
c.Sleepforagiventime(e.g.10s)
3.UNTILtheconnection shouldbeterminated
C++Example
//Prerequisite:
//GeViAPIClient* m_APIClient
//mustalready becreated andconnected.
//
//Runthismethodinsideaseparate Thread!
intMonitorConnection ()
{
constintreconnectionPeriod_ in_ms=10000;
boolresult;
while(true){
================================================================================
PAGE 68
================================================================================
result=m_APIClient- >SendPing ();
if(result ==false)
{
//TODO:notifyyouruserhere.
//Tryareconnect:
m_APIClient- >Connect (YourConnectCallbackCB, this);
}
Sleep(reconnectionPeriod_ in_ms);
}
return0;
}
================================================================================
PAGE 69
================================================================================
Message Handling
Afteryouhaveestablished yourconnection youarereadytoexchange messages withthe
server.
Message Representation
Therearetwopossiblerepresentations ofmessages inGeViSoft. Theyareeitherstoredina
binaryformorasanASCIIstring.TheAPIoffersmethodstoconvertbetweenthesetworep-
resentations. ThesemethodsaredefinedintheMessageBase header,C++,andPascalfiles.
Tableofconversion methodsbetweenmessagerepresentations.
CGeV-
iMessage::ReadASCIIMessageConverts anASCIIstringintoaCGeViMessage
CGeV-
iMessage::WriteASCIIMessageConverts aCGeViMessage intoanASCIIstring
CGeViMessage::ReadBinMessage Converts abinaryrepresentation ofamessage intoaCGeV-
iMessage
CGeV-
iMessage::WriteBinMessageConverts aCGeViMessage intoitsbinaryrepresentation
================================================================================
PAGE 70
================================================================================
ActionMessages
Creating ActionMessages
Youcancreateanactionmessageintwoways.Oneisbycallingitspredefined actioncon-
structordirectly.Theotherisbyconverting anASCIIorbinaryrepresentation intoanew
actionobject.Thepredefined constructors arelocatedintheActionsheader,C++,andPas-
calfiles.
Actionscanbeconsidered aseitherbeingdirectcommands fromtheclienttotheGeViServer
tocontrolitsperipheryorasnotifications whicharesentfromtheservertotheclienttoindi-
catestatechangesoflogicalorphysicalcomponents. Incontrasttoactions,therearestate
queriesanddatabasequeries.Thesearetreatedseparately inthechapters StateQueriesand
Database Queries.
1.Example foradirectly created CustomAction message (con-
structor fromActions.h/cpp)
CGeViMessage* gevimessage =new
CActCustomAction (123,"HelloGeViSoft!" );
2.Example foraCustomAction message created fromastring
intbytesRead;
std::string buffer("CustomAction (123,\"Hello GeViSoft!\") ");
CGeViMessage* gevimessage =
CGeViMessage::ReadASCIIMessage (buffer.c_ str(),
buffer.size (),
bytesRead );
3.Example fortheASCIIoutput ofabinary action message:
//gevimessage isthebinarymessage

View File

@@ -0,0 +1,289 @@
================================================================================
PAGE 71
================================================================================
char*buffer;
constintbufferlength =GEVI_MAXACTIONLENGTH;
intnumBytesReceived;
buffer=newchar[bufferlength];
gevimessage- >WriteASCIIMessage (buffer,
bufferlength,
numBytesReceived);
std::cout <<buffer<<std::endl;
4.Example ofcreating aGeViScope Action Message
GeViScope messages canalsobecreatedinsideGeViSoftdirectly.Thisisneededtoallow
theinteroperability ofGeViSoftandGeViScope.
TheGeViScope messageconstructors canbefoundintheGscActions header.Theyare
implemented insidetheGscActions DLL.GscActions canbecreatedbycallingtheCActG-
scActionconstructor:
CGeViMessage* gevimessage =newCActGscAction ( 
"YourGscServerName" ,
GscAct_CreateCustomAction (1,L"HelloGeViScope!" ));
 NOTICE
Pleasenotethat“GscServerNameAlias” isthealiasnameyouconfigured fortheconnection in
GeViSet.
Sending ActionMessages
ThenextexampleshowsyouhowtosendamessagetotheGeViSoftserver.Asapre-
requisite,aGeViAPIClient objectmustalreadybecreatedandconnected totheserver.
C++Example:
GeViAPIClient* m_APIClient
================================================================================
PAGE 72
================================================================================
//mustalready becreated andconnected
/*
*/
CGeViMessage* gevimessage =newCActCustomAction (
123,"HelloGeViSoft!" );
if(gevimessage)
{
m_APIClient- >SendMessage (gevimessage);
//Dontforgettodeleteobjects youcreateinsidetheDLL
gevimessage- >DeleteObject ();
}
Receiving ActionMessages
ThisexampleshowsyouhowtoreceiveamessagefromGeViSoft. Asaprerequisite, aGeVi-
APIClient objectmustalreadybecreatedandconnected totheserver.Furthermore, adata-
basenotification callbackfunctionmustbedefined.Thiscallbackfunctionwillbecalledfrom
insidetheGeViProcAPI DLLwhenever anotification fromtheserverisreceived.
Pseudo code
1.Definethecallback
2.Definethecallbacks handlermethod
3.RegisteryourcallbackwiththeGeViAPIClient connections object.
4.Handlethereceivednotifications inyouhandlermethod.
C++Example:
1.Define thecallback
================================================================================
PAGE 73
================================================================================
void__stdcall GeViDatabaseNotificationCB (void*Instance,
TServerNotification Notification,
void*Params)
{
if(Instance ==NULL)
return;
//calling thecallback methodofyourClass object's instance.
//Asanexample, CYourClass mightbeCMainWin foranMFCApplication
CYourClass* yourClass =(CYourClass*) Instance;
yourClass- >DatabaseNotification (Notification, Params);
}
2.Define thecallbacks method
voidDatabaseNotification (TServerNotification Notification,
void*Params)
{
//Checkifwereceived amessage. Itmightalsobeanother
//notification likeachangeofsetuporshutdown oftheserver
if(Notification ==NFServer_ NewMessage)
{
//createthemessage ifpossible
//(themessage isfreedagaininthemainthreadcontext)
CGeViMessage* gevimessage;
TMessageEntry* messageEntry =
reinterpret_ cast<TMessageEntry*> (Params);
intnoOfBytesRead =0;
gevimessage =CGeViMessage::ReadBinMessage (
messageEntry- >Buffer,
messageEntry- >Length,
noOfBytesRead);
if(gevimessage)
{
//Youreceived amessage! Nowyouneedtohandleit.
//Thiscanbedonehere.
}
else
================================================================================
PAGE 74
================================================================================
{
//Message couldnotbecreated. Handletheerrorhere.
}
}
else
{
//Ifwearehere,wereceived another typeofnotification
}
}
3.Register yourcallback withtheconnection object.
m_APIClient =newGeViAPIClient ( ...);
if(m_APIClient)
{
//connect totheserver
TConnectResult ConnectResult =
m_APIClient- >Connect (ConnectProgressCB, this);
if(ConnectResult ==connectOk)
{
//Connection established! Nowregister yourcallback!
m_APIClient- >SetCBNotification (
GeViDatabaseNotificationCB, this);
}
}
Disconnecting fromaGeViServer
Whendisconnecting fromtheserver,youshouldunregister yournotification callbackand
deletetheGeViAPIClient object.
C++Example:
voidDisconnectFromServer ()
{
================================================================================
PAGE 75
================================================================================
if(m_APIClient !=NULL)
{
//Unregister thenotification callback
m_APIClient- >SetCBNotification (NULL,NULL);
m_APIClient- >Disconnect ();
deletem_APIClient;
m_APIClient =NULL;
}
}
================================================================================
PAGE 76
================================================================================
StateQueries
StateQueriesaremessages sentfromtheclienttotheservertogetinformation aboutthe
stateoflogicalandphysicalcomponents oftheGeViSoftsystemwellasvirtualressources.
Anexampleofsuchinformation wouldbeanenumeration ofallthevideoinputsavailableata
GeViServer.
Creating StateQueries
Youcancreateastatequerybycallingitspredefined constructor. Allthestatequeriescon-
structorsarelocatedintheStateQueries header,C++,andPascalfiles.
StatequeriescanthenbesentwiththeSendStateQuery ()methodoftheGeViAPIClient
class.ThismethodreturnsaCStateAnswer objectwiththeGeViServers response.
CStateAnswer* StateAnswer =m_APIClient- >SendStateQuery (
GetFirstVideoInputQuery, INFINITE);
Thesecondparameter ofthemethodisthetimeoutforaserveranswerinmilliseconds. By
sendingINFINITE,youcanpreventthecallfromtimingout.
Creating, sending, andreceiving statequeries isimplemented intheSDKsexam-
pleDelphi/CPP_ SimpleClient.
Enumeration ofallvideoinputs
Pseudo code
1.Createastatequerytogetthefirstvideoinput(classCSQGetFirstVideoInput)
2.Sendthequerytotheserver
================================================================================
PAGE 77
================================================================================
3.If theanswerisavalidinputchannelthen
4.REPEAT
a)Gettheactualchannels  information fromtheanswerandprocessitasneeded(e.g.
printitout,storeittoalist)
b)CreateastatequerytogetthenextvideoInput(classCSQGetNextVideoInput)
c)Sendthequery
5.UNTILthereisnomorevideoinputleft
C++Example:
voidCMainWin::FillVideoInputsList ()
{
if(m_APIClient ==NULL)
return;
//Enumerate allavailable videoinputswiththehelpofstatequeries.
//Createanewstatequerythatwillreturnthefirstvideoinputchan-
nel:
CStateQuery* getFirstVideoInputQuery =newCSQGetFirstVideoInput (
true,//showonlyactivechannels
true);//showonlyenabled channels
if(getFirstVideoInputQuery)
{
//Sendthequerytotheserver
CStateAnswer* stateAnswer =m_APIClient- >SendStateQuery (
getFirstVideoInputQuery,
INFINITE); //Timeout
//Don'tforgettofreethememoryinsidetheDLL...
getFirstVideoInputQuery- >DeleteObject ();
if(stateAnswer)
{
//Iterate through allavailable videoinputchannels
================================================================================
PAGE 78
================================================================================
while(stateAnswer- >m_AnswerKind !=sak_Nothing)
{
//Getthechannels info
CSAVideoInputInfo* videoInputInfo =
reinterpret_ cast<CSAVideoInputInfo*> (stateAnswer);
//createavideoinputdescriptor
TVideoInputDescriptor* newVideoInput =new
TVideoInputDescriptor (videoInputInfo- >m_GlobalID,
videoInputInfo- >m_Name,
videoInputInfo- >m_Description,
videoInputInfo- >m_HasPTZHead,
videoInputInfo- >m_HasVideoSensor,
videoInputInfo- >m_HasContrastDetection,
videoInputInfo- >m_HasSyncDetection);
//Dosomething withthechannel information. Here:
//Addthechannel information toa
//CListBox lbVideoInputs
intnewIndex =lbVideoInputs.AddString (
newVideoInput- >m_Name.c_str());
lbVideoInputs.SetItemDataPtr (newIndex, newVideoInput);
//Createaquerytogetthenextinputchannel
CStateQuery* getNextVideoInputQuery =new
CSQGetNextVideoInput (true,true,
videoInputInfo- >m_GlobalID);
stateAnswer- >DeleteObject ();
stateAnswer =NULL;
if(getNextVideoInputQuery)
{
stateAnswer =
m_APIClient- >SendStateQuery (
getNextVideoInputQuery, INFINITE);
getNextVideoInputQuery- >DeleteObject ();
if(!stateAnswer)
break;
}
else//Nomorevideoinputchannel detected!
break;
}
if(stateAnswer)
================================================================================
PAGE 79
================================================================================
{
stateAnswer- >DeleteObject ();
stateAnswer =NULL;
}
}
}
}
================================================================================
PAGE 80
================================================================================
Database Queries (optional)
Database queriesallowyoutofetchdatasetsfromtheactionoralarmtableoftheGeViSoft
activitydatabase. Alltheactionsthathavebeenreceivedandallthealarmeventsthat
occurredarestoredinsidethedatabase. Tospecifyandnarrowdownyourqueryresults,sev-
eralfilteroperations areavailableaswell.
Togetfamiliar withthepossibilities ofGeViSofts database queries, andespe-
ciallyitsfiltering options, please havealookattheGeViAPI TestClients “Data-
baseViewer” and“Database Filter” tabs.
Creating Database Queries
Youcancreateadatabasequerybycallingitspredefined constructor. Allthedatabaseque-
riesconstructors arelocatedintheDatabaseQueries header,C++,andPascalfiles.
Database queriescanthenbesentwiththeSendDatabaseQuery ()methodoftheGeVi-
APIClient class.ThismethodreturnsaCDataBaseAnswer objectwiththeGeViServers
response.
CDataBaseQuery* geviquery =newCDBQCreateActionQuery (0);
CDataBaseAnswer* dbAnswer =m_APIClient- >SendDatabaseQuery (geviquery, INFI-
NITE);
Thesecondparameter ofthemethodisthetimeoutforaserveranswerinmilliseconds. By
sendingINFINITE,youcanpreventthecallfromtimingout.
Database QuerySession Handling
Actionsendingandstatequeryingdidnotneedanyformofsessionhandling.Thisisdifferent
fordatabasequerying.Usuallyyouwanttocollectseveralrecordsthatareconnected in

View File

@@ -0,0 +1,231 @@
================================================================================
PAGE 81
================================================================================
someform,e.g.applyingthesamefiltersettosubsequent queries. Tosignalthedatabase
enginethatyourqueriesareassociated, youpassauniquequeryhandlewiththem.The
queryhandleistheresultyoureceivefromaCDBQCreateActionQuery orCDBQCrea -
teAlarmQuery .Thereforethesequeriesarethefirstyousendwheninteracting withthedata-
base.
C++Example forgetting aquery handle:
//CreateanewActionQuery
CDataBaseQuery* geviquery =newCDBQCreateActionQuery (0);
//SendtheActionQuerytotheserver
CDataBaseAnswer* dbanswer =m_APIClient- >SendDatabaseQuery (geviquery, INFI-
NITE);
geviquery- >DeleteObject ();
if(dbanswer- >m_AnswerCode ==dbac_QueryHandle)
{
//Extract thequeryhandlefromtheanswer
CDBAQueryHandle* handle=reinterpret_ cast<CDBAQueryHandle*> (dbanswer);
}
================================================================================
PAGE 82
================================================================================
Iterating overDatabase Records
Youcansendagroupofassociated databasequeriesafterhavingobtainedthequeryhandle.
PleasenotethattheGeViSoftarchitecture alwaysreturnsonesingleanswerforeveryquery.
Asaconsequence, youmightneedtoissueseveraldatabasequeriesconsecutively toget
yourdesiredpiecesofinformation.
Thiscanbeillustrated byanexampledatabasequery.Imagineyouwanttoretrievethetwo
latestactionsinsidethedatabase:
Example:  Retrieving ofthetwolatest actions inside thedata-
base
Pseudo code
1.CreateanewCDBQCreateActionQuery
2.SendthequerytoGeViServer andretrievethehandlefromtheanswer
3.CreateanewCDBQGetLast querywiththehandleastheargument
4.Sendthequeryandfetchthelatestactionasananswer
5.Extractthelatestactionsprimarykeyfromtheanswer
6.CreateanewCDBQGetPrev querywiththehandleandthelatestactionsprimarykeyas
anargument
7.Sendthequeryandfetchthesecondlatestactionasananswer
C++:
================================================================================
PAGE 83
================================================================================
//Declare aqueryhandle
CDBAQueryHandle* handle;
__int64primaryKey;
//CreateanewActionQuery
CDataBaseQuery* geviquery =newCDBQCreateActionQuery (0);
//SendtheActionQuerytotheserver
CDataBaseAnswer* dbanswer =m_APIClient- >SendDatabaseQuery (geviquery, INFI-
NITE);
geviquery- >DeleteObject ();
if(dbanswer- >m_AnswerCode ==dbac_QueryHandle)
{
//Extract thequeryhandefromtheanswer
handle=reinterpret_ cast<CDBAQueryHandle*> (dbanswer);
}
//Createadatabase queryforthelatestactionentry
CDataBaseQuery* getEntry =newCDBQGetLast (handle- >m_Handle);
//SendthequerytotheGeViServer
dbanswer =m_APIClient- >SendDatabaseQuery (getEntry, INFINITE);
getEntry- >DeleteObject ();
//Checkifanactionentryisinthedatabase
if(dbanswer- >m_AnswerCode ==dbac_ActionEntry)
{ 
//Dos.th.withtheanswerhere...
//Gettheprimary keywhichisusedto
//address therecords internally
primaryKey =reinterpret_ cast<CDBAActionEntry*> (dbanswer) ->m_PK;
}//TODO: Adderrorhandling ifnoactionisinthedatabase
//Create adatabase querytogetthesecondlatestactionentry
getEntry =newCDBQGetPrev (handle- >m_Handle, primaryKey);
//SendthequerytotheGeViServer
dbanswer =m_APIClient- >SendDatabaseQuery (getEntry, INFINITE);
getEntry- >DeleteObject ();
================================================================================
PAGE 84
================================================================================
//Checkifanactionentryisinthedatabase
if(dbanswer- >m_AnswerCode ==dbac_ActionEntry)
{ 
//Dos.th.withtheanswerhere...
}//TODO: Adderrorhandling ifnoactionisinthedatabase
dbanswer- >DeleteObject ();
================================================================================
PAGE 85
================================================================================
Filtering Database Queries
GeViSoftsupportsvariousfiltersallowingyoutospecifyyourqueriesinamorepreciseway.
Forexample,youcannarrowdownyoursearchtocertainactiontypesorsenders.Allthe
availablefiltersaredeclaredintheDatabaseQueries headerfile.
TosetthefilteringontheGeViServer, youhavetosendadatabasequeryforeveryfilterele-
mentafteryouhaveobtainedthequeryhandle.Youcanmonitortheprocessing ofthequeries
insidetheGeViAPITestClient.
Hereisascreenshot ofadatabasequerysequence whichsetsafilterfortheactiontype
nameCrossSwitch .Themessagesettingthefilterishighlighted. Thefilterhasbeendefined
intheDatabase FiltertaboftheGeViAPITestClient.Afterwards, thefetchoperationwas
startedfromtheDatabase Viewertab.
Composing Filtered Queries
Inthisparagraph youwilllearnhowtocomposesimplefiltersfirstandfinallyextenttheexam-
plefromabove(IteratingoverDatabase Records)withafilterthatwillonlyreturn
================================================================================
PAGE 86
================================================================================
CustomAction messages withcertainprimarykeys.
Prerequisite foratestonyoursystemisthatthereareCrossSwitch ,CustomAction ,andsev-
eralotheractiontypeentriesstoredinsideyourdatabase. Topopulateyourdatabasewith
these,youcansendthemwiththeGeViAPITestClient.DoingafetchintheDatabase Vie-
werstaballowsyoutoverifythattheyarestoredcorrectlyafterwards.
Example Filters
ExampleforafilterthatwillonlyreturnCustomActions :
CDataBaseFilter* myActionNameFilter =
newCDBFTypeName (handle- >m_Handle, "CustomAction", dbc_LIKE);
Aftercreatingyourfilters,youcansendthemwithGeViAPIClients SendDatabaseQuery
method.
CDataBaseAnswer* dbanswer =
m_APIClient- >SendDatabaseQuery (myActionNameFilter, INFINITE);
Makesuretoverifythattheanswercodeisdbac_DBOkandtocalltheDeleteObject method
foryourfilteraftersendingit.
Composing complex filters:
Youcancomposeacomplexfilterbysendingasequence ofmultiplesinglefilterstothedata-
base.Thesefilterswillthenbetreatedasaconjunction (logicalAND)byGeViServer.
Hereisanexampleforacomplexfilterthatonlyreturnsactionswithprimarykeysbetween
500and600.Thisfilterhastobecomposed bysendingtwosimplefilterssequentially:
CDataBaseFilter* myMinFilter =
newCDBFPK_GrtEqu(handle- >m_Handle, 500);
================================================================================
PAGE 87
================================================================================
CDataBaseFilter* myMaxFilter =
newCDBFPK_LowEqu(handle- >m_Handle, 600);
Complete Example ofaFiltered Database Query
TheexampleIteratingoverDatabase RecordswillbeextendedtofilterforCustomActions with
aprimarykeybetween500and600inthisparagraph. Toachievethis,thefiltermessages
havetobesentdirectlyafterretrievingthedatabasehandle.Thefiltersarecreatedina
methodcalledsetActionFilter .Thismessageisthencalledafterobtainingthedatabase
handle.
Examplefilteringmethod:
voidsetActionFilter (CDBAQueryHandle* handle)
{
//Createavectorwithyourfiltermessages
std::vector<CDataBaseFilter*> filterList;
filterList.push_ back( newCDBFPK_GrtEqu(handle- >m_Handle, 500));
filterList.push_ back( newCDBFPK_LowEqu(handle- >m_Handle, 600));
filterList.push_ back( newCDBFTypeName (handle- >m_Handle,
"CustomAction", dbc_LIKE));
//Sendthefilters
for(vector<CDataBaseFilter*>::iterator it=
filterList.begin ();it!=filterList.end ();
it++)
{
CDataBaseAnswer* dbanswer =m_APIClient- >SendDatabaseQuery (*it,INFI-
NITE);
if(dbanswer- >m_AnswerCode !=dbac_DBOk)
{
//Doerrorhandling here!
(*it)->DeleteObject ();
return;
}
================================================================================
PAGE 88
================================================================================
(*it)->DeleteObject ();
}
}
Nowyoucancallthatmethodinyourexamplefromabove:
/*
...
*/
CDataBaseAnswer* dbanswer =m_APIClient- >SendDatabaseQuery (
geviquery, INFINITE);
geviquery- >DeleteObject ();
if(dbanswer- >m_AnswerCode ==dbac_QueryHandle)
{
//Extract thequeryhandefromtheanswer
handle=reinterpret_ cast<CDBAQueryHandle*> (dbanswer);
//SendFilterhere
setActionFilter (handle);
}
/*
...
*/
Asaresult,youshouldseethetwolatestCustomAction recordswithaprimarykeybetween
500and600.Ifyoudonotgetanyresults,youneedtoadoptthefilteringcriteriatomatchrec-
ordsinyourdatabase.
Database queries andfiltering isimplemented intheSDKsexample Delphi/CPP_
SimpleDatabaseClient.
================================================================================
PAGE 89
================================================================================
C#and.Netspecifics
ThischapterdealswiththeGeViSoftSDKs.Netcapabilities andspecifics. Itdescribes the
architecture ofthewrappersandthespecificsoftheusage.
Architecture
TheGeViSoftSDKisdeliveredwitha.Net-Wrapper,allowingyoutodesignapplications in
C#orother.Netlanguages. TheGeutebrueck.GeViSoftSDKNET.Wrapper.dll encapsulates
allthenativeGeViProcAPI.dll calls.Additionally, theGscActionsNet.dll fromtheGeV-
iScopeSDK isneededtoallowforGeViScope interoperability. Thiswrapperencapsulates the
GscActions.dll whichitselfusestheGscDBI.dll.
================================================================================
PAGE 90
================================================================================
Diagram oftheGeViSoft .Netwrappers
Configuring yourIDEforGeViSoft .NetProjects
VisualStudio2008,C#
1.)Addthe.Netwrapperstoyourprojectsreferences.
(Youcandothisbyright-clickingonReferences inyourSolution Explorer.Afterpressing Add
Reference browsetoyour%GEVISOFTSDKPATH% andaddGeViProcAPINET_ 2_0.dll.Ifyou
plantouseGeViScope ActionsalsoaddGscActionsNET_ 2_0.dll.

View File

@@ -0,0 +1,227 @@
================================================================================
PAGE 91
================================================================================
2.)ChangetheplatformsettingstogenerateX86codeifitisnotalreadyset.
IntheConfiguration ManagerselectPlatform ->New->X86andusethisplatformforthe
DebugandReleaseconfigurations.
================================================================================
PAGE 92
================================================================================
3.)ChangetheOutputpathofyourproject.
Theapplication needsthefollowingfilesinitspath:GeviProcAPI.dll ,GscDBI.dll ,GscAc-
tions.dll ,GeViProcAPINET_ X_Y.dll,andGscActionsNET_ X_Y.dll.Allthesefilesarein
your%GEVISOFTSDKPATH% ,sotheoutputpathtoc:\gevisoft\ .
TochangetheOutputpath,eitherright-clickonyourprojectinSolution Explorerandpress
Properties orchooseProject->ProjectName Properties fromthemenu.ThenselecttheBuild
tabandsetyourOutputpath.
================================================================================
PAGE 93
================================================================================
================================================================================
PAGE 94
================================================================================
4.)Addtherequiredusingdirectives toyourprojectssourcefiles.
ForaprojectthatonlyusesGeViSoftactions,youneedatleast.
GEUTEBRUECK.GeViSoftSDKNET.ActionsWrapper
aswellas
GEUTEBRUECK.GeViSoftSDKNET.ActionsWrapper.ActionDispatcher
and,additionally foractionsfromeveryactionclassyouuse,
GEUTEBRUECK.GeViSoftSDKNET.ActionsWrapper.YourActionClass
IfyoualsowanttouseGeViScope actions,makesuretoinclude
GEUTEBRUECK.GeViScope.Wrapper.Actions.ActionDispatcher
and
GEUTEBRUECK.GeViScope.Wrapper.Actions.YourActionClass
Youcanfinddescriptions oftheactionsandtheirrespective actionclassesintheAPIdoc-
umentation orbyinspecting theassemblies withtheObjectBrowser.
VisualStudio2010,C#
Configure yourprojectasdescribed inparagraph VisualStudio2008,C#
Common TaskswithC#
Thischapterdescribes severalcommontasksyoumightneedtocarryoutduringyourdevel-
opment.Thetasksaredescribed inpseudocodeandC#.
================================================================================
PAGE 95
================================================================================
Connecting toaGeViServer
Thisparagraph showsyouwhattasksareneededforconnecting toaGeViServer.
Connecting
PseudoCode
1.Implement theconnectcallbackmethod
2.Createaninstanceofadatabaseconnection object
3.Callthecreate()methodofyourdatabaseconnection object
4.Addyourcallbackdelegatemethodtotheinvocation list
5.Registeryourcallbackmethod
6.Calltheconnectmethodofyourdatabaseconnection object
C#
//Thisistheconnect progress callback method.
//ItiscalledfromwithinGeViSoft duringtheconnection progress
voidmyConnectProgress (objectsender, GeViSoftConnectProgressEventArgs e)
{
Console.WriteLine ("Connecting... {0}of{1}",e.Progress, e.Effort);
}
//myDBisthedatabase objectthatencapsulates
//allGeViSoft interaction.
GeViDatabase myDB=newGeViDatabase ();
//Settheservername,usernameandpassword ofyour
//GeViSoft connection
myDb.Create ("localhost", "sysadmin", "masterkey" );
================================================================================
PAGE 96
================================================================================
//Addyourcallback delegate totheinvocation list
myDb.ConnectProgress +=newGeViSoftConnectProgressEventHandler (
myConnectProgress);
//Register thecallback insideGeViSoft
myDb.RegisterCallback ();
//Nowyoucanconnect totheGeViSoft Server...
myDB.Connect ();
Astraightforward implementation forestablishing aconnection canbefoundinexampleCS_
ConsoleClient .
Message Handling
Afterhavingestablished theconnection, youarereadytoexchange messages andactions
withtheserver.
Creating andSending ofGeViSoft Messages
Therearetwoapproaches thatcanbetakentocreateandsendGeViSoftmessages. Youcan
eithercreateamessageinstancebycallingitsconstructor andthensendthisinstance,or
youcandirectlysendastringrepresentation ofamessagewithoutinstantiating itfirst.
Example 1Creating aninstance ofamessage andsending itafter-
wards
//CreateaCrossSwitch Actionandswitch
//input7tooutput1
GeViAct_ CrossSwitch myAction =newGeViAct_ CrossSwitch (
7,1,GeViTSwitchMode.sm_ Normal);
//Sendtheaction
================================================================================
PAGE 97
================================================================================
myDB.SendMessage (myAction);
 NOTICE
Makesureyouhaveincludedyouractionscorresponding actionclassnamespace inyour
usingdirectives. SeeConfiguring yourIDEforGeViSoft.Net Projects->VS2008,C#
Example 2Directly sending amessage fromastring
myDB.SendMessage ("CrossSwitch (7,1,0)");
Receiving ofGeViSoft Actions
GeViSoftactiondispatching iseventbased.Internally, foreveryactionthatisreceived,an
eventisfired.IfyouwanttoprocesscertainGeViSoftactionmessages insideyourappli-
cation,youcanregisteraneventhandlerforthisparticularaction.Theeventhandleriscalled
whenever anewactionofthattypeisreceived.
IfyouwanttoprocessCrossSwitch actionsinyourapplication, youcanproceedasshownin
thisexample.
Pseudocode:
1.Implement amethodthatiscalledwhenever theeventisfired(actionreceived)
2.Registeryourmethodasaneventhandlerfortheparticularaction
3.RegisteryoureventhandlerinsidetheGeViSoftconnection object.
C#:
//Methodtobecalledonreceiving aCrossSwitch Action
voidmyDB_ReceivedCrossSwitch (objectsender, GeViAct_ CrossSwitchEventArgs
e)
{
================================================================================
PAGE 98
================================================================================
StringreceivedMessage ="CrossSwitch ("+
e.aVideoInput +","+
e.aVideoOutput +","+
e.aSwitchMode +")";
}
//Eventhandler forCrossSwitch Actions
myDB.ReceivedCrossSwitch +=new
GeViAct_ CrossSwitchEventHandler (myDB_ReceivedCrossSwitch);
//Dontforgettoregister thehandler insidetheGeViSoft connection
object
myDB.RegisterCallback ();
Receiving ofGeViSoft Notifications
Besidesactions,GeViSoftalsosendsmessages regardingtheserverstatus,thedatabase
notifications. Youcanreceivethesenotifications byregistering aGeV-
iSoftDatabaseNotificationEventHandler. Theprocedure issimilartotheactionsubscription
asdescribed above.
Hereisanexample:
voidmyDB_DatabaseNotification (objectsender,
GeViSoftDatabaseNotificationEventArgs e)
{
switch(e.ServerNotificationType)
{
caseGeViServerNotification .NFServer_ Disconnected:
//("Disconnected fromServer");
break;
caseGeViServerNotification .NFServer_ GoingShutdown:
//("Server isshutting down");
break;
================================================================================
PAGE 99
================================================================================
caseGeViServerNotification .NFServer_ SetupModified:
//("Server setuphasbeenmodified");
break;
caseGeViServerNotification .NFServer_ NewMessage:
//An“ordinary” actionhasbeenreceived.
//Handlethisactioninaseparate Event-
Handler
//(likemyDB_ReceivedCrossSwitchAction)
break;
}
}
//Youregister thehandler asdescribed before
myDB.DatabaseNotification +=new
GeViSoftDatabaseNotificationEventHandler (myDB_DatabaseNotification);
myDB.RegisterCallback ();
 NOTICE
Pleasenotethatthee.ServerNotificationType equalsGeViServerNotification .NFServer_ New-
Message witheveryGeViSoft actionthatisreceived, regardless ifyoualready subscribed forit
withanother eventhandler.
Handling ofGeViScope Actions
YoucanalsosendGeViScope actionsfromyourGeViSoftapplication. SendingGeViScope
actionsisverysimilartosendingGeViSoftactions.Theonlydifference isthatyouneedto
addtheGeViScope serveraliastotheSendMessage ()methodsparameters.
Sending GeViScope Actions
ExamplesendingaGeViScope message:
================================================================================
PAGE 100
================================================================================
Prerequisite:
1.Connection toGeViScope hasbeenconfigured withGeViSet
2.Theappropriate namespaces areincluded
//Example forGeViScope namespace neededtohandle
//aGeViScope CustomAction
usingGEUTEBRUECK.GeViScope.Wrapper.Actions;
usingGEUTEBRUECK.GeViScope.Wrapper.Actions.SystemActions;
//CreatetheGeViScope action
GscAct_CustomAction myGscAction =new
GscAct_CustomAction (23,"HelloGeViScope!" );
//SendtheActiontothe“GeViScope_ Alias”server
myDB.SendMessage ("GEVISCOPE_ ALIAS",myGscAction);
Receiving GeViScope Actions
Receiving GeViScope actionsisalittledifferentfromhandlingGeViSoftactions.Duetoarchi-
tecturalconstraints, whenever aGeViSoftActionarrives,itisencapsulated intoaspecial
GeViSoftaction.ThisactioniscalledGscAction.
TheGscAction itselfisretrievedlikeanyotherGeViSoftactionbyimplementing amethod
thatprocesses theGscAction andthatisaddedasaneventhandlerforreceivingtheGscAc-
tion.
ThismethodreceivestheoriginalGeViScope Actionembedded intoitsEventArgs whenever
itiscalled.
NormallyyouthenwouldhavetoidentifyandparsetheGeViScope actionandhandleitas
neededbyhand.Foryourconvenience, theGeutebrueck SDKsprovideyouwithadispatcher
thatcansimplifythattask:
ThereisaDispatcher methodforGeViScope actionsthatworksverysimilartothedis-
patchingmechanism usedbyGeViSoft. YoucansimplyaddeventhandlersfortheGeV-
iScopeactionsyouareinterested inandprocesstheminthere.

View File

@@ -0,0 +1,276 @@
================================================================================
PAGE 101
================================================================================
ExampleReceiving andDispatching GeViScope ActionsinsideGeViSoft:
PseudoCode:
1.CreateaninstanceoftheGscActionDispatcher classthatwilldispatchtheGeV-
iScopeactionstoyourhandlers
2.CreateaneventhandlerthatreceivestheGeViSoftGscAction. Insidethisevent
handler,callthedispatchmethodofyourGscActionDispatcher instanceforevery
receivedGscAction.
3.RegistertheGeViSoftGscAction eventhandlerwithyourGeViSoftdatabasecon-
nectionobject.
4.CreateaneventhandlermethodforanyGeViScope actionyouwanttoprocess
5.RegisteryourGeViScope actionseventhandleratthedispatcher.
C#:
//Createaninstance oftheGscActionDispatcher class
GscActionDispatcher myGscDispatcher =newGscActionDispatcher ();
//GscAction eventhandler thatdispatches theGscAction
voidmyDB_ReceivedGscAction (objectsender, GeViAct_ GscActionEventArgs e)
{
myGscDispatcher.Dispatch (e.m_GscAction);
}
//Addthehandler forGscAction (thisiscalledforanynewlyreceived GeV-
iScopeaction)
myDB.ReceivedGscAction +=new
GeViAct_ GscActionEventHandler (myDB_ReceivedGscAction);
//Don'tforgettoregister thecallbacks!
myDB.RegisterCallback ();
//Eventhandler methodfortheGeViScope Action
================================================================================
PAGE 102
================================================================================
voidmyGscDispatcher_ OnCustomAction (objectsender, GscAct_Cus-
tomActionEventArgs e)
{
Console.WriteLine "Received GEVISCOPE CustomAction ("+e.aInt+","
+e.aString +")");
}
//Register theGeViScope CustomAction eventhandler withthedispatcher
myGscDispatcher.OnCustomAction +=new
GscAct_CustomActionEventHandler (myGscDispatcher_ OnCustomAction);
 NOTICE
Youcanfindacomplete example application thatsendsandreceives GeViScope actions inCS_
SimpleGscActionClient.
StateQueries inC#
Thisparagraph describes howyoucansendandreceiveStateQueriesfromwithinC#.Foran
introduction toStateQueriesingeneralseechapterSDK-Usage->StateQueries.
Creating andSending StateQueries
YoucancreateStateQuerieswiththeirrespective constructors andsendthemafterwards by
callingtheSendQuery ()methodofyourdatabaseconnection instance.TheSendQuery ()
methodreturnstheGeViSoftStateAnswerviaanoutparameter.
//myAnswer isfilledbytheSendQuery ()method
//withtheStateAnswer.
GeViMessage myAnswer;
//Thisisyourquery
GeViMessage myQuery =newGeViSQ_GetFirstVideoInput (true,true);
================================================================================
PAGE 103
================================================================================
//Sendthequery
myDB.SendQuery (myQuery, outmyAnswer);
if(myAnswer isGeViSA_VideoInputInfo )
{
//Dosomething withmyanswerhere...
}
SettingtheStateQueryTimeout
ThemethodSendQuery ()blocksuntilthedatabaseanswerisretrievedfromtheGeViServer.
Iftheserverdoesnotanswer,thisleadstoadeadlock. Amaximum timeouttimerforthe
SendQuery existstopreventwaitingendlesslyforadatabaseanswer.Bydefault,thetimeout
issetto3000ms.YoucanchangethistimeoutgloballybycallingtheSetQueryTimeoutInMs
()methodofyourdatabaseconnection instance.
ExampleSettingtheSendQuery timeouttoonesecond:
myDB.SetQueryTimeoutInMs (1000);
Enumeration ofallvideoinputs
Pseudocode
1.Createastatequerytogetthefirstvideoinput(classGeViSQ_GetFirstVideoInput)
2.Sendthequerytotheserver
3.Iftheanswerisavalidinputchannelthen
4.REPEAT
a)Gettheactualchannelsinformation fromtheanswerandprocessitasneeded
(e.g.printitout,storeittoalist)
b)CreateastatequerytogetthenextvideoInput(classGeViSQ_
================================================================================
PAGE 104
================================================================================
GetNextVideoInput)
c)Sendthequery
5.UNTILthereisnomorevideoinputleft
C#Example:
private List<GeViSA_VideoInputInfo >getVideoInputsList ()
{
List<GeViSA_VideoInputInfo >myVideoInputs =
newList<GeViSA_VideoInputInfo >(0);
if(myDB!=null)
{
GeViMessage myAnswer;
myDB.SendQuery (newGeViSQ_GetFirstVideoInput (true,true),
outmyAnswer);
while(myAnswer isGeViSA_VideoInputInfo )
{
inttempID=(myAnswer asGeViSA_VideoInputInfo ).sG-
lobalID;
myVideoInputs.Add (myAnswer asGeViSA_VideoInputInfo );
myDB.SendQuery (
newGeViSQ_GetNextVideoInput (true,true,tem-
pID),
outmyAnswer);
}
}
returnmyVideoInputs;
}
 NOTICE
Youcanfindacomplete example application thatsendsStateQueries andreceives StateActions
inCS_SimpleClient. Thisexample showsyouhowtoenumerate videoin-andoutputs aswellas
digitalIO.
================================================================================
PAGE 105
================================================================================
Supported Development Platforms
TheSDKisdesignedforandtestedtoworkwiththefollowingdevelopment environments:
lMicrosoftVisualStudio2008,C++
lMicrosoftVisualStudio2010,C++
lMicrosoftVisualStudio2008,C#
lMicrosoftVisualStudio2010,C#
lEmbarcadero RADStudioXE,Delphi
================================================================================
PAGE 106
================================================================================
Examples
TheSDKisshippedwithvariousexamples showingyouhowtoimplement commontasks.
Theexamples aregroupedbyfunctionality andplatform.
ByFunctionality
Connecting/disconnecting toGeViServer
lCPP_SimpleActionClient (VS2008/VS2010, C++)
lCPP_SimpleClient (VS2008/VS2010, C++)
lCPP_SimpleDatabaseClient (VS2008/VS2010, C++)
lCPP_MonitoredConnectionClient (VS2008/VS2010, C++)
lCPP_ConsoleClient (VS2008/VS2010, C++)
lCS_SimpleActionClient (VS2008/VS2010, C#)
lCS_SimpleClient (VS2008/VS2010, C#)
lCS_SimpleDatabaseClient (VS2008/VS2010, C#)
lCS_SimpleGscActionClient (VS2008/VS2010, C#)
lDelphi_SimpleActionClient (RADStudioXE)
lDelphi_SimpleClient (RADStudioXE)
lDelphi_SimpleDatabaseClient (RADStudioXE)
lDelphi_ConsoleClient (RADStudioXE)
Monitoring aGeViSoft connection
lCPP_MonitoredConnectionClient (VS2008/VS2010, C++)
Automatically reconnecting aGeViSoft connection onloss
lCPP_MonitoredConnectionClient (VS2008/VS2010, C++)
Sending/receiving ofGeViSoft actions/messages
lCPP_SimpleActionClient (VS2008/VS2010, C++)
lCPP_MonitoredConnectionClient (VS2008/VS2010, C++)
lCPP_SimpleClient (VS2008/VS2010, C++)
================================================================================
PAGE 107
================================================================================
lCPP_SimpleDatabaseClient (VS2008/VS2010, C++)
lCPP_ConsoleClient (VS2008/VS2010, C++)
lCS_SimpleActionClient (VS2008/VS2010, C#)
lCS_SimpleClient (VS2008/VS2010, C#)
lCS_SimpleDatabaseClient (VS2008/VS2010, C#)
lCS_ConsoleClient (VS2008/VS2010, C#)
lDelphi_SimpleActionClient (RADStudioXE)
lDelphi_SimpleClient (RADStudioXE)
lDelphi_SimpleDatabaseClient (RADStudioXE)
lDelphi_ConsoleClient (RADStudioXE)
Sending/receiving ofGeViScope actions/messages
lCS_SimpleGscActionClient (VS2008/VS2010, C#)
Receiving anddispatching ofservernotifications
lCPP_SimpleActionClient (VS2008/VS2010, C++)
lCPP_MonitoredConnectionClient (VS2008/VS2010, C++)
lCPP_SimpleDatabaseClient (VS2008/VS2010, C++)
lCPP_ConsoleClient (VS2008/VS2010, C++)
lCS_SimpleActionClient (VS2008/VS2010, C#)
lCS_SimpleClient (VS2008/VS2010, C#)
lCS_SimpleDatabaseClient (VS2008/VS2010, C#)
lCS_SimpleGscActionClient (VS2008/VS2010, C#)
lCS_ConsoleClient (VS2008/VS2010, C#)
lDelphi_SimpleActionClient (RADStudioXE)
lDelphi_SimpleClient (RADStudioXE)
Converting between ASCIIandbinaryrepresentation ofmessages
lCPP_SimpleActionClient (VS2008/VS2010, C++)
lCPP_SimpleDatabaseClient (VS2008/VS2010, C++)
lCPP_ConsoleClient (VS2008/VS2010, C++)
lDelphi_SimpleActionClient (RADStudioXE)
lDelphi_SimpleDatabaseClient (RADStudioXE)
lDelphi_ConsoleClient (RADStudioXE)
================================================================================
PAGE 108
================================================================================
Sending/receiving statequeries andanswers
lCPP_SimpleClient (VS2008/VS2010, C++)
lCS_SimpleGscActionClient (VS2008/VS2010, C#)
lDelphi_SimpleClient (RADStudioXE)
Enumeration ofvideoinputandoutputchannels
lCPP_SimpleClient (VS2008/VS2010, C++)
lCS_SimpleClient (VS2008/VS2010, C#)
lDelphi_SimpleClient (RADStudioXE)
Enumeration ofdigitalIOcontacts
lCPP_SimpleClient (VS2008/VS2010, C++)
lCS_SimpleClient (VS2008/VS2010, C#)
lDelphi_SimpleClient (RADStudioXE)
Sending database actionqueries
lCPP_SimpleDatabaseClient (VS2008/VS2010, C++)
lCS_SimpleDatabaseClient (VS2008/VS2010, C#)
lDelphi_SimpleDatabaseClient (RADStudioXE)
Sending database alarmqueries
lCPP_SimpleDatabaseClient (VS2008/VS2010, C++)
lCS_SimpleDatabaseClient (VS2008/VS2010, C#)
lDelphi_SimpleDatabaseClient (RADStudioXE)
Navigating through database entries
lCPP_SimpleDatabaseClient (VS2008/VS2010, C++)
lCS_SimpleDatabaseClient (VS2008/VS2010, C#)
lDelphi_SimpleDatabaseClient (RADStudioXE)
Converting database answers frombinarytoASCIIrepresentation
lCPP_SimpleDatabaseClient (VS2008/VS2010, C++)
lDelphi_SimpleDatabaseClient (RADStudioXE)
================================================================================
PAGE 109
================================================================================
Building GeViSoft messages fromuserinput
lCPP_ConsoleClient (VS2008/VS2010, C++)
lCS_ConsoleClient (VS2008/VS2010, C#)
lDelphi_ConsoleClient (RADStudioXE)
================================================================================
PAGE 110
================================================================================
ByPlatform
Microsoft VisualStudio2008/2010, C++,MFC
CPP_SimpleActionClient
lConnecting/disconnecting toGeViServer
lSending/receiving ofactions
lReceiving anddispatching ofservernotifications
lConverting betweenASCIIandbinaryrepresentation ofmessages.
CPP_MonitoredConnectionClient
lConnecting/disconnecting toGeViServer
lSending/receiving ofactions
lReceiving anddispatching ofservernotifications
lConverting betweenASCIIandbinaryrepresentation ofmessages
lMonitoring aGeViSoftconnection
lAutomatically reconnecting aGeViSoftconnection onloss
CPP_SimpleClient
lConnecting/disconnecting toGeViServer
lSending/receiving statequeriesandanswers
lSending/receiving ofactions
lEnumeration ofvideoinputandoutputchannels
lEnumeration ofdigitalIOcontacts
lReceiving anddispatching ofservernotifications
CPP_SimpleDatabaseClient
lConnecting/disconnecting toGeViServer
lSendingdatabaseactionqueries
lSendingdatabasealarmqueries
lNavigating throughdatabaseentries
lReceiving databaseentries
lConverting databaseanswersfrombinarytoASCIIrepresentation

View File

@@ -0,0 +1,78 @@
================================================================================
PAGE 111
================================================================================
Microsoft VisualStudio2008/2010, C++,Console
CPP_ConsoleClient
lConnecting/disconnecting toGeViServer
lBuildingGeViSoftmessages fromuserinput
lReceiving anddisplaying messages
lConverting betweenASCIIandbinaryrepresentation ofmessages
Microsoft VisualStudio2008/2010, C#WinForms
CS_SimpleActionClient
lConnecting/disconnecting toGeViServer
lSending/receiving ofactions
lReceiving anddispatching ofservernotifications
CS_SimpleClient
lConnecting/disconnecting toGeViServer
lSending/receiving statequeriesandanswers
lSending/receiving ofactions
lEnumeration ofvideoinputandoutputchannels
lEnumeration ofdigitalIOcontacts
lReceiving anddispatching ofservernotifications
CS_SimpleDatabaseClient
lConnecting/disconnecting toGeViServer
lSendingdatabaseactionqueries
lSendingdatabasealarmqueries
lNavigating throughdatabaseentries
lReceiving databaseentries
CS_SimpleGscActionClient
lConnecting/disconnecting toGeViServer
lCreating/Dispatching GeViScope Actions
================================================================================
PAGE 112
================================================================================
lCreatingGeViScope ActionEventHandlers
lAdding/Removing EventHandlersonruntime
Microsoft VisualStudio2008/2010, C#,Console
CS_ConsoleClient
lConnecting/disconnecting toGeViServer
lBuildingGeViSoftmessages fromuserinput
lReceiving anddisplaying messages
lComposing GeViSoftactionsfromstrings
Embarcadero RADStudioXE,Delphi,VCL
Delphi_SimpleActionClient
lConnecting/disconnecting toGeViServer
lSending/receiving ofactions
lReceiving anddispatching ofservernotifications
lConverting betweenASCIIandbinaryrepresentation ofmessages.
Delphi_SimpleClient
lConnecting/disconnecting toGeViServer
lSending/receiving statequeriesandanswers
lSending/receiving ofactions
lEnumeration ofvideoinputandoutputchannels
lEnumeration ofdigitalIOcontacts
lUsageofvideoinputandoutputdescriptors
lUsageofdigitalcontactinputandoutputdescriptors
lReceiving anddispatching ofservernotifications
Delphi_SimpleDatabaseClient
lConnecting/disconnecting toGeViServer
lSendingdatabaseactionqueries
lSendingdatabasealarmqueries
================================================================================
PAGE 113
================================================================================
lNavigating throughdatabaseentries
lReceiving databaseentries
lConverting databaseanswersfrombinarytoASCIIrepresentation
Embarcadero RADStudioXE,Delphi,Console
Delphi_ConsoleClient
lConnecting/disconnecting toGeViServer
lBuildingGeViSoftmessages fromuserinput
lReceiving anddisplaying messages
lConverting betweenASCIIandbinaryrepresentation ofmessages

View File

@@ -0,0 +1,202 @@
{
"total_pages": 113,
"chunks": [
{
"chunk_number": 1,
"filename": "chunk_001_pages_1-10.txt",
"pages": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
],
"page_range": "1-10"
},
{
"chunk_number": 2,
"filename": "chunk_002_pages_11-20.txt",
"pages": [
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"page_range": "11-20"
},
{
"chunk_number": 3,
"filename": "chunk_003_pages_21-30.txt",
"pages": [
21,
22,
23,
24,
25,
26,
27,
28,
29,
30
],
"page_range": "21-30"
},
{
"chunk_number": 4,
"filename": "chunk_004_pages_31-40.txt",
"pages": [
31,
32,
33,
34,
35,
36,
37,
38,
39,
40
],
"page_range": "31-40"
},
{
"chunk_number": 5,
"filename": "chunk_005_pages_41-50.txt",
"pages": [
41,
42,
43,
44,
45,
46,
47,
48,
49,
50
],
"page_range": "41-50"
},
{
"chunk_number": 6,
"filename": "chunk_006_pages_51-60.txt",
"pages": [
51,
52,
53,
54,
55,
56,
57,
58,
59,
60
],
"page_range": "51-60"
},
{
"chunk_number": 7,
"filename": "chunk_007_pages_61-70.txt",
"pages": [
61,
62,
63,
64,
65,
66,
67,
68,
69,
70
],
"page_range": "61-70"
},
{
"chunk_number": 8,
"filename": "chunk_008_pages_71-80.txt",
"pages": [
71,
72,
73,
74,
75,
76,
77,
78,
79,
80
],
"page_range": "71-80"
},
{
"chunk_number": 9,
"filename": "chunk_009_pages_81-90.txt",
"pages": [
81,
82,
83,
84,
85,
86,
87,
88,
89,
90
],
"page_range": "81-90"
},
{
"chunk_number": 10,
"filename": "chunk_010_pages_91-100.txt",
"pages": [
91,
92,
93,
94,
95,
96,
97,
98,
99,
100
],
"page_range": "91-100"
},
{
"chunk_number": 11,
"filename": "chunk_011_pages_101-110.txt",
"pages": [
101,
102,
103,
104,
105,
106,
107,
108,
109,
110
],
"page_range": "101-110"
},
{
"chunk_number": 12,
"filename": "chunk_012_pages_111-113.txt",
"pages": [
111,
112,
113
],
"page_range": "111-113"
}
]
}