Esempio n. 1
0
        static void _do_math(clsFaim3 _faim3, clsDevTestBits _line, int _val_2)
        {
            int _bit = 0;

            if (_faim3._dim_dict.ContainsKey(_line.vName))
            {
                _bit = _faim3._dim_dict[_line.vName];   // 内存位 自定义名为下标, 分配地址, 寻址
                _faim3._dim[_bit] += _val_2;            // 直接设置, 无联动     dim[Feeder05] = Value
            }
            else if (_line.vName.ToUpper().StartsWith("_FAIM3") ||
                     _line.vName.ToUpper().StartsWith("CLSFAIM3"))
            {
                int _ls = Convert.ToInt32(F_TransCalc.doGetValue_byName(_faim3, _line.vName));
                F_TransCalc.doSetValue_byName(_faim3, _line.vName, _ls + _val_2);
            }
        }
Esempio n. 2
0
        static bool do_Compare(clsFaim3 _faim3, clsDevTestBits _line)
        {
            bool   _mybl  = true;
            string _str_2 = "   ";
            int    _bit   = -1;
            int    _val_1 = -1;
            int    _val_2 = F_TransCalc._Get_Value_2(_faim3, _line.HL, ref _str_2);

            if (_faim3.dict_DevFunction.ContainsKey(_line.vName))
            {
                #region                                                    // dict_DevFunction IO口定义
                clsDevFunction _df = _faim3.dict_DevFunction[_line.vName]; //
                _bit = _df.devNo * _faim3.sect_iDev + _df.Index;           // 内存位

                switch (_df.varName.ToUpper())
                {
                case "BT_OUT":
                    _val_1 = _faim3.Comm_Data.bt_out[0][_bit];
                    break;

                case "BT_IN":
                //_val_1 = _faim3.Comm_Data.bt_in[0][_bit];
                //break;
                case "BT_ST":
                //clsProtocol._204C(_faim3, _dao_comm, _df.devNo, "A_ST", _df.ioIdx.ToString());  // 发出命令
                //_val_1 = _faim3.Comm_Data.bt_in[0][_bit]; // 取出值, 可能多次才能取到
                //break;
                case "BT_IO":
                    //clsProtocol._204C(_faim3, _dao_comm, _df.devNo, "A_IO", _df.ioIdx.ToString());  // 发出命令
                    _val_1 = _faim3.Comm_Data.bt_in[0][_bit];     // 取出值, 可能多次才能取到
                    break;
                }
                #endregion
            }
            else if (_faim3._dim_dict.ContainsKey(_line.vName))
            {
                #region                                 // _dim_dict  动态变量
                _bit   = _faim3._dim_dict[_line.vName]; // 自定义名为下标, 分配地址, 寻址
                _val_1 = _faim3._dim[_bit];
                #endregion
            }
            else if (_line.vName.ToUpper().StartsWith("_FAIM3") ||
                     _line.vName.ToUpper().StartsWith("CLSFAIM3"))
            {
                #region // _FAIM3 大数据
                _bit   = 1;
                _val_1 = Convert.ToInt32(F_TransCalc.doGetValue_byName(_faim3, _line.vName));
                #endregion
            }
            // 可以比较
            if (_bit > -1)
            {
                #region // 比较 IF_EQ  IF_NE  IF_GT  IF_GE  IF_LT  IF_LE
                if (_line.IfType == "EQ" ||
                    _line.IfType == "IF" || _line.IfType == "IF_EQ" ||
                    _line.IfType == "WHILE" || _line.IfType == "WHIL")
                {
                    _mybl = (_val_1 == _val_2);//
                }
                else if (_line.IfType == "NE" || _line.IfType == "IF_NE" || _line.IfType == "WHILE_NE")
                {
                    _mybl = (_val_1 != _val_2);//
                }
                else if (_line.IfType == "GT" || _line.IfType == "IF_GT" || _line.IfType == "WHILE_GT")
                {
                    _mybl = (_val_1 > _val_2);//
                }
                else if (_line.IfType == "GE" || _line.IfType == "IF_GE" || _line.IfType == "WHILE_GE")
                {
                    _mybl = (_val_1 >= _val_2);//
                }
                else if (_line.IfType == "LT" || _line.IfType == "IF_LT" || _line.IfType == "WHILE_LT")
                {
                    _mybl = (_val_1 < _val_2);//
                }
                else if (_line.IfType == "LE" || _line.IfType == "IF_LE" || _line.IfType == "WHILE_LE")
                {
                    _mybl = (_val_1 <= _val_2);//
                }
                else
                {
                    _mybl = false;
                }
                #endregion  // 测试 AND
            }
            return(_mybl);
        }
Esempio n. 3
0
        // 复杂协议格式二: 最优使用 ---------------------------
        // 方法2: 取当前数据类的名字, 要求,数据类与内置功能名称一致



        // ReadStatus,{0}{1}|01 02 03 04 05 v02.Acc_2|v03.Dec_2
        public string doObjectToString(object vEn)
        {
            string        _rec = "";
            Base_Set_Para _en  = vEn as Base_Set_Para;

            if (_en.v00.cmdName == eDev485obj.Free)
            {
                return(_rec);
            }
            string _format     = _faim3.dict_CmdFormats[_en.v00.cmdName.ToString()].Format;//[2];
            string _split_flag = " ";

            string[] _arr1 = _format.Split(_split_flag[0]);
            for (int i = 0; i < _arr1.Length; i++)
            {
                if (!_arr1[i].Contains('.'))
                {
                    continue;
                }
                string[] _ar_0 = _arr1[i].Split('|');
                for (int j = 0; j < _ar_0.Length; j++)
                {
                    string[] _ar_1 = _ar_0[j].Split('_');
                    int      _len  = 2;
                    if (_ar_1.Length > 1)
                    {
                        _len = Convert.ToInt32(_ar_1[1]);
                    }
                    string _v_1 = F_TransCalc.doGetValue_byName(vEn, _ar_1[0]);
                    if (j == 0)
                    {
                        _arr1[i] = F_TransCalc.doDecToHexs(
                            F_Parse._ConverToDouble(_v_1), 16, _len, _split_flag);
                    }
                    else
                    {
                        _arr1[i] = _arr1[i] + _split_flag +
                                   F_TransCalc.doDecToHexs(
                            F_Parse._ConverToDouble(_v_1), 16, _len, _split_flag);
                    }
                }
            }
            //
            string _k = _en.v00.cmdName.ToString() + "_k";

            if (_faim3.dict_CmdFormats.ContainsKey(_k))
            {
                _k = _faim3.dict_CmdFormats[_k].Format;//[2];
                string[] _ar_11 = _k.Split('|');
                foreach (var item in _ar_11)
                {
                    string[] _arr12 = item.Split('_');
                    int      _idx   = Convert.ToInt32(_arr12[0]) - 1;
                    int      _add   = Convert.ToInt32(_arr12[1], 16);
                    int      _mul   = Convert.ToInt32(_arr12[2], 16);
                    int      _val   = Convert.ToInt32(_arr1[_idx], 16);
                    _val        = _add + _val * _mul;
                    _arr1[_idx] = _val.ToString("X").PadLeft(2, '0');
                }
            }
            for (int i = 0; i < _arr1.Length; i++)
            {
                if (_rec == "")
                {
                    _rec = _arr1[i];
                }
                else
                {
                    _rec = _rec + _split_flag + _arr1[i];
                }
            }
            _rec = string.Format(_rec, _en.v00.cmdName.ToString(), _en.v01.AxisNum.ToString("X").PadLeft(2, '0'));
            return(_rec);
        }
Esempio n. 4
0
        // 赋值

        static void _LET_X_old(clsFaim3 _faim3, DAL_CommData _dao_comm, string _flowName, string _caseName, string vIfType)
        {
            clsFlow _flow = _faim3.dict_Flow[_flowName];

            #region // 条件
            Dictionary <string, clsCaseChildInfo> _dictCaseChildInfo =
                _faim3.dict_CaseState[_flow.alartCase].dict_CaseChildInfo;
            // string vIfType = "Line";
            if (!_dictCaseChildInfo.ContainsKey(vIfType))
            {
                return;
            }
            int    _lineStart = _dictCaseChildInfo[vIfType].lineStart; // 起始行号
            string _IfType    = vIfType + ".GOTO.ADD.DEC.INC.";
            if (_lineStart < 0)
            {
                return;                                  // 条件:没有指定的结构块起始行号
            }
            clsDevTestBits _line = _faim3.lst_DevTestBits[_lineStart];
            if (_line.flowCase != _caseName)
            {
                return;                              // 条件:顺序执行时, 如步骤名不对, 则结束当前结构
            }
            if (!_IfType.Contains(_line.IfType.ToUpper() + "."))
            {
                return;                                                 //条件:没有结构块指定的命令
            }
            #endregion

            int _cnt_break = 0;                                             // 计数器

            for (int i = _lineStart; i < _faim3.lst_DevTestBits.Count; i++) // 文档对象驱动
            {
                if (_faim3.isEmergency > 0)
                {
                    break;
                }
                #region // for
                _line = _faim3.lst_DevTestBits[i];
                if (_line.Remark.ToUpper().StartsWith("CODE"))
                {
                    continue;                                               //条件:文档行指定为以代码实现
                }
                if (_line.flowCase != _caseName)
                {
                    break;                              // 条件:顺序执行时, 如步骤名不对, 则结束当前结构
                }
                if (!_IfType.Contains(_line.IfType.ToUpper() + "."))
                {
                    break;                                                 //条件:没有结构块指定的命令
                }
                _do_WaitLine(_faim3, _dao_comm, _flowName, eWF_State.Line, i);
                #region // 开始执行


                System.Diagnostics.Stopwatch _tmr = new System.Diagnostics.Stopwatch(); //实例化一个计时器
                _tmr.Start();
                long _trm_begin = _tmr.ElapsedMilliseconds;                             // 毫秒

                int _bit = -1;                                                          // 位

                int _val_2 = F_TransCalc._Get_Value_2(_faim3, _line.HL);
                #region                               // SLEEP GOTO ADD DEC INC
                if ("SLEEP" == _line.vName.ToUpper()) //
                {
                    System.Threading.Thread.Sleep(_val_2);
                }
                else if ("GOTO" == _line.IfType.ToUpper())
                {
                    _flow.nextCase = _line.vName;
                }
                else if ("ADD" == _line.IfType.ToUpper())
                {
                    if (_faim3._dim_dict.ContainsKey(_line.vName))
                    {
                        #region                               // _dim_dict 动态变量

                        _bit = _faim3._dim_dict[_line.vName]; // 内存位 自定义名为下标, 分配地址, 寻址
                        _faim3._dim[_bit] += _val_2;          // 直接设置, 用以联动     dim[Feeder05_unLink] = Value
                        #endregion
                    }
                    else if (_line.vName.ToUpper().StartsWith("_FAIM3") ||
                             _line.vName.ToUpper().StartsWith("CLSFAIM3"))
                    {
                        int _ls = Convert.ToInt32(F_TransCalc.doGetValue_byName(_faim3, _line.vName));
                        F_TransCalc.doSetValue_byName(_faim3, _line.vName, _ls + _val_2);
                    }
                }
                else if ("DEC" == _line.IfType.ToUpper())
                {
                    if (_faim3._dim_dict.ContainsKey(_line.vName))
                    {
                        #region                               // _dim_dict 动态变量

                        _bit = _faim3._dim_dict[_line.vName]; // 内存位 自定义名为下标, 分配地址, 寻址
                        _faim3._dim[_bit] -= _val_2;          // 直接设置, 用以联动     dim[Feeder05_unLink] = Value
                        #endregion
                    }
                    else if (_line.vName.ToUpper().StartsWith("_FAIM3") ||
                             _line.vName.ToUpper().StartsWith("CLSFAIM3"))
                    {
                        int _ls = Convert.ToInt32(F_TransCalc.doGetValue_byName(_faim3, _line.vName));
                        F_TransCalc.doSetValue_byName(_faim3, _line.vName, _ls - _val_2);
                    }
                }
                else if ("INC" == _line.IfType.ToUpper())
                {
                    if (_faim3._dim_dict.ContainsKey(_line.vName))
                    {
                        #region                               // _dim_dict 动态变量

                        _bit = _faim3._dim_dict[_line.vName]; // 内存位 自定义名为下标, 分配地址, 寻址
                        _faim3._dim[_bit] += 1;               // 直接设置, 用以联动     dim[Feeder05_unLink] = Value
                        #endregion
                    }
                    else if (_line.vName.ToUpper().StartsWith("_FAIM3") ||
                             _line.vName.ToUpper().StartsWith("CLSFAIM3"))
                    {
                        int _ls = Convert.ToInt32(F_TransCalc.doGetValue_byName(_faim3, _line.vName));
                        F_TransCalc.doSetValue_byName(_faim3, _line.vName, _ls - 1);
                    }
                }
                #endregion
                else if (_faim3.dict_DevFunction.ContainsKey(_line.vName))
                {
                    #region                                                       // BT_OUT
                    clsDevFunction _df    = _faim3.dict_DevFunction[_line.vName]; //
                    int            _devNo = _df.devNo;                            //设备号

                    int _refIdx = _faim3.sect_idev * _devNo;
                    _bit = _refIdx + _df.Index;//内存位

                    if (_df.varName.ToUpper() == "BT_OUT")
                    {
                        _faim3.Comm_Data.bt_out[0][_bit] = _val_2;//输出电位
                    }
                    #endregion
                }
                else if (_faim3._dim_dict.ContainsKey(_line.vName))
                {
                    #region                               // _dim_dict 动态变量 dim[Feeder05_unLink] <== Value
                    _bit = _faim3._dim_dict[_line.vName]; // 内存位

                    _faim3._dim[_bit] = _val_2;           // 直接设置, 用以联动
                    #endregion
                }
                else if (_line.vName.ToUpper().StartsWith("_FAIM3") ||
                         _line.vName.ToUpper().StartsWith("CLSFAIM3"))
                {
                    F_TransCalc.doSetValue_byName(_faim3, _line.vName, _val_2);
                }
                else if (_cnt_break > 0)  // 截断
                {
                    break;
                }
                #endregion
                _cnt_break++;
                _line.times++;                                             // 此行使用的次数

                _line.tmr = (int)(_tmr.ElapsedMilliseconds - _trm_begin);  // 本次流程完成用时
                _faim3.dict_Threads[_flowName].Info.tmr_real += _line.tmr; // 当前步骤 实际占用总时长 += 每语句使用的时间
                #endregion
            }
        }
Esempio n. 5
0
        static void _TEST_2(clsFaim3 _faim3, DAL_CommData _dao_comm, string _flowName, string _caseName, ref bool _vbl)
        {
            if (_flowName == "DAL_Buttons")
            {
                _vbl = true;
                return;
            }
            bool         _mybl      = true;
            clsFlow      _flow      = _faim3.dict_Flow[_flowName];
            string       _alartCase = _flow.alartCase;
            clsCaseState _caseState = _faim3.dict_CaseState[_alartCase];
            Dictionary <string, clsCaseChildInfo> _dictCaseChildInfo =
                _caseState.dict_CaseChildInfo;
            string PartName = _TESTB;// "TESTB";
            string _IfType  = _CMD_TEST;

            #region                                        // 指定步骤无此部份指令
            if (!_dictCaseChildInfo.ContainsKey(PartName)) // 条件:指定步骤无此部份指令
            {
                _vbl = _mybl;
                return;
            }
            #endregion
            int _lineStart = _dictCaseChildInfo[PartName].lineStart;  // 起始行号
            if (_lineStart < 0)
            {
                return;                                          // 条件:没有指定的结构块起始行号
            }
            int _lineEnd = _dictCaseChildInfo[PartName].lineEnd; // 终止行号
            if (_lineEnd < 0)                                    // 只有一行时
            {
                _lineEnd = _lineStart;
            }
            for (int i = _lineStart; i <= _lineEnd; i++) // 文档对象驱动
            {
                if (_faim3.isEmergency > 0)
                {
                    break; // 急停
                }
                #region    // for
                clsDevTestBits _line = _faim3.lst_DevTestBits[i];
                if (_line.Remark.ToUpper().StartsWith("CODE") ||
                    _line.IfType.ToUpper() == "NG")
                {
                    continue;                                             //条件:文档行指定为以代码实现
                }
                if (F_CaseSub._CMD_NULL.Contains(_line.IfType.ToUpper())) // 占位行
                {
                    continue;
                }
                if (_line.isDebug == 1)                   /*#*/
                {
                    if (_faim3.dict_KV["isDebug"] != "1") // 非 debug 状态下,不运行 debug 行  cfgDev_Cards.xls
                    {
                        continue;
                    }
                }
                _do_WaitLine(_faim3, _dao_comm, _flowName, eWF_State.Test, i);// 单步
                if (_faim3.isEmergency > 0)
                {
                    break;                                      // 急停
                }
                if (_flow.isStepPass || _faim3.isStepPass != 0) // 步骤直通
                {
                    _mybl = true;
                    continue;
                }
                #region                                                                 // 开始执行
                _line = _faim3.lst_DevTestBits[i];
                System.Diagnostics.Stopwatch _tmr = new System.Diagnostics.Stopwatch(); //实例化一个计时器
                _tmr.Start();
                long   _trm_begin = _tmr.ElapsedMilliseconds;                           // 毫秒
                int    _bit       = -1;                                                 // 位
                int    _val_1     = -1;
                string _str_2     = "   ";
                int    _val_2     = F_TransCalc._Get_Value_2(_faim3, _line.HL, ref _str_2);
                int    _val_3     = -1;
                if (_faim3.dict_DevFunction.ContainsKey(_line.vName))
                {
                    #region                                                    // dict_DevFunction IO口定义 vName : 4D_GS, 6RS_0302, 6D_ER, 6D_RP
                    clsDevFunction _df = _faim3.dict_DevFunction[_line.vName]; //
                    _bit = _faim3.sect_iDev * _df.devNo + _df.Index;           // 内存位
                    int _ref_1i = -1;
                    int _ref_1s = -1;
                    switch (_df.varName.ToUpper())
                    {
                    // MODBUS
                    case "MODBUS":
                        _ref_1i = _faim3.sect_iDev * _df.devNo;
                        _bit    = _faim3.sect_iDev * _df.devNo + _df.Index;
                        // 取比较值

                        _val_1 = _faim3.Comm_Data.bt_in[0][_bit];
                        break;

                    // 74X
                    case "BT_IN":
                        _ref_1i = _faim3.sect_iDev * _df.devNo;
                        _ref_1s = _faim3.sect_sDev * _df.devNo + _faim3.sect_sDev_start;
                        _faim3.Comm_Data.bt_out[0][_ref_1i + Convert.ToInt32(_faim3.dict_KV["LLine"])] = _df.ioIdx;
                        _bit = _faim3.sect_iDev * _df.devNo + _df.ioIdx;
                        // 发出消息 条件:1.bt_out  2._devNo   3.snd_iLen
                        _faim3.Comm_Data.bt_out[0][_ref_1i + _faim3.snd_iLen + 1] = -99;
                        _dao_comm.set_bt_out(_ref_1i + _faim3.snd_iLen + 1, _bit);      // bt_in[164]=6  DI_R1:DI_ReadLine
                        // 取比较值

                        _val_1 = _faim3.Comm_Data.bt_in[0][_bit];
                        break;

                    case "BT_OUT":
                        _ref_1i = _faim3.sect_iDev * _df.devNo;
                        _bit    = _faim3.sect_iDev * _df.devNo + _df.Index;
                        // 取比较值
                        _val_1 = _faim3.Comm_Data.bt_out[0][_bit];
                        break;

                    // 204C
                    case "A_ST":
                    case "A_IO":
                        clsProtocol._204C(_faim3, _dao_comm, _df.varName, _df.ioIdx.ToString(), _df.devNo); // 发出自定义命令
                        _val_1 = _faim3.Comm_Data.bt_in[0][_bit];                                           // 取出值, 可能多次才能取到
                        break;

                    // RS485
                    case "ReadPos":
                    case "ReadStatus":
                    case "READPOS":
                    case "READSTATUS":
                        // 发出命令
                        int _devNo_1 = clsProtocol.getSendData(_faim3, i);
                        _ref_1i = _faim3.sect_iDev * _devNo_1;
                        _ref_1s = _faim3.sect_sDev * _devNo_1 + _faim3.sect_sDev_start;
                        // 发出消息 条件:1.bt_out  2._devNo   3.snd_iLen
                        _faim3.Comm_Data.bt_out[0][_ref_1i + _faim3.snd_iLen] = -99;
                        _dao_comm.set_bt_out(_ref_1i + _faim3.snd_iLen, 1);
                        //
                        _val_3 = F_TransCalc._Get_Value_2(_faim3, _line.Reset);
                        _val_1 = _faim3.Comm_Data.bt_in[0][_bit];     // 取出值, 可能多次才能取到
                        break;
                    }
                    #endregion
                }
                else if (_faim3._dim_dict.ContainsKey(_line.vName))
                {
                    #region                                 // _dim_dict  动态变量
                    _bit   = _faim3._dim_dict[_line.vName]; // 自定义名为下标, 分配地址, 寻址
                    _val_1 = _faim3._dim[_bit];
                    #endregion
                }
                else if (_line.vName.ToUpper().StartsWith("_FAIM3") ||
                         _line.vName.ToUpper().StartsWith("CLSFAIM3"))
                {
                    #region // _FAIM3 大数据
                    _bit   = 1;
                    _val_1 = Convert.ToInt32(F_TransCalc.doGetValue_byName(_faim3, _line.vName));
                    #endregion
                }
                _line.times++;                                             // 此行使用的次数
                _line.tmr = (int)(_tmr.ElapsedMilliseconds - _trm_begin);  // 本次流程完成用时
                _faim3.dict_Threads[_flowName].Info.tmr_real += _line.tmr; // 当前步骤 实际占用总时长 += 每语句使用的时间
                // TEST
                if (_bit > -1)
                {
                    if (_flow.isStepLine || _flow.isStepLine)
                    {
                        int _loc = 0;
                        foreach (var item in _faim3.dict_Flow)
                        {
                            if (item.Key == _flowName)// 流程名 转 流程号
                            {
                                string _msg = string.Format("TEST {0} {1} {2} {3} {4} {5}",
                                                            _flow.currCase,
                                                            _flowName,
                                                            _bit,
                                                            _val_1,
                                                            _line.IfType,
                                                            _val_2
                                                            );
                                _dao_comm.set_arr_str(_loc + 800, _msg);
                                break;
                            }
                            _loc++;
                        }
                    }
                    #region // 测试 AND
                    if (_line.IfType == "EQ_AND" || _line.IfType == "AND_EQ" || _line.IfType == "EQ")
                    {
                        _mybl = _mybl && (_val_1 == _val_2);//
                    }
                    else if (_line.IfType == "NE_AND" || _line.IfType == "AND_NE" || _line.IfType == "NE")
                    {
                        _mybl = _mybl && (_val_1 != _val_2);//
                    }
                    else if (_line.IfType == "GT_AND" || _line.IfType == "AND_GT" || _line.IfType == "GT")
                    {
                        _mybl = _mybl && (_val_1 > _val_2);//
                    }
                    else if (_line.IfType == "GE_AND" || _line.IfType == "AND_GE" || _line.IfType == "GE")
                    {
                        _mybl = _mybl && (_val_1 >= _val_2);//
                    }
                    else if (_line.IfType == "LT_AND" || _line.IfType == "AND_LT" || _line.IfType == "LT")
                    {
                        _mybl = _mybl && (_val_1 < _val_2);//
                    }
                    else if (_line.IfType == "LE_AND" || _line.IfType == "AND_LE" || _line.IfType == "LE")
                    {
                        _mybl = _mybl && (_val_1 <= _val_2); //
                    }
                    #endregion                               // 测试 AND
                    #region                                  // BIT BITN
                    else if (_line.IfType == "BIT")          // 为高有效
                    {
                        // _val_2= 5; Math.Pow(2, _val_2) = 32.0 = 0x20 = 0010 0000
                        if (_val_2 < 0)
                        {
                            _val_2 = 0;
                        }
                        bool _rb = false;
                        if (_val_1 > -1)
                        {
                            _rb = (_val_1 & (int)Math.Pow(2, _val_2)) == Math.Pow(2, _val_2);
                        }
                        else
                        {
                            _rb = false;
                        }
                        _mybl = _mybl && _rb;        //
                    }
                    else if (_line.IfType == "BITN") // 为低有效
                    {
                        if (_val_2 < 0)
                        {
                            _val_2 = 0;
                        }
                        bool _rb = false;
                        if (_val_1 > -1)
                        {
                            _rb = (_val_1 & (int)Math.Pow(2, _val_2)) != Math.Pow(2, _val_2);
                        }
                        else
                        {
                            _rb = false;
                        }
                        _mybl = _mybl && (_rb);//
                    }
                    #endregion
                    #region // 测试 OR
                    else if (_line.IfType == "EQ_OR" || _line.IfType == "OR_EQ")
                    {
                        _mybl = _mybl || (_val_1 == _val_2);//
                        if (_mybl)
                        {
                            break;
                        }
                    }
                    else if (_line.IfType == "NE_OR" || _line.IfType == "OR_NE")
                    {
                        _mybl = _mybl || (_val_1 != _val_2);//
                        if (_mybl)
                        {
                            break;
                        }
                    }
                    else if (_line.IfType == "GT_OR" || _line.IfType == "OR_GT")
                    {
                        _mybl = _mybl || (_val_1 > _val_2);//
                        if (_mybl)
                        {
                            break;
                        }
                    }
                    else if (_line.IfType == "GE_OR" || _line.IfType == "OR_GE")
                    {
                        _mybl = _mybl || (_val_1 >= _val_2);//
                        if (_mybl)
                        {
                            break;
                        }
                    }
                    else if (_line.IfType == "LT_OR" || _line.IfType == "OR_LT")
                    {
                        _mybl = _mybl || (_val_1 < _val_2);//
                        if (_mybl)
                        {
                            break;
                        }
                    }
                    else if (_line.IfType == "LE_OR" || _line.IfType == "OR_LE")
                    {
                        _mybl = _mybl || (_val_1 <= _val_2);//
                        if (_mybl)
                        {
                            break;
                        }
                    }
                    #endregion        // 测试 OR
                }
                #endregion            // 开始执行
                #endregion            // for
            }
            _flow.isStepPass = false; // 取消直通
            _vbl             = _mybl;
            return;
        }