コード例 #1
0
        /// <summary>
        /// 设置剪切板内容
        /// </summary>
        /// <param name="clipNode"></param>
        /// <param name="opType"></param>
        private void setClipboard(GxTreeNode clipNode, OPERATION_TYPE opType)
        {
            clearClipboard();

            _clipboardTreeNode = clipNode;
            _lastOpType        = opType;
        }
コード例 #2
0
 public ResetTunnelRulesMsg(int workFaceId, int tunnelID, string tableName, DateTime dt)
     : base(COMMAND_ID.RESET_TUNNEL_RULES, dt)
 {
     this._workFaceID    = workFaceId;
     this._tunnelID      = tunnelID;
     this._tableName     = tableName;
     this._operationType = OPERATION_TYPE.UPDATE;
 }
コード例 #3
0
 /// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="tunnelID">更新数据的巷道ID</param>
 /// <param name="tableName">数据对应的表名</param>
 /// <param name="operationType">操作类型</param>
 /// <param name="dt">数据更新时间</param>
 public UpdateWarningDataMsg(int workFaceId, int tunnelID, string tableName, OPERATION_TYPE operationType, DateTime dt)
     : base(COMMAND_ID.UPDATE_WARNING_DATA, dt)
 {
     this._workFaceID    = workFaceId;
     this._tunnelID      = tunnelID;
     this._tableName     = tableName;
     this._operationType = operationType;
 }
コード例 #4
0
 public void SetOperandsAndOperation(sbyte a, sbyte b, OPERATION_TYPE operation, bool isError = false)
 {
     lock (_object)
     {
         _operandA  = a;
         _operandB  = b;
         _operation = operation;
         _resetEvent.Set();
         _isError = isError;
     }
 }
コード例 #5
0
        public void Start()
        {
            bool checkOperandA = Utils.CheckOperandRange(int.Parse(ALUViewModel.Instance.OperandA));
            bool checkOperandB = Utils.CheckOperandRange(int.Parse(ALUViewModel.Instance.OperandB));

            if (checkOperandA && checkOperandB)
            {
                TMR tmr = new TMR();

                sbyte a             = sbyte.Parse(ALUViewModel.Instance.OperandA),
                      b             = sbyte.Parse(ALUViewModel.Instance.OperandB);
                OPERATION_TYPE type = Utils.StringOperationToEnum(ALUViewModel.Instance.WybranaOperacja);

                bool[] isErr = new bool[3];

                isErr[0] = BledyViewModel.Instance.IsCheckedBox1;
                isErr[1] = BledyViewModel.Instance.IsCheckedBox2;
                isErr[2] = BledyViewModel.Instance.IsCheckedBox3;

                tmr.SimulateOnce(a, b, type, isErr);

                WizualizacjaViewModel.Instance.WynikALU1 = Utils.SbyteToBinaryString(tmr.GetALU_Result(0), 8);
                WizualizacjaViewModel.Instance.WynikALU2 = Utils.SbyteToBinaryString(tmr.GetALU_Result(1), 8);
                WizualizacjaViewModel.Instance.WynikALU3 = Utils.SbyteToBinaryString(tmr.GetALU_Result(2), 8);

                WynikDecimal = tmr.GetVoter_Result();

                string voter = Utils.SbyteToBinaryString(WynikDecimal, 8);

                WizualizacjaViewModel.Instance.Wynik = voter;

                WizualizacjaViewModel.Instance.OperandABinary = Utils.SbyteToBinaryString(sbyte.Parse(ALUViewModel.Instance.OperandA), 8);
                WizualizacjaViewModel.Instance.OperandBBinary = Utils.SbyteToBinaryString(sbyte.Parse(ALUViewModel.Instance.OperandB), 8);

                Utils.WriteLog("Kliknięto start");
                Utils.WriteLog("Parametry uruchomienia: " +
                               "\nOperand A: " + ALUViewModel.Instance.OperandA +
                               "\nOperand B: " + ALUViewModel.Instance.OperandB +
                               "\nOperacja: " + ALUViewModel.Instance.WybranaOperacja +
                               "\nBłąd ALU1: " + BledyViewModel.Instance.IsCheckedBox1.ToString() + " - " + WizualizacjaViewModel.Instance.WynikALU1.ToString() +
                               "\nBłąd ALU2: " + BledyViewModel.Instance.IsCheckedBox2.ToString() + " - " + WizualizacjaViewModel.Instance.WynikALU2.ToString() +
                               "\nBłąd ALU3: " + BledyViewModel.Instance.IsCheckedBox3.ToString() + " - " + WizualizacjaViewModel.Instance.WynikALU3.ToString() +
                               "\nWynik: " + WynikDecimal.ToString());
            }
            else
            {
                MessageBox.Show("Wartości operandów powinny być z zakresu <-128, 127>");
            }
        }
コード例 #6
0
        public sbyte DoOperation(sbyte a, sbyte b, OPERATION_TYPE op)
        {
            switch (op)
            {
            case OPERATION_TYPE.ADD: return(Add(a, b));

            case OPERATION_TYPE.SUB: return(Sub(a, b));

            case OPERATION_TYPE.OR: return(Or(a, b));

            case OPERATION_TYPE.AND: return(And(a, b));

            case OPERATION_TYPE.XOR: return(Xor(a, b));
            }

            return(0);
        }
コード例 #7
0
        public void SimulateOnce(sbyte operandA, sbyte operandB, OPERATION_TYPE operation, bool[] isErr)
        {
            _voter.Start();

            var collection = _alu.Zip(isErr, (a, e) => new { a, e });

            foreach (var item in collection)
            {
                item.a.Start();
                item.a.SetOperandsAndOperation(operandA, operandB, operation, item.e);
            }

            foreach (var item in _alu)
            {
                item.Join();
            }

            _voter.Join();
        }
コード例 #8
0
 public GeologyMsg(int workFaceId, int tunnelID, string tableName, DateTime dt, COMMAND_ID commandId)
     : base(COMMAND_ID.RESET_TUNNEL_RULES, dt)
 {
     this._workFaceID = workFaceId;
     this._tunnelID = tunnelID;
     this._tableName = tableName;
     this._operationType = OPERATION_TYPE.UPDATE;
     this._commandId = commandId;
 }
コード例 #9
0
 /// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="tunnelID">更新数据的巷道ID</param>
 /// <param name="tableName">数据对应的表名</param>
 /// <param name="operationType">操作类型</param>
 /// <param name="dt">数据更新时间</param>
 public UpdateWarningDataMsg(int workFaceId, int tunnelID, string tableName, OPERATION_TYPE operationType, DateTime dt)
     : base(COMMAND_ID.UPDATE_WARNING_DATA, dt)
 {
     this._workFaceID = workFaceId;
     this._tunnelID = tunnelID;
     this._tableName = tableName;
     this._operationType = operationType;
 }
コード例 #10
0
 public ResetTunnelRulesMsg(int workFaceId, int tunnelID, string tableName, DateTime dt)
     : base(COMMAND_ID.RESET_TUNNEL_RULES, dt)
 {
     this._workFaceID = workFaceId;
     this._tunnelID = tunnelID;
     this._tableName = tableName;
     this._operationType = OPERATION_TYPE.UPDATE;
 }
コード例 #11
0
 /// <summary>
 /// 清空剪切板
 /// </summary>
 private void clearClipboard()
 {
     restoreNodeOriginalIcon();
     _clipboardTreeNode = null;
     _lastOpType        = OPERATION_TYPE.OP_NONE;
 }
コード例 #12
0
 public Operation(string Symbol, PRIORITY Priority, OPERATION_TYPE Type = OPERATION_TYPE.BINARY)
 {
     this.Symbol   = Symbol;
     this.Priority = Priority;
     this.Type     = Type;
 }
コード例 #13
0
        /// <summary>
        /// 设置剪切板内容
        /// </summary>
        /// <param name="clipNode"></param>
        /// <param name="opType"></param>
        private void setClipboard(GxTreeNode clipNode, OPERATION_TYPE opType)
        {
            clearClipboard();

            _clipboardTreeNode = clipNode;
            _lastOpType = opType;
        }
コード例 #14
0
 /// <summary>
 /// 清空剪切板
 /// </summary>
 private void clearClipboard()
 {
     restoreNodeOriginalIcon();
     _clipboardTreeNode = null;
     _lastOpType = OPERATION_TYPE.OP_NONE;
 }
コード例 #15
0
 public void Reset()
 {
     _operandA  = _operandB = 0;
     _operation = OPERATION_TYPE.NONE;
     _resetEvent.Reset();
 }