Exemple #1
0
        static int getSendData(clsFaim3 _faim3, string vCmdName, string vHL, string vReset)
        {
            int _devNo = -1;

            if (_faim3.dict_CmdFormats.ContainsKey(vCmdName))
            {
                _devNo = Convert.ToInt32(_faim3.dict_CmdFormats[vCmdName].devNo);//[0] cfgCmdFormat.xls
            }
            else if (_faim3.dict_DevFunction.ContainsKey(vCmdName))
            {
                _devNo   = _faim3.dict_DevFunction[vCmdName].devNo;//[0] cfgDev_Function.xls
                vCmdName = _faim3.dict_DevFunction[vCmdName].varName;
            }
            else
            {
                F_Log.Error_4("clsProtocol.getSendData()",
                              string.Format(" --->>>> 此命令不存在 {0} {1} {2}", vCmdName, vHL, vReset));
                return(-1); //没有此命令 模板
            }
            int           _ref_1i    = _faim3.sect_iDev * _devNo;
            int           _ref_1s    = _faim3.sect_sDev * _devNo + _faim3.sect_sDev_start;
            string        _str_HL    = "   ";
            string        _str_Reset = "   ";
            int           _val_HL    = F_TransCalc._Get_Value_2(_faim3, vHL, ref _str_HL);
            int           _val_Reset = F_TransCalc._Get_Value_2(_faim3, vReset, ref _str_Reset);
            clsCommonInfo _en        = null;

            if (_val_Reset > 0)
            {
                if (_faim3.dict_CommonInfo.ContainsKey(_val_Reset)) // 可能是表值 tb_CommonInfo.xls
                {
                    _en = _faim3.dict_CommonInfo[_val_Reset];
                }
            }

            switch ((eDeviceName)_devNo)
            {
            case eDeviceName.RS485_6:
                #region          // RS485_6
                if (_en != null) // 有表值 tb_CommonInfo.xls
                {
                    #region      // SeekHome Home_Dir
                    switch (vCmdName)
                    {
                    case "SeekHome":
                        SeekHome _SeekHome = _faim3._SeekHome;
                        _SeekHome.v02.OutputNum = F_Parse._ConverToInt(clsFaim3.StringFormat(_faim3, _en.val_01));
                        _SeekHome.v03.Condition = F_Parse._ConverToInt(clsFaim3.StringFormat(_faim3, _en.val_02));
                        break;

                    case "Home_Dir":
                        Home_Dir _Home_Dir = _faim3._Home_Dir;
                        _Home_Dir.v02.Acc      = F_Parse._ConverToDouble(clsFaim3.StringFormat(_faim3, _en.val_01));
                        _Home_Dir.v03.Dec      = F_Parse._ConverToInt(clsFaim3.StringFormat(_faim3, _en.val_02));
                        _Home_Dir.v04.Vel      = F_Parse._ConverToDouble(clsFaim3.StringFormat(_faim3, _en.val_03));
                        _Home_Dir.v05.Location = F_Parse._ConverTofloat(clsFaim3.StringFormat(_faim3, _en.arr_01[0]));
                        _Home_Dir.v06.Location = F_Parse._ConverTofloat(clsFaim3.StringFormat(_faim3, _en.arr_01[1]));
                        break;
                    }
                    #endregion
                }
                clsProt485 _485 = new clsProt485(_faim3);
                _485.Out_Ready(vCmdName, _val_HL);       // 485 对象
                break;

                #endregion
            case eDeviceName.TCP_5:
            case eDeviceName.TCP_8:
            case eDeviceName.TCP_9:
                string _Format2 = _faim3.dict_CmdFormats[vCmdName].Format;    //[2]; 模板
                //clsRobot_AZ _az = new clsRobot_AZ(_faim3);
                List <string> _lstPara = new List <string>();
                if (_val_HL != -999)
                {
                    // $GetVariable,{0}&CrLf
                    if (!string.IsNullOrEmpty(vHL))
                    {
                        _lstPara.Add(vHL);
                    }
                }
                else if (_str_HL != "   ")
                {
                    if (!string.IsNullOrEmpty(vHL))
                    {
                        _lstPara.Add(_str_HL);
                    }
                }
                if (_en != null)     // 有表值

                {
                    // J Point {0} {1} {2} {3}
                    if (!string.IsNullOrEmpty(_en.val_01))
                    {
                        _lstPara.Add(clsFaim3.StringFormat(_faim3, _en.val_01));
                    }
                    if (!string.IsNullOrEmpty(_en.val_02))
                    {
                        _lstPara.Add(clsFaim3.StringFormat(_faim3, _en.val_02));
                    }
                    if (!string.IsNullOrEmpty(_en.val_03))
                    {
                        _lstPara.Add(clsFaim3.StringFormat(_faim3, _en.val_03));
                    }
                    if (!string.IsNullOrEmpty(_en.arr_1))
                    {
                        _lstPara.Add(clsFaim3.StringFormat(_faim3, _en.arr_1));
                    }
                    if (!string.IsNullOrEmpty(_en.arr_2))
                    {
                        _lstPara.Add(clsFaim3.StringFormat(_faim3, _en.arr_2));
                    }
                    if (!string.IsNullOrEmpty(_en.arr_3))
                    {
                        _lstPara.Add(clsFaim3.StringFormat(_faim3, _en.arr_3));
                    }
                }
                _faim3._sss[_ref_1s] = "";      // 非标准二进制字节码



                string _cmd = F_TransCalc.StringFormat(_Format2, _lstPara);
                _faim3._sss[_ref_1s + _faim3.snd_sAsc] = _cmd;         //

                string _Echo4 = _faim3.dict_CmdFormats[vCmdName].Echo; //[4]; 反馈
                _faim3._sss[_ref_1s + _faim3.test_sLoc] = _Echo4;

                break;
            }
            return(_devNo);
        }
Exemple #2
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);
        }