Ejemplo n.º 1
0
        // 事件
        //public event FaimDelegate.delOnMessage OnMessage;
        // 变量
        //clsMethodWhile_BLL bo_MethodWhile = null;
        // 构造

        public F_ThManager(clsFaim3 v_faim3, DAL_CommData v_dao_comm)
        {
            _faim3    = v_faim3;
            _dao_comm = v_dao_comm;
            //bo_MethodWhile = new clsMethodWhile_BLL(_faim3);
            //bo_MethodWhile.OnMessage += new FaimDelegate.delOnMessage(evt_OnMessage_MethodWhile);
        }
Ejemplo n.º 2
0
        static void _SetValue(clsFaim3 _faim3, clsDevTestBits _line, int _val_2)
        {
            int _bit = -1;// 位

            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);
            }
        }
Ejemplo n.º 3
0
 protected int do_BaseNew(clsFaim3 v_faim3, DAL_CommData v_dao_comm)
 {
     _faim3    = v_faim3;
     _dao_comm = v_dao_comm;
     _ret      = do_InitData();
     return(_ret);
 }
Ejemplo n.º 4
0
        static string _dao_comm_set_msg(clsFaim3 _faim3, string _flowName, int caseLineIdx, ref int _loc)
        {
            string         _msg       = "";
            clsFlow        _flow      = _faim3.dict_Flow[_flowName];
            clsCaseState   _caseState = _faim3.dict_CaseState[_flow.alartCase];
            clsDevTestBits _line      = _faim3.lst_DevTestBits[caseLineIdx];

            foreach (var item in _faim3.dict_Flow)
            {
                if (item.Key == _flowName)// 流程名 转 流程号
                {
                    // 0当前步骤, 1流程名, 1流程状态/步骤, 3行号, 4命令语句:5变量名=6值 7.转入模式 8.转出模式
                    _msg = string.Format("{0} {1} {2} {3} {4}{5} {6} {7} {8} {9}",
                                         _flow.currCase,
                                         _flowName,
                                         _flow.eState.ToString(),
                                         caseLineIdx,
                                         _line.isDebug == 1 ? "#" : ".",
                                         _line.IfType,
                                         _line.vName,
                                         _line.HL,
                                         _caseState.beginMode,
                                         _caseState.endMode
                                         );
                    break;
                }
                _loc++;
            }
            return(_msg);
        }
Ejemplo n.º 5
0
        public clsWhile204(clsFaim3 v_faim3, DAL_CommData v_dao_comm, string vDevNo)
        {
            _CMD = "";
            int _bit = 1;
            // 常数
            int _use_Axis = Convert.ToInt32(v_faim3.dict_KV["use_Axis"]);

            for (int i = 0; i < 8; i++)
            {
                if ((_use_Axis & _bit) == _bit)
                {
                    _lstAxisId.Add(i);
                }
                _bit = _bit << 1;
            }
            // 参数
            _devNo    = Convert.ToInt32(vDevNo);
            _flowName = string.Format("{0}_{1}", v_faim3.dict_DevCards[_devNo].Name, _devNo); // [2]
            // 初始化 基类
            base.do_New(v_faim3, v_dao_comm, _flowName);
            _protocol = new clsProtocol(_faim3, _dao_comm);           // 协议
            if (!_dao_comm.dict_DevIo.ContainsKey(_devNo.ToString())) // 注册设备号 对应 设备对象
            {
                _device = new cls204C(_faim3, _dao_comm, _devNo);     // 设备
                _dao_comm.dict_DevIo.Add(_devNo.ToString(), (IFaimIO)_device);
            }
            _dao_comm.OnEchoIO += new F_Delegate.delEcho(evt_comm_OnEchoIO); // 加消息

            _dict_cmd.Add(_CMD01_Read_status, "");                           // 第1命令
            _dict_cmd.Add(_CMD02_Read_input, "");                            // 第2命令
        }
Ejemplo n.º 6
0
        // MOVR 204C 011/3  -- 命令 设备 轴号/行号
        public static void _204C(clsFaim3 _faim3, DAL_CommData _dao_comm, int idx)
        {
            clsDevTestBits _line = _faim3.lst_DevTestBits[idx];
            clsDevFunction _df   = _faim3.dict_DevFunction[_line.vName];//

            _204C(_faim3, _dao_comm, _line.IfType, _line.HL, _df.devNo);
        }
Ejemplo n.º 7
0
 public frmFreeCode_09(clsFaim3 v_faim3, DAL_CommData v_dao_comm)
 {
     _faim3    = v_faim3;
     _dao_comm = v_dao_comm;
     CheckForIllegalCrossThreadCalls = false;
     InitializeComponent();
 }
Ejemplo n.º 8
0
        // 线程名/流程名/设备ID, 忽略返回值

        protected int do_New(clsFaim3 v_faim3, DAL_CommData v_dao_comm, string vflowName)
        {
            _faim3    = v_faim3;
            _dao_comm = v_dao_comm;
            // 无流程名, 则取类名
            _flowName = (string.IsNullOrEmpty(vflowName)) ? this.GetType().Name : vflowName;
            #region                                         // dict_Threads 线程池

            if (_faim3.dict_Threads.ContainsKey(_flowName)) // 存在key
            {
                FACC.F_Log.Debug_1("do_New()", string.Format("--->>>> {0}流程/设备存在", _flowName));
                return(-1);                  //
            }
            clsThread _en = new clsThread(); // 线程消息
            _en.Info          = new clsThreadInfo();
            _en.Name          = _flowName;
            _en.Info.flowName = _flowName;
            // 专用线程代理   dict_Threads.Add
            _en.Del = new System.Threading.ThreadStart(do_Sub_While); // 实例化代理

            _faim3.dict_Threads.Add(_flowName, _en);
            #endregion
            F_Log.Debug_1("do_New()", string.Format("初始化 流程:{0}", _flowName));
            return(0);
        }
Ejemplo n.º 9
0
        public frmCaseStep_06(clsFaim3 v_faim3, DAL_CommData v_dao_comm, F_ThManager v_bo_ThreadMana)
        {
            _faim3              = v_faim3;
            _dao_comm           = v_dao_comm;
            _dao_comm.OnEchoIO += new F_Delegate.delEcho(_dao_comm_OnEchoIO);
            _bo_ThreadMana      = v_bo_ThreadMana;

            CheckForIllegalCrossThreadCalls = false;
            InitializeComponent();
        }
Ejemplo n.º 10
0
 public clsFlowWhile(clsFaim3 v_faim3, DAL_CommData v_dao_comm, string vflowName)
 {
     base.do_New(v_faim3, v_dao_comm, vflowName);
     if (!_faim3.dict_Flow.ContainsKey(vflowName))
     {
         FACC.F_Log.Debug_1(this.GetType().Name, "--->>>> 无  流程 " + vflowName);
         return;
     }
     _flow = _faim3.dict_Flow[vflowName];
 }
Ejemplo n.º 11
0
        //'直接以值正(1)/负(0)决定输出1/0  _do2_AR(_devNo, 6, eSwitch.On)
        internal void doSend(clsFaim3 _faim3, int vDevNo, int vBit, eHL val)
        {
            int _bit = vBit;                                           //

            if (Math.Abs(_bit) < 99 && 99 < _faim3.sect_iDev)          // 需要设备号,以调整绝对寻址
            {
                _bit = vDevNo * _faim3.sect_iDev + Math.Abs(vBit);     //
            }
            _faim3.Comm_Data.bt_out[0][_bit] = ((int)val > 0 ? 1 : 0); //
        }
Ejemplo n.º 12
0
        public static void doCreateInstance(clsFaim3 v_faim3, DAL_CommData v_dao_comm, string vflowName)
        {
            string _fn  = F_Const.path_flowDLL + vflowName + ".dll";
            string _ns  = "F_CaseWhile";
            object _obj = null;

            if (vflowName == "clsWhile485" || vflowName == "clsWhile74x" || vflowName == "clsWhileTcp")
            {
                // 命名空间 / 类名 / faim3 / dao / new(形参:用户类名)
                _obj = doCreateInstance_byName_Para <object>(
                    _ns,
                    vflowName,
                    v_faim3,
                    v_dao_comm,
                    vflowName   //
                    );
            }
            else
            {
                #region // flow . do while
                // 命名空间 / 类名 / faim3 / dao / new(形参:用户类名)
                _obj = doCreateInstance_byName_Para <object>(
                    _ns,
                    "clsFlowWhile",
                    v_faim3,
                    v_dao_comm,
                    vflowName  // xxx
                    );
                if (_obj == null)
                {
                    FACC.F_Log.Debug_1("clsTool_ASM", string.Format("!!01 未创建对象 :{0}", vflowName));
                    return;
                }
                FACC.F_Log.Debug_1("clsTool_ASM", string.Format("加入流程:{0}", vflowName));
                // PartA
                IDAL_Temp_Part _Idal = null;
                _obj = doCreateInstance_byFile <object>(
                    _fn,
                    vflowName,
                    "PartA"
                    );
                _Idal = _obj as IDAL_Temp_Part;
                _Idal.do_New(v_faim3, v_dao_comm);
                // PartB
                FACC.F_Log.Debug_1("clsTool_ASM", string.Format("加入步骤: {0}_PartA", vflowName));
                _obj = doCreateInstance_byFile <object>(
                    _fn, vflowName,
                    "PartB"
                    );
                _Idal = _obj as IDAL_Temp_Part;
                _Idal.do_New(v_faim3, v_dao_comm);
                #endregion }
            }
            FACC.F_Log.Debug_1("clsTool_ASM", string.Format("按钮: 加入步骤: {0}_PartB", vflowName));
        }
Ejemplo n.º 13
0
        bool doPartA(clsFaim3 v_faim3, DAL_CommData v_dao_comm, string vflowName)
        {
            string  _cls_Name = "DAL_PartA";
            clsLogs _logs     = new clsLogs();
            clsFlow _flow     = v_faim3.dict_Flow[vflowName];
            string  _currCase = _flow.nextCase;

            F_Log.Debug_1(_cls_Name, String.Format("流程:{0}: 步骤:{1}",
                                                   vflowName, _currCase));
            _flow.alartCase = _currCase;
            if (!v_faim3.dict_CaseState.ContainsKey(_currCase))
            {
                //'A: 步骤.txt 文件中没有注册该步骤参数
                _logs.No   = v_faim3.dict_CaseState[_currCase].No;
                _logs.Name = (_currCase + "_没注册 步骤");
                _flow.RunLog.Add(_logs);
                F_Log.Debug_1(_cls_Name, string.Format("--->>>> 没注册 流程:{0}: 步骤:{1}", vflowName, _currCase));
                return(true);
            }
            clsCaseState _en_State = v_faim3.dict_CaseState[_currCase];

            if ((_en_State.Times > 0))                                                            // 逻辑模型: 执行次数至少有一次, 如 <1, 则不执行AR(),  只执行判断, 以实现流程在等待联动消息的逻辑
            {
                F_Delegate.delCasePartA_R _doPartA = _dao_comm.dict_Methods.doPartA_R[_currCase]; // 通过代理, 从步骤集中取出一个步骤, 执行其方法()
                //
                _logs.No   = v_faim3.dict_CaseState[_currCase].No;
                _logs.Name = _currCase;
                _flow.RunLog.Add(_logs);
                _doPartA(v_faim3, v_dao_comm);
                // AR
                // Delay
                if ((_en_State.Delay > -1))//
                {
                    Thread.Sleep(_en_State.Delay);
                }
                //
            }
            if (string.IsNullOrEmpty(_en_State.No))//逻辑模型:  无BT报警号 检测的步骤, 只执行 AR(), 不执行AR(), 实现两个 AR() 串联(直通)的逻辑
            {
                doGet_NextCase(_faim3, ref _flow, _currCase);
            }
            else
            {
                // 逻辑模型:  无BT报警号 无报警延时, 只执行 AR(), 不执行AR(), 实现两个 AR() 串联(直通)的逻辑
                string _testCase = (_currCase + F_Const.fix_CaseT);
                if (_flow.nextCase == _flow.currCase)
                {
                    _flow.alartCase = _currCase;
                    _flow.nextCase  = _testCase; // ==> Test  当前流程名 + _T
                    F_Log.Debug_1(_cls_Name, String.Format("取到 测试步骤名:{0}", _flow.nextCase));
                }
            }
            return(true);
        }
Ejemplo n.º 14
0
 public clsWhileTcp(clsFaim3 v_faim3, DAL_CommData v_dao_comm, string vDevNo)
 {
     _CMD       = "";
     MaxAxisNum = Convert.ToInt32(v_faim3.dict_KV["cnt_Axis"]);
     _devNo     = Convert.ToInt32(vDevNo);
     _flowName  = string.Format("{0}_{1}", v_faim3.dict_DevCards[_devNo].Name, vDevNo);
     base.do_New(v_faim3, v_dao_comm, _flowName);
     _device = new clsTCP(_faim3, _dao_comm, _devNo);
     if (!_dao_comm.dict_DevIo.ContainsKey(_devNo.ToString()))
     {
         _dao_comm.dict_DevIo.Add(_devNo.ToString(), (IFaimIO)_device);
     }
 }
Ejemplo n.º 15
0
        // 设备号的来源可能为多个因素

        public static void _204C(clsFaim3 _faim3, DAL_CommData _dao_comm, string IfType, string HL, int _devNo)
        {
            int _ref_1i = _devNo * _faim3.sect_iDev;                          // 偏移
            int _ref_1s = _devNo * _faim3.sect_sDev + _faim3.sect_sDev_start; // 偏移

            // 行号为消息

            _faim3._sss[_ref_1s + _faim3.snd_sAsc] = IfType;   // 命令
            int _val_2 = F_TransCalc._Get_Value_2(_faim3, HL); // 文档的值: 数值


            _faim3._sss[_ref_1s + _faim3.snd_sLen] = _val_2.ToString(); // 轴号表/行号
            _faim3.Comm_Data.bt_out[0][_ref_1i]    = -99;
            _dao_comm.set_bt_out(_ref_1i, _devNo);                      // 设备 消息
        }
Ejemplo n.º 16
0
        // from : file
        static T doCreateInstance <T>(
            string vFn, string nsName, string clsName,
            clsFaim3 _faim3, string userClassName = "")
        {
            string _name = nsName + "." + clsName;

            string _fn = vFn;

            _fn = do_GetFullFileName(_fn);
            //if (!_fn.Contains("file://"))
            //    return default(T);



            return(do_CreateInstance <T>(_fn, _name, _faim3, userClassName));
        }
Ejemplo n.º 17
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);
            }
        }
Ejemplo n.º 18
0
 public bool Part_2(clsFaim3 v_faim3, DAL_CommData v_dao_comm)
 {
     Part_BT(v_faim3, v_dao_comm);
     #region // xls
     do_TEST2(v_faim3, v_dao_comm, _flowName, _caseName, ref _bl);
     if (_bl)
     {
         do_PART_C(v_faim3, v_dao_comm, _flowName, _caseName);
     }
     else
     {
         NG(v_faim3, v_dao_comm, _flowName, _caseName);
     }
     #endregion
     return(_bl);
 }
Ejemplo n.º 19
0
 protected int do_New(clsFaim3 v_faim3, DAL_CommData v_dao_comm)
 {
     _ret = do_BaseNew(v_faim3, v_dao_comm);
     if (_dao_comm.dict_Methods.doCase.ContainsKey(_caseName))
     {
         FACC.F_Log.Debug_1(_clsName, String.Format("--->>>> 初始化失败-3: {0} 步骤名 已存在", _caseName));
         _ret = -3;
     }
     if (_ret < 0)
     {
         return(_ret);
     }
     _dao_comm.dict_Methods.doCase.Add(_caseName, new F_Delegate.delCase(PartA));            //'通用代理1
     _dao_comm.dict_Methods.doPartA_R.Add(_caseName, new F_Delegate.delCasePartA_R(Part_1)); //'通用代理2
     FACC.F_Log.Debug_1(_clsName, String.Format("初始化 步骤:{0}", _caseName));
     return(0);
 }
Ejemplo n.º 20
0
        static void _dao_comm_set_arr_str800(clsFaim3 _faim3, DAL_CommData _dao_comm, string _flowName, int caseLineIdx)
        {
            int     _loc  = 0;
            string  _msg  = "";
            clsFlow _flow = _faim3.dict_Flow[_flowName];

            if (!_flow.isStepLine)
            {
                return;                    // 是“行步进”调试
            }
            clsCaseState _caseState = _faim3.dict_CaseState[_flow.alartCase];

            _msg = _dao_comm_set_msg(_faim3, _flowName, caseLineIdx, ref _loc);
            if (!string.IsNullOrEmpty(_msg))
            {
                _dao_comm.set_arr_str(_loc + 800, _msg);
            }
        }
Ejemplo n.º 21
0
        //protected void btOUT(int vDevNo, int vBit)
        //{
        //    doSend(_faim3, vDevNo, vBit, (eHL)(vBit > 0 ? 1 : 0), _sect_iDev);
        //}
        //'计划中取下一流程名, 用于一步延时后进行下一步
        //'直接以值正(1)/负(0)决定输出1/0  _do2_AR(_devNo, 6, eSwitch.On)
        //protected void doSend(int vDevNo, int vBit, eHL val)
        //{
        //    btOUT(_faim3, vDevNo, vBit, val, _sect_iDev);
        //}
        //'直接以位置正(1)/负(0)决定输出1/0  _do2_AR(_devNo, -6)
        public static void doGet_NextCase(clsFaim3 _faim3, ref clsFlow _flow, string vCaseName)
        {
            string _alartCase = _flow.alartCase;
            //if (_faim3.dict_CaseState.ContainsKey(_alartCase)) return;  //
            clsCaseState _caseState = _faim3.dict_CaseState[_alartCase];

            if (_flow.dictCases.ContainsKey(vCaseName))
            {
                _caseState.endMode = eCaseFlag.Next;
                _flow.nextCase     = _flow.dictCases[vCaseName].nextCase;
            }
            else// '流程结束
            {
                F_Log.Debug_1("DAL_Part", String.Format("--->>>> {0} 没有指定下一个步骤名", vCaseName));
                _caseState.endMode = eCaseFlag.Exist;
                _flow.nextCase     = "Free";
            }
        }
Ejemplo n.º 22
0
 public clsWhile74x(clsFaim3 v_faim3, DAL_CommData v_dao_comm, string vDevNo)
 {
     _devNo    = Convert.ToInt32(vDevNo);
     _flowName = string.Format("{0}_{1}", v_faim3.dict_DevCards[_devNo].Name, vDevNo); //[2]
     base.do_New(v_faim3, v_dao_comm, _flowName);
     if (_flowName.Contains("7432"))
     {
         _device = new cls7432(_faim3, _dao_comm, _devNo);
     }
     if (_flowName.Contains("7230"))
     {
         _device = new cls7230(_faim3, _dao_comm, _devNo);
     }
     if (!_dao_comm.dict_DevIo.ContainsKey(_devNo.ToString()))
     {
         _dao_comm.dict_DevIo.Add(_devNo.ToString(), (IFaimIO)_device);
     }
 }
Ejemplo n.º 23
0
        public clsWhile485(clsFaim3 v_faim3, DAL_CommData v_dao_comm, string vDevNo)
        {
            _CMD        = "";
            _cnt_Axis15 = Convert.ToInt32(v_faim3.dict_KV["cnt_Axis"]);
            _devNo      = Convert.ToInt32(vDevNo);
            _flowName   = string.Format("{0}_{1}", v_faim3.dict_DevCards[_devNo].Name, _devNo);
            base.do_New(v_faim3, v_dao_comm, _flowName);
            _device      = new cls485(_faim3, _dao_comm, _devNo);
            _bo_protocol = new clsProt485(_faim3);
            if (!_dao_comm.dict_DevIo.ContainsKey(_devNo.ToString()))  // 加功能接口

            {
                _dao_comm.dict_DevIo.Add(_devNo.ToString(), (IFaimIO)_device);
            }
            _dao_comm.OnEchoIO += new F_Delegate.delEcho(evt_comm_OnEchoIO);  // 加消息

            _dict_cmd.Add(_CMD_Read01, "");
            _dict_cmd.Add(_CMD_Read08, "");
        }
Ejemplo n.º 24
0
        // from : file  命名空间.类名 / faim3 / dao / new(形参:用户类名)
        static T do_CreateInstance_byName_Para <T>(string vName, clsFaim3 v_faim3, DAL_CommData v_dao_comm, string userClassName)
        {
            object obj = null;
            Type   vT  = Type.GetType(vName);

            obj = Activator.CreateInstance(
                vT,
                new object[] { v_faim3, v_dao_comm, userClassName });
            T _en = (T)obj;//

            if (_en == null)
            {
                F_Log.Debug_1("clsTool_ASM", string.Format("--->>>> 04 未创建对象_{0} {1}", vName, userClassName));
            }
            else
            {
                F_Log.Debug_1("clsTool_ASM", string.Format("成功创建对象_{0}", _en.GetType().Name));
            }
            return(_en);
        }
Ejemplo n.º 25
0
        //1  PartB --> doPartB --> Part_2 -- Part_BT
        protected int do_New(clsFaim3 v_faim3, DAL_CommData v_dao_comm)
        {
            _ret      = do_BaseNew(v_faim3, v_dao_comm);
            _testName = (_flowName + (_caseFix + F_Const.fix_CaseT));//测试步骤方法名

            if (_dao_comm.dict_Methods.doCase.ContainsKey(_testName))
            {
                FACC.F_Log.Debug_1(_clsName, string.Format("", _testName));
                _ret = -30;
            }
            if (_ret < 0)
            {
                return(_ret);
            }
            _dao_comm.dict_Methods.doCase.Add(_testName, new F_Delegate.delCase(PartB));             //'通用代理1
            _dao_comm.dict_Methods.doPartB_T.Add(_caseName, new F_Delegate.delCasePartB_T(Part_2));  //'通用代理2
            _dao_comm.dict_Methods.doPartB_R.Add(_caseName, new F_Delegate.delCasePartB_R(Part_BR)); //'通用代理3
            FACC.F_Log.Debug_1(_clsName, string.Format("初始化 步骤:{0}", _testName));
            return(0);
        }
Ejemplo n.º 26
0
        // 根据设备名读取设备号 条件:名称 , 如失败,返回-1
        public static int do_GetDevNo(clsFaim3 _faim3, string vName)
        {
            int _devNo = -1;

            string[] _arr = vName.Split('_'); // 204C_3  ==> 204C, 3
            if (_arr.Length < 2)
            {
                return(_devNo);
            }
            foreach (var item in _faim3.dict_DevCards) // clsDev_Cards.xls
            {
                // 0.isEnable	 1.devNo	  2.Name	 3.cardType	4.card_num
                if (item.Value.devNo.ToString() == _arr[1].ToUpper().Trim() &&
                    item.Value.Name == _arr[0].ToUpper().Trim())
                {
                    _devNo = item.Value.devNo;
                    break;
                }
            }
            return(_devNo);
        }
Ejemplo n.º 27
0
        static T do_CreateInstance <T>(
            string vFn, string vName,
            clsFaim3 vFaim3, string userClassName)
        {
            if (!File.Exists(vFn))
            {
                return(default(T));
            }
            byte[]   _buf = File.ReadAllBytes(vFn);
            Assembly _asm = Assembly.Load(_buf);

            //Assembly _asm = Assembly.LoadFrom(vFile);
            object obj = null;

            if (string.IsNullOrEmpty(userClassName))
            {
                obj = _asm.CreateInstance(vName, false);
            }
            else
            {
                Type vT = Type.GetType(vName);
                obj = Activator.CreateInstance(
                    vT,
                    new object[] { vFaim3, userClassName });
            }
            T _en = (T)obj;//

            if (_en == null)
            {
                F_Log.Debug_1("clsTool_ASM", string.Format("!! 未创建对象_{0}", vName));
            }
            else
            {
                F_Log.Debug_1("clsTool_ASM", string.Format("成功创建对象_{0}", _en.GetType().Name));
            }

            return(_en);
        }
Ejemplo n.º 28
0
 static void _do_WaitLine(clsFaim3 _faim3, DAL_CommData _dao_comm, string _flowName, eWF_State vStopState, int vCaseLineIdx)
 {
     #region // 是“行步进”调试
     clsFlow _flow = _faim3.dict_Flow[_flowName];
     if (!_flow.isStepLine)
     {
         return;                    // 是“行步进”调试
     }
     clsDevTestBits _line = _faim3.lst_DevTestBits[vCaseLineIdx];
     if (_line.isDebug == 1) /*#*/             // cfgDev_testBits #
     {
         if (_faim3.dict_KV["isDebug"] != "1") // 非 debug 状态下,不运行 debug 行  cfgDev_Cards.xls
         {
             return;
         }
     }
     _flow.caseLineIdx = vCaseLineIdx;
     while (_flow.caseLineIdx == vCaseLineIdx)//
     {
         if (_faim3.isEmergency > 0)
         {
             break;  // 急停
         }
         if (_flow.eState == eWF_State.End || _flow.eState == eWF_State.Wait)
         {
             break;
         }
         if (_flow.eState != vStopState)
         {
             _flow.eState = vStopState;                                            //
             _dao_comm_set_arr_str800(_faim3, _dao_comm, _flowName, vCaseLineIdx); // “行步进”消息  arr_str[0][800 + _flowIdx]
         }
         System.Threading.Thread.Sleep(100);
     }
     _flow.eState = eWF_State.Running;  //
     #endregion
 }
Ejemplo n.º 29
0
        static void doCreateInstance(clsFaim3 vFaim3, string vFlowName)
        {
            string _fn  = F_Const.path_flowDLL + vFlowName + ".dll";
            object _obj = doCreateInstance <object>(
                _fn, "F_FlowTemp", "clsTempSub",
                vFaim3,
                vFlowName
                );

            if (_obj == null)
            {
                return;
            }
            FACC.F_Log.Debug_1("clsTool_ASM", string.Format("加入流程:{0}", vFlowName));

            IDAL_Temp_Part _Idal = null;

            _obj = doCreateInstance <object>(
                _fn, vFlowName,
                "PartA",
                vFaim3
                );
            _Idal = _obj as IDAL_Temp_Part;
            _Idal.do_New(vFaim3);
            FACC.F_Log.Debug_1("clsTool_ASM", string.Format("加入步骤: {0}_PartA", vFlowName));

            _obj = doCreateInstance <object>(
                _fn, vFlowName,
                "PartB",
                vFaim3
                );
            _Idal = _obj as IDAL_Temp_Part;
            _Idal.do_New(vFaim3);

            FACC.F_Log.Debug_1("clsTool_ASM", string.Format("按钮: 加入步骤: {0}_PartB", vFlowName));
        }
Ejemplo n.º 30
0
 //F_ThManager _bo_ThreadMana = null;
 public clsFrm50_BLL(clsFaim3 v_faim3, DAL_CommData v_dao_comm)//, F_ThManager v_bo_ThreadMana)
 {
     _faim3    = v_faim3;
     _dao_comm = v_dao_comm;
     //_bo_ThreadMana = v_bo_ThreadMana;
 }