Beispiel #1
0
        private int Exec(int number)
        {
            int returnPos = number + 1;

            if (_operators[number].Code != null && _funcs.ContainsKey(_operators[number].Code))
            {
                returnPos = _funcs[_operators[number].Code].Invoke(number);
            }
            else if (_operators[number].Code != null && MacroToken.TryParse(_operators[number].Code, false, out MacroToken typeLex))
            {
                throw new Exception($"Нет объявленной директивы для {typeLex}");
            }
            else
            {
                if (_operators[number].Code != null && _macros.ContainsKey(_operators[number].Code))
                {
                    var data = _macros[_operators[number].Code].Run(_operators[number].Arguments);
                    foreach (var elem in data)
                    {
                        _asmProgram.Add(elem);
                    }
                }
                else
                {
                    _asmProgram.Add(Replacement(_operators[number].Source));
                }
            }
            return(returnPos);
        }
Beispiel #2
0
//        private static void TestInit()
//        {
//                        var panelId1 = RegisterPanel(new Panel {Name = "Оверхед"}, true);
//                        var panelId2 = RegisterPanel(new Panel {Name = "НВУ"}, true);
//                        var panelId3 = RegisterPanel(new Panel {Name = "КВС"}, true);
//                        var mpv = new MemoryPatchVariable
//                            {
//                                Offset = 0x124F08,
//                                Size = MemoryVariableSize.Byte,
//                                ModuleName = "NN_pnk_154m_v1_25.GAU",
//                                Name = "Переключатель ДМЕ (3 позиции)",
//                                PanelId = panelId2,
//                                Description = "Тестовая переменная 1\nНовая строка"
//                            };
//                        var var1Id = StoreVariable(mpv, true);

//                        var mpv1 = new MemoryPatchVariable
//                            {
//                                Offset = 0x12BEB0,
//                                Size = MemoryVariableSize.Byte,
//                                ModuleName = "NN_pnk_154m_v1_25.GAU",
//                                Name = "Ввод ЗК (2 позиции)",
//                                PanelId = panelId3,
//                                Description = "Тестовая переменная 2\nНовая строка"
//                            };
//                        var var2Id = StoreVariable(mpv1, true);
//                        var fv2 = new FsuipcVariable
//                            {
//                                Offset = 0x342,
//                                Size = MemoryVariableSize.Byte,
//                                Name = "Выпуск чего-нибудь",
//                                PanelId = panelId3,
//                                Description = "Тестовая переменная 3\nНовая строка"
//                            };
//                        var var3Id = StoreVariable(fv2, true);

//                        var mpv2 = new MemoryPatchVariable
//                            {
//                                Offset = 0x36179,
//                                Size = MemoryVariableSize.Byte,
//                                ModuleName = "NN_pnk_154m_v1_25.GAU",
//                                Name = "РСБН (единицы)",
//                                PanelId = panelId1,
//                                Description = "РСБН Единицы"
//                            };
//                        var mpv3 = new MemoryPatchVariable
//                            {
//                                Offset = 0x36497,
//                                Size = MemoryVariableSize.Byte,
//                                ModuleName = "NN_pnk_154m_v1_25.GAU",
//                                Name = "АРК1 (сотни)",
//                                PanelId = panelId1,
//                                Description = "111"
//                            };

//                        var var5Id = StoreVariable(mpv3, true);
//                        var var4Id = StoreVariable(mpv2, true);


//            // Button
//            var ad = new DescriptorValue();
//            ad.AddConnector("Off");
//            ad.AddConnector("On");
//            ad.AddVariable(/*var1Id*/0);
//            ad.AddVariable(/*var2Id*/1);
//            ad.SetFormula(0, 0, "0");
//            ad.SetFormula(0, 1, "0");
//            ad.SetFormula(1, 0, "1");
//            ad.SetFormula(1, 1, "2");
//            ad.AssignDefaultStateId(0);
//            ad.SetAssignedPanelId(/*panelId3*/2);
//            ad.SetName("TestAD");
//            RegisterAccessDescriptor(ad, true);

//            var cp = new ButtonProcessor(ad.GetId());
//            var cpId = Add(cp, ad.GetId());
//            //            ad.AssignControlProcessor(cpId);
//            cp.AssignHardware(1, "Arcc:2905A4F9|Button|1|81");

//            // BinaryInput
//            var ad3 = new DescriptorValue();
//            ad3.AddConnector("Off");
//            ad3.AddConnector("On");
//            ad3.AddVariable(/*var1Id*/0);
//            ad3.AddVariable(/*var2Id*/1);
//            ad3.SetFormula(0, 0, "0");
//            ad3.SetFormula(0, 1, "0");
//            ad3.SetFormula(1, 0, "1");
//            ad3.SetFormula(1, 1, "2");
//            //            ad3.AssignDefaultState(0);
//            ad3.SetAssignedPanelId(/*panelId3*/2);
//            ad3.SetName("TestADBI");
//            RegisterAccessDescriptor(ad3, true);

//            /*            var cp3 = new ButtonBinaryInputProcessor(ad3.GetId());
//                        var cpId3 = Add(cp3);
//                        ad3.AssignControlProcessor(cpId3);*/


//            /////////// Encoder
//            var ad1 = new DescriptorRange();
//            ad1.SetFormulaToGetValues("[Оверхед.АРК1 (сотни)]");
//            ad1.AddVariable(/*var5Id*/4);
//            ad1.SetAssignedPanelId(/*panelId1*/0);
//            ad1.SetName("Оверхед.АРК1 (сотни)");
//            ad1.SetFormula(0, /*var5Id*/4, "[R]");
//            ad1.SetFormula(1, /*var5Id*/4, "[R]");
//            ad1.MinimumValue = 0;
//            ad1.MaximumValue = 16;
//            ad1.Step = 1;
//            ad1.IsLooped = true;
//            var encoderAdId = RegisterAccessDescriptor(ad1, true);

//            var ecp = new EncoderProcessor(encoderAdId);
//            ecp.AssignHardware("Arcc:2905A4F9|Encoder|1|4");
//            var ecpId = Add(ecp, ad1.GetId());
//            //            ad1.AssignControlProcessor(ecpId);
//            ecp.SetInversion(true);
//            /////////// Indicator
//            var indicatorAd = new DescriptorIndicator();
//            indicatorAd.SetName("Оверхед.АРК1 (сотни) индикатор");
//            indicatorAd.SetAssignedPanelId(/*panelId1*/0);
//            indicatorAd.SetFormula("[Оверхед.АРК1 (сотни)]");
//            indicatorAd.SetNumberOfDigitsAfterPoint(3);
//            var indicatorId = RegisterAccessDescriptor(indicatorAd, true);
//            var icp = new IndicatorProcessor(indicatorId);
//            icp.AssignHardware("Arcc:2905A4F9|Indicator|8|0");
//            var icpId = Add(icp, indicatorAd.GetId());
//            //            indicatorAd.AssignControlProcessor(icpId);
//            /////////// BinaryOutput
//            var boAd = new DescriptorBinaryOutput();
//            boAd.SetFormula("[НВУ.Переключатель ДМЕ (3 позиции)]==1");
//            boAd.SetName("НВУ.Переключатель ДМЕ");

//            boAd.SetAssignedPanelId(/*panelId1*/0);
//            var boId = RegisterAccessDescriptor(boAd, true);
//            var lcp = new LampProcessor(boId);
//            lcp.AssignHardware("Arcc:2905A4F9|BinaryOutput|1|7");
//            var lcpId = Add(lcp, boAd.GetId());
//            //           boAd.AssignControlProcessor(lcpId);
//        }
//*/
//        /*       private void CheckVarManager()
//               {
//                   var variableMeanager = new VariableManager();
//                   variableMeanager.Initialize();
//                   var mpv = new MemoryPatchVariable();
//                   mpv.ModuleName = "NN_pnk_154m_v1_25.GAU";
//                   mpv.Offset = 0x1200D0; // Индикатор широты на ТКС
//                   mpv.Size = MemoryVariableSize.EightByteFloat;

//                   var mpv1 = new MemoryPatchVariable();
//                   mpv1.ModuleName = "NN_pnk_154m_v1_25.GAU";
//                   mpv1.Offset = 0x36148; // Индикатор широты на ТКС
//                   mpv1.Size = MemoryVariableSize.EightByteFloat;


//                   var id = variableMeanager.StoreVariable(mpv, true);
//                   var id1 = variableMeanager.StoreVariable(mpv1, true);

//                   variableMeanager.Start();
//                   double res = 0;
//                   var val = -90;
//                   while (true)
//                   {
//                       var res1 = variableMeanager.ReadValue(id);
//                       var xxx = variableMeanager.WriteValue(id1, val);
//                       val++;
//                       if (val > 90)
//                           val = -90;
//                       if (res1.Value != res)
//                       {
//                           //                    Debug.Print(res1.Value + "\t" + res1.Error);
//                           //                    res = res1.Value;
//                           System.Windows.Application.Current.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, (ThreadStart)delegate { Output.Text = res1.Value.ToString(); });

//                           //Output.Text = res1.Value.ToString();
//                           //                    Output1.Text = res1.Value.ToString();
//                       }
//                       Thread.Sleep(10);
//                   }
//               }
        private void CheckPlayMacro()
        {
            var windowInfo = new WindowInfo {
                Name = "Over"
            };
            var clickMethod = new ClickMethodForFs2004();
            var winId       = clickMethod.AddWindow(windowInfo, true);

            clickMethod.FindAddedWindows();
            foreach (var win in clickMethod._simWindows)
            {
                win.Value.SaveChanges();
            }
            var macroProcessor = new ClickMacroProcessor();
            var wi             = new MacroProcessorWindowInfo();

            wi.Hwnd = clickMethod._simWindows[winId].Hwnd;
            wi.Id   = winId;
            wi.Size = clickMethod._simWindows[winId].Coordinares;
            var wi1 = new MacroProcessorWindowInfo();

            wi1.Hwnd = clickMethod._simWindows[clickMethod._simulatorMainWindowId].Hwnd;
            wi1.Id   = clickMethod._simulatorMainWindowId;
            wi1.Size = clickMethod._simWindows[clickMethod._simulatorMainWindowId].Coordinares;
            macroProcessor.RenewWindowsInfo(new[] { wi, wi1 }, wi1.Id);
            var macro = new MacroToken();

            macro.WindowId = wi.Id;
            macro.Actions  = new[] { new MouseEvent {
                                         Action = MouseAction.MouseLeftClick, MouseX = 587, MouseY = 244, WindowWidth = 1216, WindowHeight = 797
                                     } };
            var macro2 = new MacroToken();

            macro2.WindowId = wi.Id;
            macro2.Actions  = new[] { new MouseEvent {
                                          Action = MouseAction.MouseLeftClick, MouseX = 652, MouseY = 245, WindowWidth = 1216, WindowHeight = 797
                                      } };
            var macro3 = new MacroToken();

            macro3.WindowId = wi.Id;
            macro3.Actions  = new[] { new MouseEvent {
                                          Action = MouseAction.MouseRightClick, MouseX = 255, MouseY = 38, WindowWidth = 591, WindowHeight = 648
                                      } };
            while (true)
            {
                macroProcessor.PlayMacro(new[] { macro });
                macroProcessor.PlayMacro(new[] { macro3 });
                Debug.Print("1");
                Thread.Sleep(1000);
                macroProcessor.PlayMacro(new[] { macro2 });
                macroProcessor.PlayMacro(new[] { macro3 });
                Debug.Print("2");
                Thread.Sleep(1000);
            }
        }
Beispiel #3
0
 public ConcatenationToken(MacroToken left, MacroToken right) : base("##")
 {
     Left  = left;
     Right = right;
 }