Ver código fonte

Merge refs/heads/sessions into refs/heads/bufixes-ketler-reading

jancoow 10 anos atrás
pai
commit
3513ac60fa

+ 66 - 0
Proftaak Remote Healthcare/FietsClientV2/Forms/DoctorSessionUC.cs

@@ -7,6 +7,8 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using System.Windows.Forms.DataVisualization.Charting;
+using FietsLibrary.JSONObjecten;
 
 namespace FietsClient.Forms
 {
@@ -50,5 +52,69 @@ namespace FietsClient.Forms
         {
             DoctorModel.doctorModel.tcpConnection.SendStartStopSession(false, patientID);
         }
+
+        public void ClearOldSession()
+        {
+            if (InvokeRequired)
+                Invoke(new Action(() => ClearOldSession()));
+            else
+            {
+                speedPoints.Clear();
+                bpmPoints.Clear();
+                rpmPoints.Clear();
+                pulseBox.Clear();
+                rpmInfoBox.Clear();
+                speedInfoBox.Clear();
+                distanceInfoBox.Clear();
+                requestedBox.Clear();
+                energyInfoBox.Clear();
+                timeBox.Clear();
+                actualBox.Clear();
+            }
+            
+        }
+
+        private List<DataPoint> speedPoints = new List<DataPoint>();
+        private List<DataPoint> bpmPoints = new List<DataPoint>();
+        private List<DataPoint> rpmPoints = new List<DataPoint>();
+
+        public void HandleSessionBikeData(Measurement data)
+        {
+
+            if (InvokeRequired)
+            {
+                Invoke((new Action(() => HandleSessionBikeData(data))));
+            }
+            else
+            {
+                //fill fields
+                pulseBox.Text = data.pulse.ToString();
+                rpmInfoBox.Text = data.rpm.ToString();
+                speedInfoBox.Text = data.speed.ToString();
+                distanceInfoBox.Text = data.distance.ToString();
+                requestedBox.Text = data.requestedPower.ToString();
+                energyInfoBox.Text = data.energy.ToString();
+                timeBox.Text = data.time.ToString();
+                actualBox.Text = data.actualPower.ToString();
+
+                //fill graph speed
+                this.speedChart.Series[0].Points.Clear();
+                for (int i = 0; i < speedPoints.Count; i++)
+                    this.speedChart.Series[0].Points.Add(speedPoints[i]);
+                this.speedChart.Update();
+
+                //fill graph pulse
+                this.bpmChart.Series[0].Points.Clear();
+                for (int i = 0; i < bpmPoints.Count; i++)
+                    this.bpmChart.Series[0].Points.Add(bpmPoints[i]);
+                this.bpmChart.Update();
+
+                //fill graph rpm
+                this.rpmChart.Series[0].Points.Clear();
+                for (int i = 0; i < rpmPoints.Count; i++)
+                    this.rpmChart.Series[0].Points.Add(rpmPoints[i]);
+                this.rpmChart.Update();
+            }
+        }
     }
 }

+ 1 - 1
Proftaak Remote Healthcare/FietsClientV2/Forms/PatientForm.cs

@@ -253,7 +253,7 @@ namespace FietsClient
 
         private void button1_Click(object sender, EventArgs e)
         {
-            _connection.StartNewSession();
+            _connection.StartNewSession(false, _connection.currentData.GetUserID());
         }
 
         private void button2_Click(object sender, EventArgs e)

+ 43 - 11
Proftaak Remote Healthcare/FietsClientV2/TcpConnection.cs

@@ -201,7 +201,19 @@ namespace FietsClient
 
                             break;
                         case "2":
-                            currentData.GetSessions().Last().AddMeasurement(JsonConvert.DeserializeObject<Measurement>(response_parts[1]));
+                            dynamic DynMeasurement = JsonConvert.DeserializeObject<dynamic>(response_parts[2].TrimEnd('\0'));
+                            Measurement outputMeasurement = new Measurement((int)DynMeasurement.pulse, (int)DynMeasurement.rpm, (int)DynMeasurement.speed, (int)DynMeasurement.distance, (int)DynMeasurement.requestedPower, (int)DynMeasurement.energy, (int)DynMeasurement.actualPower, (int)DynMeasurement.time);
+                            currentData.GetSessions().Last().AddMeasurement(outputMeasurement);
+                            Forms.DoctorSessionUC sessionUC = null;
+                            bool b = DoctorModel.doctorModel.doctorSessions.TryGetValue(response_parts[1], out sessionUC);
+                            if (b)
+                            {
+                                sessionUC.HandleSessionBikeData(outputMeasurement);
+                            }
+                                break;
+                        case "3":
+                            
+                            
                             break;
                         case "7":
                             //                                        sender              receiver          message
@@ -246,18 +258,25 @@ namespace FietsClient
                             }
                             break;
                         case "10":
-                            response_parts[1] = response_parts[1].TrimEnd('\0');
                             if (!currentData.isDoctor)
                             {
+                                PatientModel.patientModel.CurrentDoctorID = response_parts[3].TrimEnd('\0');
                                 if (response_parts[1] == "1")
                                 {
-                                    StartNewSession();
+                                    StartNewSession(false, currentData.GetUserID());
                                 }
                                 else if (response_parts[1] == "0")
                                 {
                                     StopSessoin();
                                 }
                             }
+                            else
+                            {
+                                if (response_parts[1] == "1") 
+                                {
+                                    StartNewSession(true, response_parts[2]);
+                                }
+                            }
                             break;
 
                     }
@@ -265,12 +284,24 @@ namespace FietsClient
             }
         }
 
-        public void StartNewSession()
+        public void StartNewSession(bool isDoctor, string PatientID)
         {
             Session session = new Session(currentData.sessions.Count + 1);
             currentData.sessions.Add(session);
-            SendNewSession();
-            PatientModel.patientModel.startAskingData();
+            if (!isDoctor)
+            {
+                SendNewSession();
+                PatientModel.patientModel.startAskingData();
+            }
+            else if(isDoctor)
+            {
+                Forms.DoctorSessionUC sessionUC = null;
+                bool b = DoctorModel.doctorModel.doctorSessions.TryGetValue(PatientID, out sessionUC);
+                if (b)
+                {
+                    sessionUC.ClearOldSession();
+                }
+            }
         }
 
         public void StopSessoin()
@@ -305,8 +336,9 @@ namespace FietsClient
 
         public void SendNewMeasurement()
         {
-            // send command ( cmdID | username )
-            SendString("5|" + userID + "|" + FietsLibrary.JsonConverter.SerializeLastMeasurement(currentData.GetSessions().Last().GetLastMeasurement()) + "|");
+            // send command ( usernamePatient | usernameCurrentDoctor | data )
+            string currentDoctor = PatientModel.patientModel.CurrentDoctorID;
+            SendString("5|" + userID + "|" + currentDoctor + "|" + FietsLibrary.JsonConverter.SerializeLastMeasurement(currentData.GetSessions().Last().GetLastMeasurement()) + "|");
         }
 
         public void SendChatMessage(string[] data)
@@ -335,9 +367,9 @@ namespace FietsClient
 	public void SendStartStopSession(bool startstop, string PatientUsername)
         {
             if (startstop)
-                SendString("10|1|" + PatientUsername + "|");
+                SendString("10|1|" + PatientUsername + "|" + currentData.GetUserID() + "|");
             else
-                SendString("10|0|" + PatientUsername + "|");
+                SendString("10|0|" + PatientUsername + "|" + currentData.GetUserID() + "|");
             
         }
         public void SendDistance(int distance)
@@ -371,4 +403,4 @@ namespace FietsClient
             }
         }
     }
-}
+}

+ 36 - 14
Proftaak Remote Healthcare/ServerV2/AppGlobal.cs

@@ -58,7 +58,7 @@ namespace ServerV2
             TestMethode();
             while (true)
             {
-                
+
                 Console.WriteLine(FietsLibrary.JsonConverter.GetUserSessions(users.ElementAt(1)));
                 Console.WriteLine("waiting for clients...");
                 TcpClient client = listener.AcceptTcpClient();
@@ -108,7 +108,7 @@ namespace ServerV2
         {
             File.WriteAllText(@"JSON Files\UserData.Json", JsonConvert.SerializeObject(users));
         }
-        
+
 
         private void receive(object obj)
         {
@@ -181,7 +181,7 @@ namespace ServerV2
                         currentUser = users.First(item => item.id == response[1]);
                         Communication.Send("1|" + FietsLibrary.JsonConverter.GetUserSessions(currentUser), sslStream);
                         break;
-                    case "2":   //Livedata PUSHEN/OPVRAGEN
+                    case "2":   //Livedata OPVRAGEN
                         currentUser = users.First(item => item.id == response[1]);
                         string lastMeasurement = FietsLibrary.JsonConverter.GetLastMeasurement(currentUser.sessions.Last());
                         Communication.Send("2|" + lastMeasurement + "|", sslStream);
@@ -193,7 +193,6 @@ namespace ServerV2
                             {
                                 if (u.id == response[1])
                                 {
-                                    
                                     if (u.GetSessions().Count != 0)
                                     {
                                         int sessionID = u.GetSessions().LastOrDefault().id;
@@ -203,21 +202,37 @@ namespace ServerV2
                                     {
                                         u.AddSession(new Session(1));
                                     }
-                                        
                                 }
-                                    
                             }
-                        }
+                        } 
                         break;
                     case "4":  // Nieuwe patient
                         users.Add(new User(response[1], response[2], Int32.Parse(response[3]), Boolean.Parse(response[4]), Int32.Parse(response[5])));
                         break;
-                    case "5":   //data pushen naar meetsessie
+                    case "5":   //data pushen naar meetsessie (opslaan)
+                        // uitleg response[]:
+                        // response[1] = idPatient
+                        // response[2] = idCurrentDoctor
+                        // response[3] = measurement
+                        // opslaan van measurement
                         currentUser = users.FirstOrDefault(item => item.id == response[1]);
+                        Measurement outputMeasurement = null;
                         if (currentUser != null && currentUser.sessions.LastOrDefault() != null)
                         {
-                            currentUser.sessions.Last().AddMeasurement(JsonConvert.DeserializeObject<Measurement>(response[2]));
+                            dynamic DynMeasurement = JsonConvert.DeserializeObject<dynamic>(response[3]);
+                            outputMeasurement = new Measurement((int)DynMeasurement.pulse, (int)DynMeasurement.rpm, (int)DynMeasurement.speed, (int)DynMeasurement.distance, (int)DynMeasurement.requestedPower, (int)DynMeasurement.energy, (int)DynMeasurement.actualPower, (int)DynMeasurement.time);
+                            currentUser.sessions.Last().AddMeasurement(outputMeasurement);
+                        }
+                        // einde opslaan measurement
+
+                        // nu sturen we het naar de doctor
+                        if (outputMeasurement != null && response[2] != "")
+                        {
+                            Client Case5Client = clients.FirstOrDefault(item => item.username == response[2]);
+                            string Case5String = "2|" + response[1] + "|" + JsonConvert.SerializeObject(outputMeasurement) + "|";
+                            Communication.Send(Case5String, Case5Client.sslStream);
                         }
+
                         break;
                     case "6": //chatberichten ontvangen van gebruikers
                         //controleren of het bericht wel tekens bevat
@@ -264,17 +279,24 @@ namespace ServerV2
                         }
                         break;
                     case "9": //alles doorsturen voor de dokter
-                        Console.WriteLine("send users");
-                        string file = "9|" + FietsLibrary.JsonConverter.GetUsers(users);
-                        Communication.Send(file, sslStream);
+
+                        // BUG: er wordt teveel data verstuurd!!!!
+                        //Console.WriteLine("send users");
+                        //string file = "9|" + FietsLibrary.JsonConverter.GetUsers(users);
+                        //Communication.Send(file, sslStream);
                         break;
                     case "10":
                         if (response[1] == "1" || response[1] == "0") //start of stop sesie (met check)
                         {
                             Client Case10Client = clients.FirstOrDefault(item => item.username == response[2].TrimEnd('\0'));
-                            string Case10String = "10|" + response[1] + "|";
+                            string Case10String = "10|" + response[1] + "|" + response[2] + "|" + response[3].TrimEnd('\0') + "|";
                             Communication.Send(Case10String, Case10Client.sslStream);
+                            if (response[1] == "1")
+                            {
+                                Communication.Send("10|" + "1" + "|" + response[2] + "|" + response[3].TrimEnd('\0') + "|", sslStream);
+                            }
                         }
+                        
                         break;
                     default:
                         break;
@@ -299,7 +321,7 @@ namespace ServerV2
             this.username = username;
         }
 
-        
+
 
     }
 }