/// <summary> /// New serial data is received and gets processed /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void NewSerialDataRecieved(object sender, SerialDataEventArgs e) { //Reset Timer for disconnect dcTime = DateTime.Now; foreach (byte t in e.Data) { //Import Byte and convert if one package complete if (processData.ImportByte(t)) { processData.Convert2Byte(); //Reset all Values if its the very first package that arrives if (firstPackage) { firstPackage = false; processData.SetPackageNumber(); stopWatch.Reset(); processData.packageCount = 0; } //Check package number else { if (!processData.CheckPackageNumber()) { UpdateStatus(this, new UpdateStatusEvent("Paket verloren gegangen")); } if (!processData.CheckPackageNumber() && save) { saveData.FillMissingData(processData.lostPackages); processData.packageCount += processData.lostPackages; } } //Start Stop Watch the first time if (!stopWatch.IsRunning) { stopWatch.Reset(); stopWatch.Start(); } //Count till 2500 Packages have arrive (which should be 10 Seconds) processData.packageCount++; if (processData.packageCount >= 250 * 10) { processData.packageCount -= 250 * 10; stopWatch.Stop(); //Add time deviation to ensure time synchronic if (save) { saveData.AddLostTime(stopWatch, 10); } //Reset and Start Stop Watch again stopWatch.Reset(); stopWatch.Start(); } //IMU processData.CalculateIMU(); //FFT if (processData.Buffering()) { // Send data to Form if (NewDataAvailable != null) { //snore //if (processData.snore) UpdateStatus(this, new UpdateStatusEvent("Schnarch")); NewDataAvailable(this, new NewDataAvailableEvent(processData.audioArray, processData.fft, processData.activity, processData.sleepPosition, processData.snore)); //if (snorecounter > 20) //{ // UpdateStatus(this, // new UpdateStatusEvent(Convert.ToString(processData.volume) + ' ' + // Convert.ToString(processData.length) + ' ' + // Convert.ToString(processData.freq))); // snorecounter = 0; //} //snorecounter++; } } //Save Data if (save) { if (Statics.complexSave) { for (int i = 0; i < 3; i++) { saveData.sendData(i + 3, processData.gyro[i]); saveData.sendData(i + 6, processData.accelerationRaw[i]); } } saveData.sendData(1, (short)processData.activity); saveData.sendData(2, (short)processData.sleepPosition); saveData.sendData(0, processData.audio); } } } }