示例#1
0
        public XDocument Convert(IConvertibleModel model)
        {
            SpektrumModel newModel = new SpektrumModel();

            newModel.Spektrum.Name  = model.StandardizedModelInformation.ModelName;
            newModel.Spektrum.VCode = " 1.05";

            string serializedModelString = SerializationHelper <SpektrumModel> .Serialize(newModel);

            return(XDocument.Parse(serializedModelString));//
        }
示例#2
0
文件: DX8.cs 项目: hgraves/SPMReader
        public XDocument Convert(IConvertibleModel model)
        {
            _Logger.Info("Converting model to a Spektrum DX8 radio type.");
            SpektrumModel newDX8Model = new SpektrumModel();

            _Logger.Debug("Model: {0}", model.StandardizedModelInformation.ModelName);
            _Logger.Debug("Converting the model information.");
            newDX8Model.Spektrum.Name  = model.StandardizedModelInformation.ModelName;
            newDX8Model.Spektrum.VCode = model.StandardizedModelInformation.Version;

            _Logger.Debug("Converting the configuration information.");
            newDX8Model.Config.FrameRate = model.StandardizedConfiguration.FrameRate;
            newDX8Model.Config.trimMode  = model.StandardizedConfiguration.TrimMode;
            newDX8Model.Config.TrimType  = model.StandardizedConfiguration.TrimType;

            _Logger.Debug("Converting the trainer information.");
            newDX8Model.Trainer.Type = model.StandardizedTrainer.Type;

            _Logger.Debug("Converting FMode.");
            newDX8Model.FMode.switch_a = model.StandardizedFlightMode.SwitchA;
            newDX8Model.FMode.switch_b = model.StandardizedFlightMode.SwitchB;
            newDX8Model.FMode.switch_c = model.StandardizedFlightMode.SwitchC;
            newDX8Model.FMode.size     = model.StandardizedFlightMode.Size;

            DateTime start = DateTime.Now;

            _Logger.Debug("Starting serialization...");
            string serializedModelString = SerializationHelper <SpektrumModel> .Serialize(newDX8Model);

            _Logger.Debug("Serialization complete. It took: {0}", DateTime.Now - start);

            StreamReader sReader =
                new StreamReader(new MemoryStream(System.Text.UTF8Encoding.Default.GetBytes(serializedModelString)));

            XmlReader reader = XmlReader.Create(sReader);

            return(XDocument.Load(reader));
        }
示例#3
0
        static void Main(string[] args)
        {
            LogManager.EnableLogging();

            if (args == null || args.Length < 1)
            {
                _Logger.Info(USAGE);
                return;
            }
            else if (args.Length == 1)
            {
                foreach (string argTest in CHECKS)
                {
                    if (args [0].Contains(argTest))
                    {
                        string newArg     = argTest;
                        string newArgPos0 = args [0].Replace(newArg, string.Empty);
                        if (!newArgPos0.StartsWith(" "))
                        {
                            int index = newArgPos0.IndexOf(" ");
                            newArg    += newArgPos0.Substring(0, index);
                            newArgPos0 = newArgPos0.Substring(index);
                        }
                        args [0] = newArgPos0.Trim();
                        List <string> newArgs = new List <string> (args);
                        if (argTest.StartsWith("-"))
                        {
                            newArgs.Insert(0, newArg);
                        }
                        else
                        {
                            newArgs.Add(newArg);
                        }
                        args = newArgs.ToArray();
                    }
                }
            }

            string filename = args.LastOrDefault();

            if (args.Contains(DEBUG_FLAG))
            {
                System.Diagnostics.Debugger.Launch();
            }

            Reader reader = SPMReaderFactory.CreateReader(filename);

            try {
                _Logger.Info("Reading file for {0} model of radio.", reader.ModelName);
                reader.Read();
            } catch (NotImplementedException) {
                string errorMsg = string.Format("The radio model, {0}, is not supported at this time.", reader.ModelName);

                _Logger.Error(errorMsg);
                Console.Error.WriteLine(errorMsg);
                return;
            }

            if (reader == null)
            {
                string errorMsg = "Unable to match the radio model to this file. Please check that you're submitting a valid file type.";
                _Logger.Error(errorMsg);
                Console.Error.WriteLine(errorMsg);
                return;
            }

            if (args.Contains(WRITE_XML_FLAG))
            {
                _Logger.Info("Outputing standardized model XML.");
                _Logger.Info("Preparing XML document.");
                object doc = ((SPMReader.Readers.Spektrum.Spektrum)(reader)).ExportXDocument();

                string output = null;
                if (doc != null)
                {
                    output = doc.ToString();
                }

                string outputFilename = filename.Substring(0, filename.Length - 4) + ".xml";

                string temp = Path.GetTempFileName();

                File.WriteAllText(temp, output);
                _Logger.Info("Ouptting XML document to: {0}", outputFilename);
                File.Copy(temp, outputFilename, true);
            }
            else if (args.Any(a => a.StartsWith(CONVERT_FLAG)))
            {
                if (!(reader is IConvertibleReader))
                {
                    _Logger.Info("The reader, {0}, does not support converting of files.", reader.ModelName);
                    return;
                }
                string convertTo =
                    args.Where(a => a.StartsWith(CONVERT_FLAG)).FirstOrDefault().Split(new char[] { ':' }).LastOrDefault();
                _Logger.Info("Attempting file conversion.");
                IConvertibleModel  baseModel = ((IConvertibleReader)reader).LoadConvertableModel();
                IConvertibleWriter writer    = ConversionWriterFactory.LoadConvertableWriter(convertTo);

                XDocument newFileContents = writer.Convert(baseModel);

                ((Writer)writer).WriteToModelFile(Path.GetTempFileName(), newFileContents);
            }

            _Logger.Info("Done!");
            //LogManager.Shutdown ();
        }