コード例 #1
1
ファイル: TaskService.cs プロジェクト: kbochenina/Kraken
        public string TaskCreate(ulong SequenceId, Packs Package, CONST.LaunchMode LaunchMode, TaskFileDescription[] InputFiles, TaskFileDescription[] OutputFiles, string[] ParamKeys, string[] ParamValues)
        {
            lock (_taskServiceLock)
            {
                Task task = new Task(SequenceId, Package, LaunchMode, InputFiles, OutputFiles);

                if (ParamKeys != null && ParamKeys.Length > 0)
                {
                    if (ParamKeys.Length != ParamValues.Length)
                        throw new Exception("Param keys and values lengths must be equal!");

                    int length = ParamKeys.Length;
                    for (int i = 0; i < length; i++)
                        task.Params[ParamKeys[i]] = ParamValues[i];
                }

                Log.Debug(String.Format(
                    "Цепочка {0}: создана задача {1}", SequenceId, task.TaskId
                ));
                task.Save();

                return task.TaskId;
            }
        }
コード例 #2
0
            public Exp TranslateFieldVar(Exp var, int num)
            {
                Expr addr   = var.UnEx();
                Expr offset = new CONST(num * Frame.WordSize());

                return(new Ex(new MEM(new BINOP(BINOP.Op.Plus, addr, offset))));
            }
コード例 #3
0
        //_________________________________________________________________________
        // { 0xcd, 0xcc, 0xf6, 0x42 };	//, 0x11,0, 1, 0, 2, 0, 10, 0, 15, 0, 1, 0 };// { 0x0, 0x0, 0, 0x1};	// {  0x30, 0x31, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x39, 0x37, 0x30, 0x00, 0x30, 0x3a, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x00 };//{,  0x00, 0x00, 0xe4, 0x43 }; //0x00, 0x80, 0xa0, 0x43
        private void BWritePar_Click(object sender, EventArgs e)
        {
            CBDataSave();
            CBDataWriteParSave();
            CBParameterNameSave();

            Properties.Settings.Default.Save();
            int    iID     = int.Parse(TBIDwritePar.Text);
            string sParams = "[\"" + CONST.ПАРАМЕТРЫ.DeviceName.ToString() + "\":\"" + CBDeviceWr.Text + "\"," +
                             CONST.ПАРАМЕТРЫ.Data.ToString() + "\":\"" + CBData.Text + "\"," +
                             CONST.ПАРАМЕТРЫ.ParameterType.ToString() + "\":\"" + CBTypeData.Text + "\"," +
                             CONST.ПАРАМЕТРЫ.ParameterName.ToString() + "\":\"" + CBParameterName.Text + "\"," +
                             CONST.ПАРАМЕТРЫ.RequestName.ToString() + "\":\"MT16\"," +
                             CONST.ПАРАМЕТРЫ.INorOUT.ToString() + "\":\"out" + "\"," +
                             CONST.ПАРАМЕТРЫ.RequestType.ToString() + "\":\"" + CONST.RequestType.Single.ToString() + "\"," +
                             CONST.ПАРАМЕТРЫ.TimeRequest.ToString() + "\":\"" + NTimeResp.Text +
                             "\"]";

            string[] asaDataWritePar = CBDataWritePar.Text.Split(' ');
            int      iSizeData       = CONST.SizeTypeData((TYPE)Enum.Parse(typeof(TYPE), CBTypeData.Text));

            if (iSizeData != asaDataWritePar.Length)
            {
                MessageBox.Show(string.Format("Длина данных [{0}] не равна размеру типа [{1}]", iSizeData, asaDataWritePar.Length));
                return;
            }
            byte[] btaDataWritePar = new byte[iSizeData];
            int    i = 0;

            foreach (var item in asaDataWritePar)
            {
                btaDataWritePar[i++] = byte.Parse(item);
            }
            DRV.WriteValue(iID, sParams, btaDataWritePar);
        }
コード例 #4
0
        //_________________________________________________________________________
        byte[] StrToTypeThenBytes(string asVal, string asTypeVal, EReverce Reverce, int iRow)
        {
            try
            {
                TYPE    TheType = (TYPE)Enum.Parse(typeof(TYPE), GVDataWr.Rows[iRow].Cells[(int)Params.Typ].Value.ToString());
                dynamic oVal    = Global.StrToType(asVal, TheType);
                if (oVal.GetType().ToString().Equals("System.String"))
                {
                    return(new byte[1]);
                }
                if (Reverce == EReverce.Обратная)
                {
                    byte[] btaRev = BitConverter.GetBytes(oVal);
                    return(btaRev.Reverse().ToArray());
                }

                if (Reverce == EReverce.Обратная_по_2_байта)
                {
                    int    iTypeSize = CONST.SizeTypeData(TheType);
                    byte[] btRet     = new byte[iTypeSize];
                    Global.AppendTwoBytesRev(BitConverter.GetBytes(oVal), 0, btRet, 0, iTypeSize);
                    return(btRet);
                }
                return(BitConverter.GetBytes(oVal));
            }
            catch (Exception exc)
            {
                MessageBox.Show(string.Format("Значение параметра [{0}] не соответствует типу [{1}].{2}",
                                              asVal, asTypeVal, exc.StackTrace));
                return(null);
            }
        }
コード例 #5
0
ファイル: TCP_Stream.cs プロジェクト: vr-thi/CAVE-Bicyclesim
    // Use this for initialization
    void Start()
    {
        if (GetComponent <NetworkIdentity>().isServer)
        {
            IniFile ini = new IniFile("Assets\\Scripts\\FahrradCom.EXE.ini");


            string ip1 = ini.IniReadValue("TCP", "IP");


            avr = new AVR_NetClient(ini.IniReadValue("TCP", "IP"),
                                    Int32.Parse(ini.IniReadValue("TCP", "Port")),
                                    Int32.Parse(ini.IniReadValue("TCP", "BufferSize")));

            Debug.Log("avr" + avr);

            speed = new Speed(Int32.Parse(ini.IniReadValue("Speed", "SensorCount")),
                              Int32.Parse(ini.IniReadValue("Speed", "SpeedSample")),
                              Double.Parse(ini.IniReadValue("Speed", "WheelLine")));

            //Debug.Log (ini.IniReadValue ("Speed", "SensorCount") + ini.IniReadValue ("Speed", "SpeedSample") + ini.IniReadValue ("Speed", "WheelLine"));

            // Winkel
            Angle angle = new Angle(Int32.Parse(ini.IniReadValue("Angle", "SensorMinValue")),
                                    Int32.Parse(ini.IniReadValue("Angle", "SensorMaxValue")),
                                    Int32.Parse(ini.IniReadValue("Angle", "SensorRange")),
                                    ini.IniReadValue("Angle", "SwitchDirection") == "0" ? true : false);


            // Daten zum lesen via TCP - die werden immer abgefragt
            NetData rd = new NetData();
            // Zum Beispiel:
            rd.addData(CONST.getANGLE());   //Winkel
            rd.addData(CONST.getSPEED());   //Geschwindigkeit
                                            // rd.addData(CONST.getSTATE());	//Status


            // Zuordnung der Datensets für die Kommunikation mit AVR
            avr.setDataToRead(rd);



            /* Ein Thread für die Kommunikation.
             * Ist wichtig vor allem für die Geschwindigkeitsberechnung.
             * Der SpeedSensor liefert eigentlich nur FALSE, wenn die MetallStücke am Rad (9 Stück)
             * vorbei "fahren" und TRUE wenn "die Luft rein ist". Die Abstände sind gleich (?),
             * deswegen auf Grund bekantes Radumfangs, auch die Teilstrecken (zwischen 2 Metallstücken)
             * einfach zu berechnen.
             * Für die Geschwindigkeit fehlt nun nur die Zeit. Die bekommt man, in dem man die Zeituterschiede
             * in Millisekunden zwischen 2 SpeedSensor-Aktivierungen ablesen kann. Je genauer desto besser.
             */
            tavr = new Thread(avr.startThread);
            tavr.Start();

            // Thread zum Lesen von Daten von AVR
            trd  = new Test_ReadData(speed, angle, rd, Int32.Parse(ini.IniReadValue("Speed", "SpeedResetAfter")));
            ttrd = new Thread(trd.StartThread);
            ttrd.Start();
        }
    }
コード例 #6
0
 Temp.Temp TranslateExpr(CONST expr)
 {
     if (expr.Value == 0)
     {
         return(MipsFrame.Reg[0]);
     }
     Temp.Temp result = new Temp.Temp();
     InstrList.Add(new MoveInt(result, expr.Value));
     return(result);
 }
コード例 #7
0
            public Exp TranslateSubscriptVar(Exp var, Exp index)
            {
                Expr array_addr = var.UnEx();
                Expr array_offset;

                if (index.UnEx() is CONST)
                {
                    array_offset = new CONST(((CONST)index.UnEx()).Value * Frame.WordSize());
                }
                else
                {
                    array_offset = new BINOP(BINOP.Op.Times, index.UnEx(), new CONST(Frame.WordSize()));
                }
                return(new Ex(new MEM(new BINOP(BINOP.Op.Plus, array_addr, array_offset))));
            }
コード例 #8
0
        /// <summary>
        ///     Helper to compile some code with a standard application surrounding
        /// </summary>
        /// <param name="operations"></param>
        /// <param name="expectedErrors"></param>
        /// <returns></returns>
        public static Module CompileSingleStatement(string operations, params string[] expectedErrors)
        {
            return(CompileString(
                       @$ "
MODULE test; 
CONST 
   true_ = TRUE; 
   false_ = FALSE; 
VAR 
   a,b,c,d,e,f,g,h,x,y,z: BOOLEAN; 
   i, j, k, l: INTEGER;
   r, s, t: REAL;
BEGIN 
  {operations} 
END test.",
                       expectedErrors));
        }
コード例 #9
0
        public async void success()
        {
            BGMPlayer.PlayButton8();
            LevelSucceedDialog lsd = new LevelSucceedDialog();

            APPDATA.app_data.HAVEDONE = Math.Max(APPDATA.app_data.HAVEDONE, localLevel.ID);
            var ach = APPDATA.app_data.ACHIEVEMENT;

            APPDATA.app_data.setAchievement();
            for (int i = 0; i < 6; i++)
            {
                if (ach[i] == '0' && APPDATA.app_data.ACHIEVEMENT[i] == '1')
                {
                    CONST.ShowToastNotification("Square150x150Logo.scale-200.png", AppResources.GetString("isunlock"), NotificationAudioNames.Default);
                }
            }

            var res = await lsd.ShowAsync();

            if (res.ToString() == "Primary")
            {
                //APPDATA.app_data.MoveTo(AppPage.GamePage,localLevel);
            }
            else
            {
                if (localLevel.ID % 9 == 0)
                {
                    APPDATA.app_data.MoveTo(AppPage.SelectChapterPage);
                    var c = SelectGame.localChapter;
                    if (c.ID >= APPDATA.app_data.Chapters.Count)
                    {
                        return;
                    }
                    APPDATA.app_data.Chapters[c.ID].unlocked = 1;
                    return;
                }
                var levels = Level.getLevels(SelectGame.localChapter.ID);
                foreach (var l in levels)
                {
                    if (l.ID == localLevel.ID + 1)
                    {
                        APPDATA.app_data.MoveTo(AppPage.GamePage, l);
                    }
                }
            }
        }
コード例 #10
0
        /// <summary>
        /// 移动MAINGRID
        /// </summary>
        /// <param name="direction">
        /// 0上 1下 2左 3右
        /// </param>
        public void GridMove(Direction direction)
        {
            double from, to;
            double w, h;

            w = Window.Current.Bounds.Width; h = Window.Current.Bounds.Height;
            switch ((int)direction)
            {
            case 0:   from = -h; to = 0;   break;

            case 1:   from = 0; to = -h;   break;

            case 2:   from = -w; to = 0;   break;

            case 3:   from = 0; to = -w;   break;

            default:  from = 0; to = 0;   break;
            }
            CONST.GridMove(MAINGRID, direction, from, to);
        }
コード例 #11
0
    public void StartThread()
    {
        stopThread = false;
        bool     sensor          = false;
        bool     allowSpeedReset = true;
        DateTime dt = DateTime.Now;
        long     resetSpeedStart = dt.Ticks;
        int      val;
        double   currWinkel;
        double   lastWinkel = -1000.0;

        Debug.Log("WORKER INSIDE");

        while (!stopThread)
        {
            // ****************************************
            // Winkel
            //*****************************************
            angle.setValue(rnd.getValue(CONST.getANGLE()));
            currWinkel = angle.getAngle();

            if (currWinkel != lastWinkel)
            {
                // um die Ausgabe der kleinsten Winkeländerungen zu vermeiden,
                // darf der Winkelunterschied nicht in Bereich <-1,1> liegen
                if (!inRange(currWinkel - lastWinkel, -1, 1))
                {
                    AngleForMono = currWinkel;
                    //Debug.Log("Winkel \n"+ currWinkel.ToString());
                    lastWinkel = currWinkel;
                }
            }

            // ****************************************
            // Geschwindigkeit
            //*****************************************
            if (rnd.getValue(CONST.getSPEED()).Length > 0)
            {
                val = Int32.Parse(rnd.getValue(CONST.getSPEED()));
                // Debug.Log("string: " + rnd.getValue(CONST.getSPEED()) + " parsed: " + val);


                if (val < this.fGrenze && sensor == false)
                {
                    sensor = true;
                    speed.setSensorTime(rnd.getDate(CONST.getSPEED()));
                    speedForMono = speed.getSpeed();
                    //Debug.Log("Speed m/s " + speedForMono.ToString());

                    resetSpeedStart = rnd.getDate(CONST.getSPEED());
                    allowSpeedReset = true;
                }

                if (val > this.fGrenze && sensor == true)
                {
                    sensor          = false;
                    resetSpeedStart = rnd.getDate(CONST.getSPEED());
                    allowSpeedReset = true;
                }

                //Es kann passieren, dass das Rad sich nicht bewegt, aber auf Grund
                //gespeicherten Daten Geschwindichkeit > 0 ist.
                //Wenn solcher Zustand länger als 2 Sek. dauert, wird die
                //Geschwindigkeit genullt.
                if (rnd.getDate(CONST.getSPEED()) - resetSpeedStart > this.fSpeedResetTime && allowSpeedReset)
                {
                    //speed.resetSpeed();
                    resetSpeedStart = rnd.getDate(CONST.getSPEED());
                    allowSpeedReset = false;
                    //Debug.Log("Speed m/s\n" + speed.getSpeed().ToString());
                }
            }
        }
    }
コード例 #12
0
 public Exp TranslateSubscriptVar(Exp var, Exp index)
 {
     Expr array_addr = var.UnEx();
     Expr array_offset;
     if (index.UnEx() is CONST)
         array_offset = new CONST(((CONST)index.UnEx()).Value * Frame.WordSize());
     else
         array_offset = new BINOP(BINOP.Op.Times, index.UnEx(), new CONST(Frame.WordSize()));
     return new Ex(new MEM(new BINOP(BINOP.Op.Plus, array_addr, array_offset)));
 }
コード例 #13
0
 public Exp TranslateFieldVar(Exp var, int num)
 {
     Expr addr = var.UnEx();
     Expr offset = new CONST(num * Frame.WordSize());
     return new Ex(new MEM(new BINOP(BINOP.Op.Plus, addr, offset)));
 }
コード例 #14
0
 Temp.Temp TranslateExpr(CONST expr)
 {
     if (expr.Value == 0)
         return MipsFrame.Reg[0];
     Temp.Temp result = new Temp.Temp();
     InstrList.Add(new MoveInt(result, expr.Value));
     return result;
 }
コード例 #15
0
ファイル: Tree.Print.cs プロジェクト: signingoff/Naive-Tiger
 void PrintExp(CONST e, int d)
 {
     Indent(d); Say("CONST "); Say(e.Value.ToString());
 }
コード例 #16
0
ファイル: Tree.Print.cs プロジェクト: Nxun/Naive-Tiger
 void PrintExp(CONST e, int d)
 {
     Indent(d); Say("CONST "); Say(e.Value.ToString());
 }
コード例 #17
0
ファイル: TaskService.cs プロジェクト: kbochenina/Kraken
 public double EstimateTime(Packs Package, CONST.LaunchMode LaunchMode, TaskFileDescription[] InputFiles, TaskFileDescription[] OutputFiles, string[] ParamKeys, string[] ParamValues)
 {
     string taskId = TaskCreate(0, Package, LaunchMode, InputFiles, OutputFiles, ParamKeys, ParamValues);
     return TaskEstimateTime(taskId);
 }
コード例 #18
0
        private void ImportDictionary()
        {
            var view   = new TaskInfoDialog();
            var result = DialogHost.Show(view, "RootDialog");

            TaskInfoDialogViewModel taskInfoDialog = TaskInfoDialogViewModel.getInstance();
            TaskMessage             taskMessage    = new TaskMessage();

            taskMessage.Title    = "执行导入字典目录任务";
            taskMessage.Progress = 0.0;
            taskInfoDialog.Messages.Add(taskMessage);
            Task task = new Task(() =>
            {
                App.Current.Dispatcher.Invoke((Action)(() =>
                {
                    taskMessage.DetailMessages.Add("开始导入。。");
                }));

                // 导入BDCS_CONSTCLS
                BaseDal <CONSTCLS> baseDal = new BaseDal <CONSTCLS>();
                StreamReader sr            = new StreamReader(@"C:\Users\Administrator\Desktop\BDCS_CONSTCLS 1.txt", Encoding.Default);
                String line;
                int index = 0;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] s     = line.Split(',');
                    CONSTCLS c     = new CONSTCLS();
                    c.MBBSM        = int.Parse(s[0].Trim());
                    c.CONSTSLSID   = int.Parse(s[1].Trim());
                    c.CONSTCLSNAME = s[2].Trim();
                    c.CONSTCLSTYPE = s[3].Trim();
                    c.BZ           = s[4].Trim();
                    baseDal.Add(c);
                    index++;
                    double per           = index / 79.0 * 100;
                    taskMessage.Progress = per;
                    App.Current.Dispatcher.Invoke((Action)(() =>
                    {
                        taskMessage.DetailMessages.Add("字典目录表:进度" + per.ToString("#0.#0") + "%");
                    }));
                }

                index = 0;
                taskMessage.Progress     = 0.0;
                BaseDal <CONST> baseDal2 = new BaseDal <CONST>();
                StreamReader sr2         = new StreamReader(@"C:\Users\Administrator\Desktop\BDCS_CONST 1.txt", Encoding.Default);
                String line2;
                while ((line2 = sr2.ReadLine()) != null)
                {
                    string[] s   = line2.Split(',');
                    CONST c      = new CONST();
                    c.MBBSM      = int.Parse(s[0].Trim());
                    c.CONSTSLSID = int.Parse(s[1].Trim());
                    c.CONSTVALUE = s[2].Trim();
                    c.CONSTTRANS = s[3].Trim();
                    if (s[4].Trim() != "")
                    {
                        c.PARENTNODE = int.Parse(s[4].Trim());
                    }
                    else
                    {
                        c.PARENTNODE = null;
                    }
                    if (s[5].Trim() != "")
                    {
                        c.CONSTORDER = int.Parse(s[5].Trim());
                    }
                    else
                    {
                        c.CONSTORDER = null;
                    }
                    c.BZ           = s[6].Trim();
                    c.CREATETIME   = null;
                    c.MODIFYTIME   = null;
                    c.REPORTVALUE  = s[9].Trim();
                    c.GJCONSTTRANS = s[10].Trim();
                    c.SFSY         = s[11].Trim();
                    c.GJVALUE      = s[12].Trim();

                    baseDal2.Add(c);
                    index++;
                    double per = index / 1918.0 * 100;

                    taskMessage.Progress = per;
                    App.Current.Dispatcher.Invoke((Action)(() =>
                    {
                        taskMessage.DetailMessages.Add("字典表:进度" + per.ToString("#0.#0") + "%");
                    }));
                }
            });

            task.Start();
            task.ContinueWith(t =>
            {
                ThreadPool.QueueUserWorkItem(delegate
                {
                    SynchronizationContext.SetSynchronizationContext(new
                                                                     System.Windows.Threading.DispatcherSynchronizationContext(System.Windows.Application.Current.Dispatcher));
                    SynchronizationContext.Current.Post(pl =>
                    {
                        taskMessage.DetailMessages.Add("导入完成。");
                    }, null);
                });
            });
        }