//_________________________________________________________________________ // { 0xcd, 0xcc, 0xf6, 0x42 }; //, 0x11,0, 1, 0, 2, 0, 10, 0, 15, 0, 1, 0 };// { 0x0, 0x0, 0, 0x1}; // { 0x30, 0x31, 0x2f, 0x30, 0x31, 0x2f, 0x31, 0x39, 0x37, 0x30, 0x00, 0x30, 0x3a, 0x30, 0x30, 0x3a, 0x30, 0x30, 0x00 };//{, 0x00, 0x00, 0xe4, 0x43 }; //0x00, 0x80, 0xa0, 0x43 private void BWritePar_Click(object sender, EventArgs e) { CBDataSave(); CBDataWriteParSave(); CBParameterNameSave(); Properties.Settings.Default.Save(); int iID = int.Parse(TBIDwritePar.Text); string sParams = "[\"" + CONST.ПАРАМЕТРЫ.DeviceName.ToString() + "\":\"" + CBDeviceWr.Text + "\"," + CONST.ПАРАМЕТРЫ.Data.ToString() + "\":\"" + CBData.Text + "\"," + CONST.ПАРАМЕТРЫ.ParameterType.ToString() + "\":\"" + CBTypeData.Text + "\"," + CONST.ПАРАМЕТРЫ.ParameterName.ToString() + "\":\"" + CBParameterName.Text + "\"," + CONST.ПАРАМЕТРЫ.RequestName.ToString() + "\":\"MT16\"," + CONST.ПАРАМЕТРЫ.INorOUT.ToString() + "\":\"out" + "\"," + CONST.ПАРАМЕТРЫ.RequestType.ToString() + "\":\"" + CONST.RequestType.Single.ToString() + "\"," + CONST.ПАРАМЕТРЫ.TimeRequest.ToString() + "\":\"" + NTimeResp.Text + "\"]"; string[] asaDataWritePar = CBDataWritePar.Text.Split(' '); int iSizeData = CONST.SizeTypeData((TYPE)Enum.Parse(typeof(TYPE), CBTypeData.Text)); if (iSizeData != asaDataWritePar.Length) { MessageBox.Show(string.Format("Длина данных [{0}] не равна размеру типа [{1}]", iSizeData, asaDataWritePar.Length)); return; } byte[] btaDataWritePar = new byte[iSizeData]; int i = 0; foreach (var item in asaDataWritePar) { btaDataWritePar[i++] = byte.Parse(item); } 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); } }