/// <summary> /// Get a handle from a variable name /// </summary> /// <param name="varName">A twincat variable like ".XXX"</param> /// <returns>The handle</returns> public uint GetSymhandleByName(string varName) { // Check, if the handle is already present. lock (activeSymhandlesLock) { if (activeSymhandles.ContainsKey(varName)) { return(activeSymhandles[varName]); } } // It was not retrieved before - get it from the control. var adsCommand = new AdsWriteReadCommand(0x0000F003, 0x00000000, varName.ToAdsBytes(), 4); var result = adsCommand.Run(this.ams); if (result == null || result.Data == null || result.Data.Length < 4) { return(0); } var handle = BitConverter.ToUInt32(result.Data, 0); // Now, try to add it. lock (activeSymhandlesLock) { if (!activeSymhandles.ContainsKey(varName)) { activeSymhandles.Add(varName, handle); } return(handle); } }
/// <summary> /// Get a handle from a variable name /// </summary> /// <param name="varName">A twincat variable like ".XXX"</param> /// <returns>The handle</returns> public uint GetSymhandleByName(string varName) { AdsWriteReadCommand adsCommand = new AdsWriteReadCommand(0x0000F003, 0x00000000, varName.ToAdsBytes(), 4); var result = adsCommand.Run(this.ams); var handle = BitConverter.ToUInt32(result.Data, 0); activeSymhandles.Add(handle); return(handle); }