예제 #1
0
        public void WriteToDev(int iID, int iRow)
        {
            string sParams = "[\"" + CONST.ПАРАМЕТРЫ.DeviceName.ToString() + "\":\"" + GVDataWr.Rows[iRow].Cells[(int)Params.Прибор].Value + "\"," +
                             CONST.ПАРАМЕТРЫ.Data.ToString() + "\":\"" + GVDataWr.Rows[iRow].Cells[(int)Params.Data].Value + "\"," +
                             CONST.ПАРАМЕТРЫ.ParameterType.ToString() + "\":\"" + GVDataWr.Rows[iRow].Cells[(int)Params.Typ].Value + "\"," +
                             CONST.ПАРАМЕТРЫ.ParameterName.ToString() + "\":\"" + GVDataWr.Rows[iRow].Cells[(int)Params.ParamName].Value + "\"," +
                             CONST.ПАРАМЕТРЫ.RequestName.ToString() + "\":\"MT16\"," +
                             CONST.ПАРАМЕТРЫ.INorOUT.ToString() + "\":\"out" + "\"," +
                             CONST.ПАРАМЕТРЫ.RequestType.ToString() + "\":\"" + CONST.RequestType.Single.ToString() + "\"," +
                             CONST.ПАРАМЕТРЫ.TimeRequest.ToString() + "\":\"" + GVDataWr.Rows[iRow].Cells[(int)Params.TimeResp].Value +
                             "\"]";

            FTestDrvs FormOwn = Owner as FTestDrvs;

            EReverce Reverce = (EReverce)Enum.Parse(typeof(EReverce), GVDataWr.Rows[iRow].Cells[(int)Params.ПоследовБайт].Value.ToString());

            byte[] btaDataWritePar = StrToTypeThenBytes(GVDataWr.Rows[iRow].Cells[(int)Params.DataToWr].Value.ToString(),
                                                        GVDataWr.Rows[iRow].Cells[(int)Params.Typ].Value.ToString(),
                                                        Reverce, iRow);

            if (btaDataWritePar != null)
            {
                DRV.WriteValue(iID, sParams, btaDataWritePar);
            }
        }
예제 #2
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);
            }
        }