/// <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(); }
/// <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"); }
/// <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); } } }
/// <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; } }); }
/// <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(); }
public static void updateClientStatus(KinectStatusPackage pKSP) { OnClientKinectStatusChangeEvent(pKSP); }
/// <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); }