///////////////////////////////// private void OnNotification(object sender, AdsNotificationEventArgs e) { string var = notifications[e.NotificationHandle]; parent.UBSMod.WriteExecutionTime(var + " recibido. *" + (DateTime.Now - parent.lastNotification).TotalMilliseconds + "ms*"); parent.lastNotification = DateTime.Now; Type tipo; if (IOparameters.In.ContainsKey(var)) { tipo = Type.GetType(IOparameters.In[var].TypeStr); } else if (IOparameters.Out.ContainsKey(var)) { tipo = Type.GetType(IOparameters.Out[var].TypeStr); } else { parent.UBSMod.Error("No se puede notificar la variable " + var + " por que no existe en el sistema.", true, false); tipo = typeof(Boolean); } DateTime time = DateTime.Now; parent.UBSMod.WriteExecutionTime("Variable " + var + " to process."); object obj = leerValor(tipo); IOparameters.Set(var, obj); parent.UBSMod.WriteExecutionTime("Variable " + var + " processed [" + (DateTime.Now - time).TotalMilliseconds + "]."); ((Modulo.UBSTwincatComModule)parent.UBSMod).IODisplayUpdate(); }
internal Notification(AdsNotificationEventArgs args) { base.timeStamp = DateTime.FromFileTimeUtc(args.TimeStamp); base.userData = args.UserData; base.notificationHandle = (uint)args.NotificationHandle; this._bytes = new byte[args.Length]; args.DataStream.Read(this._bytes, args.Offset, args.Length); }
private static void OnNotification(object sender, AdsNotificationEventArgs e) { if (e.NotificationHandle == hDigOutP0) { portValue = binReader.ReadByte(); errorCode = instantDoCtrl.Write(port, portValue); } else if (e.NotificationHandle == hEndA4704Program) { bEndProgram = binReader.ReadBoolean(); if (bEndProgram) { manualResetEvent.Set(); } } }
private void UpdateVariables(object sender, AdsNotificationEventArgs e) { // e.NotificationHandlen avulla tunnistetaan tapahtuman aiheuttava TwinCAT-muuttuja if (e.NotificationHandle == measurementDataHandle) { string aika = e.TimeStamp.ToString();// e.Value.ToString(); long x = long.Parse(aika); DateTime dt = new DateTime(x); e.DataStream.Position = e.Offset; // lue structin tiedot BinaryReaderin avulla UInt32 timeHi = binReader.ReadUInt32(); UInt32 timeLo = binReader.ReadUInt32(); double m1 = binReader.ReadSingle(); double m2 = binReader.ReadSingle(); double m3 = binReader.ReadSingle(); int counter = binReader.ReadInt16(); int joku = binReader.ReadInt16(); /* * chart1.Series[0].Points.AddXY(cntr++, m1); * chart1.Series[1].Points.AddXY(cntr++, m2); */ y1buff.Enqueue(m1); y2buff.Enqueue(m2); if (y1buff.Count > 100) { y1buff.Dequeue(); } if (y2buff.Count > 100) { y2buff.Dequeue(); } chart1.Series[0].Points.DataBindXY(xbuff, "x1", y1buff, "y1"); chart1.Series[1].Points.DataBindXY(xbuff, "x2", y2buff, "y2"); textBoxStructData.Text = counter + " " + m1 + " " + m2 + " " + m3; } }
private void tcClient_AdsNotification(object sender, AdsNotificationEventArgs e) { foreach (var item in NotifyParameters) { if (item.Value.NotifyID != e.NotificationHandle) { continue; } var att = item.Value.ParameterName.GetAttribute <TypeAttribute>(); if (att.Length == 1) { switch (att.Type) { case TypeAttribute.Types.Bool: ParametersValue[item.Key] = _binReader.ReadBoolean(); break; case TypeAttribute.Types.SInt: ParametersValue[item.Key] = _binReader.ReadByte(); break; case TypeAttribute.Types.Int: ParametersValue[item.Key] = _binReader.ReadInt16(); break; case TypeAttribute.Types.Word: ParametersValue[item.Key] = _binReader.ReadUInt16(); break; case TypeAttribute.Types.DInt: ParametersValue[item.Key] = _binReader.ReadInt32(); break; case TypeAttribute.Types.UDInt: ParametersValue[item.Key] = _binReader.ReadUInt32(); break; case TypeAttribute.Types.Real: ParametersValue[item.Key] = _binReader.ReadSingle(); break; case TypeAttribute.Types.LReal: ParametersValue[item.Key] = _binReader.ReadDouble(); break; default: throw new ArgumentOutOfRangeException(); } } else { _dataStream.Position = item.Value.StreamPosition; switch (att.Type) { case TypeAttribute.Types.Bool: var ret = new bool[att.Length]; for (int i = 0; i < att.Length; i++) { ret[i] = _binReader.ReadBoolean(); } ParametersValue[item.Key] = ret; break; case TypeAttribute.Types.Int: var ret1 = new short[att.Length]; for (int i = 0; i < att.Length; i++) { ret1[i] = _binReader.ReadInt16(); } ParametersValue[item.Key] = ret1; break; case TypeAttribute.Types.Word: var ret2 = new ushort[att.Length]; for (int i = 0; i < att.Length; i++) { ret2[i] = _binReader.ReadUInt16(); } ParametersValue[item.Key] = ret2; break; case TypeAttribute.Types.DInt: var ret3 = new int[att.Length]; for (int i = 0; i < att.Length; i++) { ret3[i] = _binReader.ReadInt32(); } ParametersValue[item.Key] = ret3; break; case TypeAttribute.Types.UDInt: var ret4 = new uint[att.Length]; for (int i = 0; i < att.Length; i++) { ret4[i] = _binReader.ReadUInt32(); } ParametersValue[item.Key] = ret4; break; case TypeAttribute.Types.Real: var ret5 = new double[att.Length]; for (int i = 0; i < att.Length; i++) { ret5[i] = _binReader.ReadSingle(); } ParametersValue[item.Key] = ret5; break; case TypeAttribute.Types.LReal: var ret6 = new double[att.Length]; for (int i = 0; i < att.Length; i++) { ret6[i] = _binReader.ReadDouble(); } ParametersValue[item.Key] = ret6; break; case TypeAttribute.Types.SInt: break; default: throw new ArgumentOutOfRangeException(); } } OnChange(item.Key); } }
void adsClient_AdsNotification(object sender, AdsNotificationEventArgs e) { tbWatch.Text = BitConverter.ToString(e.DataStream.ToArray()); }