void port_DataReceived(object sender, SerialDataReceivedEventArgs e) { System.Threading.Thread.Sleep(100); int toRead = ((SerialPort)sender).BytesToRead; byte[] byte_buffer = new byte[toRead]; port.Read(byte_buffer, 0, toRead); var data = System.Text.Encoding.Default.GetString(byte_buffer); //LogText(data.ToString()); //LogText(data); Console.WriteLine(data.ToString()); XmlNode node; int dayNow = DateTime.Now.Day; if (ds == null) { ds = new DataSet(); ds.SetFolderPath(@"c:\datalog"); ds.AttachMeta("Start Time", DateTime.Now); dayOld = dayNow; } else if (dayNow != dayOld) { ds.EndWrite(); ds = new DataSet(); ds.SetFolderPath(@"c:\datalog"); ds.AttachMeta("Start Time", DateTime.Now); dayOld = dayNow; } bool any = false; //parse the data. try { using (XmlReader reader = XmlReader.Create(new StringReader(data.ToString()))) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { //Console.WriteLine(reader.LocalName); if (reader.LocalName == "Data") { if (!any) { ds.AddParameterDate("Timestamp", DateTime.Now); any = true; } var val = reader.GetAttribute("Value"); //Console.WriteLine(reader.LocalName + ": " + val); ds.AddParameterDouble(reader.LocalName, Convert.ToDouble(val)); LogText(val.ToString()); } } } } } catch (Exception ex) { } if (any = true && ds != null) { ds.EndItem(); } }