Пример #1
0
 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();
     }
 }