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); } }
//_________________________________________________________________________ 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); } }