Ejemplo n.º 1
0
        /// <summary>
        /// sets a status report to the server
        /// </summary>
        /// <param name="pTargetIP">the target ip</param>
        /// <param name="pStatusPackage">the status package</param>
        public void startStatusRequest(String pTargetIP, KinectStatusPackage pStatusPackage)
        {
            Task <String> t = new Task <string>(() => sendRequestThread(@"http://" + pTargetIP + @"/KINECTSTATUS", pStatusPackage, 5000));

            t.ContinueWith(TaskFaultedHandler, TaskContinuationOptions.OnlyOnFaulted);
            t.Start();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// gets fired when the server recieves a kinect status package from the client
        /// </summary>
        /// <param name="input">input stream</param>
        /// <returns>a status message</returns>
        public String responseKinectStatus(Stream input)
        {
            // deserialize
            BinaryFormatter     formatter = new BinaryFormatter();
            KinectStatusPackage status    = (KinectStatusPackage)formatter.Deserialize(input);

            LogManager.writeLogDebug("[Webservice:ServerDefinition] Kinect Status Package recieved from ClientID " + status.clientID);
            OnKinectStatusPackageEvent(status);

            return("KINECT STATUS RECIEVED");
        }
Ejemplo n.º 3
0
 /// <summary>
 /// sends a status report of the kinect to the server
 /// </summary>
 /// <param name="pKinectStatusPackage">the status package</param>
 internal void sendStatusToServer(KinectStatusPackage pKinectStatusPackage)
 {
     if (ConfigManager._ClientConfigObject.clientRequestObject.isConnected)
     {
         if (Config.ConfigManager._ClientConfigObject.clientConnectionConfig.targetGateway != String.Empty)
         {
             _WebserviceSender.startStatusRequest(Config.ConfigManager._ClientConfigObject.clientConnectionConfig.targetGateway, pKinectStatusPackage);
         }
         else
         {
             _WebserviceSender.startStatusRequest(Config.ConfigManager._ClientConfigObject.clientConnectionConfig.targetIP, pKinectStatusPackage);
         }
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// updates the visible list of clients in the ConnectionStatusListView and
        /// implements the logic for the listview
        /// </summary>
        private void UpdateClientConnectionSatus()
        {
            List <ClientConfigObject> connectedClients = _DataManager.getCurrentKinectClients();

            this.Dispatcher.Invoke(() => {
                //connection status
                ImageSource conStatOrig, kinStatOrig;

                ConnectionStatusListView.Items.Clear();
                foreach (ClientConfigObject cco in connectedClients)
                {
                    //mute button
                    ImageSource bgm;
                    if (cco.clientRequestObject.isMuted)
                    {
                        bgm = (ImageSource) new ImageSourceConverter().ConvertFrom(new Uri(@"pack://*****:*****@"pack://siteoforigin:,,,/Resources/video_256_green.png"));
                    }

                    // kinect connection status
                    if (!statusList.Exists(t => t.clientID == cco.ID))
                    {
                        if (cco.clientRequestObject.isConnected)
                        {
                            conStatOrig = (ImageSource) new ImageSourceConverter().ConvertFrom(new Uri(@"pack://*****:*****@"pack://siteoforigin:,,,/Resources/disconnect_256_orange.png"));
                        }
                        else
                        {
                            conStatOrig = (ImageSource) new ImageSourceConverter().ConvertFrom(new Uri(@"pack://*****:*****@"pack://siteoforigin:,,,/Resources/disconnect_256_orange.png"));
                        }
                    }
                    else
                    {
                        KinectStatusPackage kSp = statusList.Find(t => t.clientID == cco.ID);
                        if (cco.clientRequestObject.isConnected && kSp.isKinectActive)
                        {
                            conStatOrig = (ImageSource) new ImageSourceConverter().ConvertFrom(new Uri(@"pack://*****:*****@"pack://siteoforigin:,,,/Resources/connect_256_green.png"));
                        }
                        else if (cco.clientRequestObject.isConnected && !kSp.isKinectActive)
                        {
                            conStatOrig = (ImageSource) new ImageSourceConverter().ConvertFrom(new Uri(@"pack://*****:*****@"pack://siteoforigin:,,,/Resources/disconnect_256_orange.png"));
                        }
                        else
                        {
                            conStatOrig = (ImageSource) new ImageSourceConverter().ConvertFrom(new Uri(@"pack://*****:*****@"pack://siteoforigin:,,,/Resources/disconnect_256_orange.png"));
                        }
                    }

                    //add item
                    ConnectionStatusListviewItem cl = new ConnectionStatusListviewItem()
                    {
                        CCO            = cco,
                        ID             = cco.ID,
                        name           = cco.name,
                        IP             = cco.ownIP,
                        kinStatus      = kinStatOrig,
                        conStatus      = conStatOrig,
                        master         = cco.clientKinectConfig.isMaster,
                        mute           = cco.clientRequestObject.isMuted,
                        backgroundMute = bgm,
                    };
                    ConnectionStatusListView.Items.Add(cl);
                }

                //check for calibrated planes
                planesSet = Config.ServerConfigManager._ServerConfigObject.serverAlgorithmConfig.calibratedPlanes.Exists(testc => testc.isFloor == true);
                if (planesSet == true)
                {
                    this._imagePlanesSet.Source = (ImageSource) new ImageSourceConverter().ConvertFrom(new Uri(@"pack://*****:*****@"pack://siteoforigin:,,,/Resources/cross_256_orange.png"));
                }

                //check for master
                masterSet = connectedClients.Exists(t => t.clientKinectConfig.isMaster == true);
                if (masterSet == true)
                {
                    this._imageMasterKinectSet.Source = (ImageSource) new ImageSourceConverter().ConvertFrom(new Uri(@"pack://*****:*****@"pack://siteoforigin:,,,/Resources/cross_256_orange.png"));
                }

                //check for reference table
                if (connectedClients.Count == 0)
                {
                    referenceTableSet = false;
                }
                else
                {
                    referenceTableSet = connectedClients.Where(t => t.clientKinectConfig.isMaster == false).All(t =>
                                                                                                                t.clientKinectConfig.transformationMatrix[0, 0] != 1 ||
                                                                                                                t.clientKinectConfig.transformationMatrix[1, 1] != 1 ||
                                                                                                                t.clientKinectConfig.transformationMatrix[2, 2] != 1);
                }

                if (referenceTableSet)
                {
                    this._imageReferenceTableSet.Source = (ImageSource) new ImageSourceConverter().ConvertFrom(new Uri(@"pack://*****:*****@"pack://siteoforigin:,,,/Resources/cross_256_orange.png"));
                }

                //logic for the usability of the calibration buttons
                if ((masterSet == true && referenceTableSet == true) || connectedClients.Count == 0)
                {
                    this._ButtonFetchData.IsEnabled = true;
                }
                else
                {
                    this._ButtonFetchData.IsEnabled = false;
                }

                if (masterSet == true || connectedClients.Count == 0)
                {
                    this._ButtonCalibrateAll.IsEnabled = true;
                }
                else
                {
                    this._ButtonCalibrateAll.IsEnabled = false;
                }

                if ((masterSet == true && planesSet == true && referenceTableSet == true) || connectedClients.Count == 0)
                {
                    this._ButtonScan.IsEnabled = true;
                }
                else
                {
                    this._ButtonScan.IsEnabled = false;
                }

                if ((_DataManager.currentReferenceCloud != null && masterSet == true || connectedClients.Count == 0))
                {
                    this._ButtonSelectPlanes.IsEnabled = true;
                }
                else
                {
                    this._ButtonSelectPlanes.IsEnabled = false;
                }

                if ((Config.ServerConfigManager._ServerConfigObject.serverAlgorithmConfig.calibratedPlanes.Count > 0 && _DataManager.currentReferenceCloud != null && masterSet == true) || connectedClients.Count == 0)
                {
                    this._ButtonEuclidianScan.IsEnabled = true;
                }
                else
                {
                    this._ButtonEuclidianScan.IsEnabled = false;
                }
            });
        }
Ejemplo n.º 5
0
 /// <summary>
 /// gets called whenever the kinects report a new status update
 /// </summary>
 /// <param name="pKSP">the package containing the status info</param>
 void LogManager_OnClientKinectStatusChangeEvent(KinectStatusPackage pKSP)
 {
     statusList.RemoveAll(t => t.clientID == pKSP.clientID);
     statusList.Add(pKSP);
     UpdateClientConnectionSatus();
 }
Ejemplo n.º 6
0
 public static void updateClientStatus(KinectStatusPackage pKSP)
 {
     OnClientKinectStatusChangeEvent(pKSP);
 }
Ejemplo n.º 7
0
 /// <summary>
 /// gets fired whenever a status package was recieved
 /// </summary>
 /// <param name="EventArgs">the status package</param>
 void ServerWebserviceContract_OnKinectStatusPackageEvent(KinectStatusPackage EventArgs)
 {
     Log.LogManager.updateClientStatus(EventArgs);
 }