TcAdsClient.AddDeviceNotification Method (UInt32, UInt32, AdsStream, AdsTransMode, TimeSpan, TimeSpan, Object)
Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event.
Namespace: TwinCAT.Ads
Assembly: TwinCAT.Ads (in TwinCAT.Ads.dll)
Version: 4.3.0.0
Syntax
C#
public int AddDeviceNotification(
uint indexGroup,
uint indexOffset,
AdsStream dataStream,
AdsTransMode transMode,
TimeSpan cycleTime,
TimeSpan maxDelay,
Object userData
)
VB
Public Function AddDeviceNotification (
indexGroup As UInteger,
indexOffset As UInteger,
dataStream As AdsStream,
transMode As AdsTransMode,
cycleTime As TimeSpan,
maxDelay As TimeSpan,
userData As Object
) As Integer
Parameters
indexGroup |
Type: System.UInt32 |
indexOffset |
Type: System.UInt32 |
dataStream |
Type: TwinCAT.Ads.AdsStream |
transMode |
Type: TwinCAT.Ads.AdsTransMode |
cycleTime |
Type: System.TimeSpan |
maxDelay |
Type: System.TimeSpan |
userData |
Type: System.Object |
Return Value
Type: Int32
The handle of the notification.
Examples
The following sample shows how to register/unregister for AdsNotifications (asynchronous change messages) via AddDeviceNotification(String, AdsStream, Int32, Int32, AdsTransMode, TimeSpan, TimeSpan, Object) and DeleteDeviceNotification(Int32)
Receive AdsNotifications
AdsStream readStream = new AdsStream(sizeof(UInt32));
private void ReceiveNotifications()
{
using (TcAdsClient client = new TcAdsClient())
{
// Add the Notification event handler
client.AdsNotification += Client_AdsNotification;
// Connect to target
client.Connect("1.2.3.4.5.6", 851);
int notificationHandle = 0;
try
{
// Notification to a DINT Type (UINT32)
// Check for change every 200 ms
notificationHandle = client.AddDeviceNotification("MAIN.nCounter", readStream, AdsTransMode.OnChange, 200, 0, null);
Thread.Sleep(5000); // Sleep the main thread to get some (asynchronous Notifications)
}
finally
{
// Unregister the Event / Handle
client.DeleteDeviceNotification(notificationHandle);
client.AdsNotification -= Client_AdsNotification;
}
}
}
private void Client_AdsNotification(object sender, AdsNotificationEventArgs e)
{
int offset = (int)e.DataStream.Position;
int length = (int)e.DataStream.Length;
e.DataStream.Position = offset;
AdsBinaryReader reader = new AdsBinaryReader(e.DataStream);
// Read the Unmarshalled data
//byte[] data = reader.ReadBytes(length);
// Or here we know about UDINT type --> can be marshalled as UINT32
uint nCounter = reader.ReadUInt32();
}