private void HandleBikeData(Measurement data) { if (doctorform.InvokeRequired) { doctorform.Invoke((new Action(() => HandleBikeData(data)))); } else { //fill fields doctorform.summaryUserControl.pulseBox.Text = data.pulse.ToString(); doctorform.summaryUserControl.rpmInfoBox.Text = data.rpm.ToString(); doctorform.summaryUserControl.speedInfoBox.Text = data.speed.ToString(); doctorform.summaryUserControl.distanceInfoBox.Text = data.distance.ToString(); doctorform.summaryUserControl.requestedBox.Text = data.requestedPower.ToString(); doctorform.summaryUserControl.energyInfoBox.Text = data.energy.ToString(); doctorform.summaryUserControl.timeBox.Text = data.time.ToString(); doctorform.summaryUserControl.actualBox.Text = data.actualPower.ToString(); //fill graph speed speedPoints.Add(new DataPoint(Convert.ToDateTime(data.time.ToString()).ToOADate(), Convert.ToDouble(data.speed.ToString()))); doctorform.summaryUserControl.speedChart.Series[0].Points.Clear(); for (int i = 0; i < speedPoints.Count; i++) { doctorform.summaryUserControl.speedChart.Series[0].Points.Add(speedPoints[i]); } if (speedPoints.Count > 25) { speedPoints.RemoveAt(0); } doctorform.summaryUserControl.speedChart.Update(); //fill graph pulse bpmPoints.Add(new DataPoint(Convert.ToDateTime(data.time.ToString()).ToOADate(), Convert.ToDouble(data.pulse.ToString()))); doctorform.summaryUserControl.bpmChart.Series[0].Points.Clear(); for (int i = 0; i < bpmPoints.Count; i++) { doctorform.summaryUserControl.bpmChart.Series[0].Points.Add(bpmPoints[i]); } if (bpmPoints.Count > 25) { bpmPoints.RemoveAt(0); } doctorform.summaryUserControl.speedChart.Update(); //fill graph rpm rpmPoints.Add(new DataPoint(Convert.ToDateTime(data.time.ToString()).ToOADate(), Convert.ToDouble(data.rpm.ToString()))); doctorform.summaryUserControl.rpmChart.Series[0].Points.Clear(); for (int i = 0; i < rpmPoints.Count; i++) { doctorform.summaryUserControl.rpmChart.Series[0].Points.Add(rpmPoints[i]); } if (rpmPoints.Count > 25) { rpmPoints.RemoveAt(0); } doctorform.summaryUserControl.rpmChart.Update(); } }
public void HandleSessionBikeData(Measurement data) { if (InvokeRequired) { Invoke((new Action(() => HandleSessionBikeData(data)))); } else { int actualMinutes = (int)(data.time / 60.0); string actualTime = actualMinutes + ":" + (data.time - actualMinutes * 60).ToString(); //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 speedPoints.Add(new DataPoint(Convert.ToDateTime(actualTime).ToOADate(), Convert.ToDouble(data.speed))); speedChart.Series[0].Points.Clear(); for (int i = 0; i < speedPoints.Count; i++) speedChart.Series[0].Points.Add(speedPoints[i]); if (speedPoints.Count > 25) speedPoints.RemoveAt(0); speedChart.Update(); //fill graph pulse bpmPoints.Add(new DataPoint(Convert.ToDateTime(actualTime).ToOADate(), Convert.ToDouble(data.pulse))); bpmChart.Series[0].Points.Clear(); for (int i = 0; i < bpmPoints.Count; i++) bpmChart.Series[0].Points.Add(bpmPoints[i]); if (bpmPoints.Count > 25) bpmPoints.RemoveAt(0); speedChart.Update(); //fill graph rpm rpmPoints.Add(new DataPoint(Convert.ToDateTime(actualTime).ToOADate(), Convert.ToDouble(data.rpm))); rpmChart.Series[0].Points.Clear(); for (int i = 0; i < rpmPoints.Count; i++) rpmChart.Series[0].Points.Add(rpmPoints[i]); if (rpmPoints.Count > 25) rpmPoints.RemoveAt(0); rpmChart.Update(); } }
public static string SerializeLastMeasurement(Measurement measurement) { return JsonConvert.SerializeObject(measurement); }
private void receive(object obj) { TcpClient client = obj as TcpClient; User currentUser; SslStream sslStream = InitialiseConnection(client); while (!(client.Client.Poll(0, SelectMode.SelectRead) && client.Client.Available == 0)) { byte[] bytesFrom = new byte[(int)client.ReceiveBufferSize]; try { sslStream.Read(bytesFrom, 0, (int)client.ReceiveBufferSize); } catch (Exception e) { Console.WriteLine("Exception occured while trying to get data from client. Disconnecting..."); Console.WriteLine(e.StackTrace); //Stop(); } string[] response = Encoding.ASCII.GetString(bytesFrom).Split('|'); switch (response[0]) { case "0": if (response.Length == 4) { int admin, id = 0; //check username and password foreach (User u in users) { if (u.id == response[1] && u.password == response[2]) { admin = u.isDoctor ? 1 : 0; id = users.IndexOf(u); } } if (id > -1) { var user = users.FirstOrDefault(item => item.id == response[1]); if (user == null) { Console.WriteLine("received incorrect username or password"); Communication.Send("0|0|0|", sslStream); // Does not exist } else if (user.isDoctor) { Console.WriteLine("received login from docter username: "******"0|1|1|", sslStream); // Doctor } else if (!user.isDoctor) { Console.WriteLine("received login from patient username: "******"0|1|0|", sslStream); //Patient } clients.Add(new Client(client, sslStream, response[1])); } else { Console.WriteLine("IOException"); Communication.Send("0|0|0|", sslStream); // Does not exist } } break; case "1": //meetsessies ophalen currentUser = users.First(item => item.id == response[1]); Communication.Send("1|" + FietsLibrary.JsonConverter.GetUserSessions(currentUser), sslStream); break; 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); break; case "3": //Nieuwe meetsessie aanmaken if (true) { foreach (User u in users) { if (u.id == response[1]) { if (u.GetSessions().Count != 0) { int sessionID = u.GetSessions().LastOrDefault().id; u.AddSession(new Session(sessionID)); } else { 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]))); saveData2Json(); readDataFromJson(); break; 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) { 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 if (response[3] != null) { string message = response[3].TrimEnd('\0'); string receiver = response[2]; string sender = response[1]; string case6str = "7|" + sender + "|" + receiver + "|" + message; Console.WriteLine(case6str); Communication.Send(case6str, sslStream); for (int i = 0; i < clients.Count; i++) { if (clients[i].username == receiver) Communication.Send("7|" + sender + "|" + receiver + "|" + message, clients[i].sslStream); } } break; case "8": //alle online Patients sturen naar Doctorclient if (response[1] != null) { if (response[1] == "doctor" || true) //TODO: doctor check { List<string> patients = new List<string>(); foreach (Client c in clients) { User user = users.FirstOrDefault(item => item.id == c.username); if (user != null) if (!user.isDoctor) patients.Add(user.id); } string strToSend = "8|"; if (!(patients.Count > 0)) strToSend += "-1"; else foreach (string patient in patients) { strToSend += (patient + '\t'); } Communication.Send(strToSend.TrimEnd('\t'), sslStream); } } break; case "9": //alles doorsturen voor de dokter // 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] + "|" + 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; case "11": saveData2Json(); break; case "20": Client Case20Client = clients.FirstOrDefault(item => item.username == response[1]); if (Case20Client != null) { string Case20String = "20|" + response[2] + "|"; Communication.Send(Case20String, Case20Client.sslStream); } break; case "21": Client Case21Client = clients.FirstOrDefault(item => item.username == response[1]); if (Case21Client != null) { string Case20String = "21|" + response[2] + "|" + response[3] + "|"; Communication.Send(Case20String, Case21Client.sslStream); } break; case "22": Client Case22Client = clients.FirstOrDefault(item => item.username == response[1]); if (Case22Client != null) { string Case22String = "22|" + response[2] + "|"; Communication.Send(Case22String, Case22Client.sslStream); } break; default: break; } } }
private void readDataFromJson() { //Read UserDate file string s = File.ReadAllText(@"JSON Files\UserData.Json"); dynamic results = JsonConvert.DeserializeObject<dynamic>(s); //Clear list users = new List<User>(); foreach (dynamic r in results) { users.Add(new User(r.id.ToString(), r.password.ToString(), Int32.Parse(r.age.ToString()), Boolean.Parse(r.gender.ToString()), Int32.Parse(r.weight.ToString()), Boolean.Parse(r.isDoctor.ToString()))); int i = 1; foreach (dynamic ses in r.sessions) { Session tempSession = new Session(i); i++; foreach (dynamic m in ses.measurements) { Measurement measurement = new Measurement(Int32.Parse(m.pulse.ToString()), Int32.Parse(m.rpm.ToString()), Int32.Parse(m.speed.ToString()), Int32.Parse(m.distance.ToString()), Int32.Parse(m.requestedPower.ToString()), Int32.Parse(m.energy.ToString()), Int32.Parse(m.actualPower.ToString()), Int32.Parse(m.time.ToString())); tempSession.AddMeasurement(measurement); } users.Last().AddSession(tempSession); } } }
private void HandleBikeData(Measurement data) { if (doctorform.InvokeRequired) { doctorform.Invoke((new Action(() => HandleBikeData(data)))); } else { //fill fields doctorform.summaryUserControl.pulseBox.Text = data.pulse.ToString(); doctorform.summaryUserControl.rpmInfoBox.Text = data.rpm.ToString(); doctorform.summaryUserControl.speedInfoBox.Text = data.speed.ToString(); doctorform.summaryUserControl.distanceInfoBox.Text = data.distance.ToString(); doctorform.summaryUserControl.requestedBox.Text = data.requestedPower.ToString(); doctorform.summaryUserControl.energyInfoBox.Text = data.energy.ToString(); doctorform.summaryUserControl.timeBox.Text = data.time.ToString(); doctorform.summaryUserControl.actualBox.Text = data.actualPower.ToString(); //fill graph speed speedPoints.Add(new DataPoint(Convert.ToDateTime(data.time.ToString()).ToOADate(), Convert.ToDouble(data.speed.ToString()))); doctorform.summaryUserControl.speedChart.Series[0].Points.Clear(); for (int i = 0; i < speedPoints.Count; i++) doctorform.summaryUserControl.speedChart.Series[0].Points.Add(speedPoints[i]); if (speedPoints.Count > 25) speedPoints.RemoveAt(0); doctorform.summaryUserControl.speedChart.Update(); //fill graph pulse bpmPoints.Add(new DataPoint(Convert.ToDateTime(data.time.ToString()).ToOADate(), Convert.ToDouble(data.pulse.ToString()))); doctorform.summaryUserControl.bpmChart.Series[0].Points.Clear(); for (int i = 0; i < bpmPoints.Count; i++) doctorform.summaryUserControl.bpmChart.Series[0].Points.Add(bpmPoints[i]); if (bpmPoints.Count > 25) bpmPoints.RemoveAt(0); doctorform.summaryUserControl.speedChart.Update(); //fill graph rpm rpmPoints.Add(new DataPoint(Convert.ToDateTime(data.time.ToString()).ToOADate(), Convert.ToDouble(data.rpm.ToString()))); doctorform.summaryUserControl.rpmChart.Series[0].Points.Clear(); for (int i = 0; i < rpmPoints.Count; i++) doctorform.summaryUserControl.rpmChart.Series[0].Points.Add(rpmPoints[i]); if (rpmPoints.Count > 25) rpmPoints.RemoveAt(0); doctorform.summaryUserControl.rpmChart.Update(); } }
public void AddMeasurement(Measurement m) { measurements.Add(m); }