public byte[] ReadBytesQ(uint offset, uint readLength) { AdsReadCommand adsCommand = new AdsReadCommand(0x0000F030, offset, readLength); var result = adsCommand.Run(this.ams); return(result.Data); }
public async Task <byte[]> ReadBytesQ_Async(uint offset, uint readLength) { AdsReadCommand adsCommand = new AdsReadCommand(0x0000F030, offset, readLength); var result = await adsCommand.RunAsync(this.ams); return(result.Data); }
/// <summary> /// Read the value from the handle returned by GetSymhandleByName /// </summary> /// <param name="varHandle">The handle returned by GetSymhandleByName</param> /// <returns>A byte[] with the value of the twincat variable</returns> public byte[] ReadBytes(uint varHandle, uint readLength) { AdsReadCommand adsCommand = new AdsReadCommand(0x0000F005, varHandle, readLength); var result = adsCommand.Run(this.ams); return(result.Data); }
/// <summary> /// Read the value from the handle returned by GetSymhandleByNameAsync /// </summary> /// <param name="varHandle">The handle returned by GetSymhandleByNameAsync</param> /// <returns>A byte[] with the value of the twincat variable</returns> public async Task <byte[]> ReadBytesAsync(uint varHandle, uint readLength) { AdsReadCommand adsCommand = new AdsReadCommand(0x0000F005, varHandle, readLength); var result = await adsCommand.RunAsync(this.ams); return(result.Data); }
public IList <IAdsSymhandle> GetSymbols() { AdsReadCommand adsCommand = new AdsReadCommand(0x0000f00f, 0x000000, 0x30); var result = adsCommand.Run(this.ams); uint readLength = (uint)BitConverter.ToInt32(result.Data, 4); adsCommand = new AdsReadCommand(0x0000f00b, 0x000000, readLength); result = adsCommand.Run(this.ams); return(GetSymbolsFromBytes(result.Data)); }
public async Task <IList <IAdsSymhandle> > GetSymbolsAsync() { AdsReadCommand adsCommand = new AdsReadCommand(0x0000f00f, 0x000000, 0x30); var result = await adsCommand.RunAsync(ams); uint readLength = (uint)BitConverter.ToInt32(result.Data, 4); adsCommand = new AdsReadCommand(0x0000f00b, 0x000000, readLength); result = await adsCommand.RunAsync(ams); var symbols = GetSymbolsFromBytes(result.Data); return(symbols); }
/// <summary> /// Get an xml description of the plc /// You can use XDocument.Parse(xml).ToString() to make the xml more readable /// </summary> /// <returns></returns> public string GetTargetDesc() { var amsSpecial = new Ams(ams.AmsSocket); amsSpecial.AmsNetIdSource = ams.AmsNetIdSource; amsSpecial.AmsNetIdTarget = ams.AmsNetIdTarget; amsSpecial.AmsPortTarget = 10000; AdsReadCommand adsCommand = new AdsReadCommand(0x000002bc, 0x00000001, 4); var result = adsCommand.Run(amsSpecial); uint length = BitConverter.ToUInt32(result.Data, 0); adsCommand = new AdsReadCommand(0x000002bc, 0x00000001, length); result = adsCommand.Run(amsSpecial); string xml = ByteArrayHelper.ByteArrayToString(result.Data); return(xml); }
/// <summary> /// Get the current routes /// </summary> /// <returns></returns> public IList <string> GetCurrentRoutes() { var amsSpecial = new Ams(ams.AmsSocket); amsSpecial.AmsNetIdSource = ams.AmsNetIdSource; amsSpecial.AmsNetIdTarget = ams.AmsNetIdTarget; amsSpecial.AmsPortTarget = 10000; bool ok = true; uint index = 0; var routes = new List <string>(); while (ok) { try { AdsReadCommand adsCommand = new AdsReadCommand(0x00000323, index++, 0x0800); var result = adsCommand.Run(amsSpecial); int length = result.Data.Length - 44; byte[] routeBytes = new byte[length]; Array.Copy(result.Data, 44, routeBytes, 0, length); string routeString = ByteArrayHelper.ByteArrayToString(routeBytes); int stringLlength = routeString.Length + 1; Array.Copy(routeBytes, stringLlength, routeBytes, 0, length - stringLlength); routeString += " " + ByteArrayHelper.ByteArrayToString(routeBytes); routes.Add(routeString); } catch (AdsException ex) { if (ex.ErrorCode == 1814) { ok = false; } else { throw; } } } return(routes); }