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,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.