Example #1
0
 public void Save(StreamInfo initialFile, int versionIndex = 0)
 {
     using (var bw = new BinaryWriter(initialFile.FileData, Encoding.ASCII, LeaveOpen))
     {
         bw.Write(0x16161616);
         bw.Write((short)0x3232);
     }
     using (var bw = new BinaryWriter(FileSystem.CreateFile("meta.bin"), Encoding.ASCII, LeaveOpen))
     {
         bw.Write(0x44332211);
         bw.Write((short)0x6655);
     }
     Communication.Add("string3");
 }
        public bool LoadFromFile(string fileName)
        {
            bool result = true;

            try
            {
                var fileLines = File.ReadAllLines(fileName, Encoding.Default);

                var categories = GetLinesByCategory(fileLines);

                if (categories != null)
                {
                    if (categories.ContainsKey("version"))
                    {
                        foreach (var line in categories["version"])
                        {
                            KeyValuePair <string, string> declaration;
                            if (ParseDeclaractionLineToken(line, out declaration))
                            {
                                if (declaration.Key == "Version")
                                {
                                    Version = declaration.Value;
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        result = false;
                        DisplayStatusMessage("Failed to find category: version.", StatusMessageType.USER);
                    }

                    if (categories.ContainsKey("communication"))
                    {
                        foreach (var line in categories["communication"])
                        {
                            KeyValuePair <string, string> declaration;
                            if (ParseDeclaractionLineToken(line, out declaration))
                            {
                                Communication.Add(declaration.Key, declaration.Value);
                            }
                        }
                    }
                    else
                    {
                        result = false;
                        DisplayStatusMessage("Failed to find category: communication.", StatusMessageType.USER);
                    }

                    if (categories.ContainsKey("identification"))
                    {
                        foreach (var line in categories["identification"])
                        {
                            KeyValuePair <string, string> declaration;
                            if (ParseDeclaractionLineToken(line, out declaration))
                            {
                                Identification.Add(declaration.Key, declaration.Value);
                            }
                        }
                    }
                    else
                    {
                        result = false;
                        DisplayStatusMessage("Failed to find category: identification.", StatusMessageType.USER);
                    }

                    if (categories.ContainsKey("measurements"))
                    {
                        string[] measurementEntryKeys     = { "VariableID", "Name", "Address", "NumBytes", "BitMask", "Units", "IsSigned", "IsInverted", "Scale", "Offset", "Description" };
                        var      measurementEntryKeysList = new List <string>(measurementEntryKeys);

                        foreach (var line in categories["measurements"])
                        {
                            Measurements.Add(GetMeasurementEntryFromLine(line, measurementEntryKeysList));
                        }
                    }
                    else
                    {
                        result = false;
                        DisplayStatusMessage("Failed to find category: measurements.", StatusMessageType.USER);
                    }
                }
            }
            catch (Exception e)
            {
                DisplayStatusMessage("Encountered exception while loading file: " + e.ToString(), StatusMessageType.USER);

                result = false;
            }

            return(result);
        }