Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Tip

The plugin can be selected during setup and will automatically install the files in the correct locations.

The BVMS Plugin Message Payload

The following values are passed to BVMS every time the Alarm that the camera is responding to changes. The payload has 10 available values but currently only 5 are configured.

Data IndexValue

1

The id of the camera within BVMS
2The numeric id of the track within Witness
3The alarm description for the alarm being watched by the camera
4The classification of the track
5The speed of the track in m/s

Configuring the BVMS Plugin

...

  1. Open the BVMS Config Client
  2. Add at least one Virtual Input
  3. Add a client script to capture and process the alarm data from the BVMS plugin
  4. Right click on the ClientScript node and click New Scriptlet
    Image Added
  5. Replace the Scriptlet with the following code

    Panel
    Code Block
    languagec#
    themeRDark
    titleExample BVMS ClientScript
    collapsetrue
    
    using System.Text;
    
    public void WorkstationLogon()
        {
            System.Threading.Thread.Sleep(3000);//wait till logged in has been processed
            try
            {
                RemoteServerApi RSApi= new RemoteServerApi("localhost:5390","admin","");// connect to the server
                MyEventReceiver myRec= new MyEventReceiver(Api); //Api is the current Client Api, hand over to the EventReceiver Instance
                RSApi.EventManager.Register(myRec);//register for all Events 
            }
            catch (Exception eq)
            { 
                Api.ApplicationManager.ShowMessage("Error in Logon Script " + eq.ToString());
            }
            Api.ApplicationManager.ShowMessage("logon finished");
        }
    
        public class MyEventReceiver:EventReceiver
        {
            private IClientApi MyApi;
            static StringBuilder ViString;
    
            public MyEventReceiver(IClientApi api)
            {
                 MyApi=api;
                ViString= new StringBuilder();
            }
    
            public override void OnEvent(EventData e)
            {
                ViString.Clear();
                if (e.Type=="DataInputEvent")   //intercept when virtual input data is received
                {
                    //show the exect data presented via the Virtual Input on the operator station
                    // Here is the Navtech info format
                    ViString.Append("Received Data from Navtech Radar:");
                    ViString.AppendLine();
                    ViString.Append("IncidentCamera: ");
    				ViString.Append(e["Data1"]);
                    ViString.AppendLine();
                    ViString.Append("TargetID: ");
    				ViString.Append(e["Data2"]);
                    ViString.AppendLine();
                    ViString.Append("Alarm Description: ");
    				ViString.Append(e["Data3"]);
                    ViString.AppendLine();
                    ViString.Append("Target Classification: ");
    				ViString.Append(e["Data4"]);
                    ViString.AppendLine();
                    ViString.Append("Target Speed: ");
    				ViString.Append(e["Data5"]);
    				//Uncomment the following line to show the incoming data
                    //MyApi.ApplicationManager.ShowMessage(ViString.ToString());
    
                    MyApi.ContentManager.SetGranularity(1,1);
                    Camera c= MyApi.CameraManager.GetCameraByLogicalNumber(int.Parse(e["Data1"]));
                    ImagePane p=new ImagePane(1,int.Parse(e["Data1"]));
                    MyApi.ContentManager.EnterFullscreen(1);
                    MyApi.ContentManager.DisplayCamera(p,c); //show camera full screen on Monitor 1
                }                            
            }
        }
    Note

    The preceding This code is for testing purposes only. It will force the the camera stream associated with the incoming Witness alarm data full screen every time the message is received.

  6. Assign the script to the workstation
  7. Save the config and activate the configuration

 

 

 

...

Configuring Witness

After a camera has been configured in Witness the following fields need to be edited to align the configuration with BVMS

Image Added

User ID

This is the BVMS Virtual Input that will be closed when a camera movement is triggered by Witness

External System ID

This is the BVMS camera id that relates to this camera and can be found by opening the BVMS Config Client and opening the Cameras and Recording page

Filter by label (Content by label)
showLabelsfalse
max5
spacesWIT
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel in ("witness","camera","canary","bvms","cctv","kb-how-to-article") and type = "page" and space = "WIT"
labelscanary BVMS camera witness

...