コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
        }