/////////////////////////////////

        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();
        }
示例#2
0
 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);
 }
示例#3
0
 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();
         }
     }
 }
示例#4
0
        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;
            }
        }
示例#5
0
        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());
 }