コード例 #1
0
        /// <summary>
        /// 根据数据类型,直接写入主Mapping
        /// </summary>
        /// <param name="points"></param>
        /// <param name="log"></param>
        public static void Register(ref PointDeviceCollcet points, ILog log)
        {
            var boolPointMapping = PointMapping <bool> .GetInstance(log);

            var bytePointMapping = PointMapping <byte> .GetInstance(log);

            var ushortPointMapping = PointMapping <ushort> .GetInstance(log);

            var shortPointMapping = PointMapping <short> .GetInstance(log);

            var uintPointMapping = PointMapping <uint> .GetInstance(log);

            var intPointMapping = PointMapping <int> .GetInstance(log);

            var folatPointMapping = PointMapping <float> .GetInstance(log);

            var doublePointMapping = PointMapping <double> .GetInstance(log);

            var stringPointMapping = PointMapping <string> .GetInstance(log);

            ///注册
            Register(ref points, boolPointMapping, log);
            Register(ref points, bytePointMapping, log);
            Register(ref points, ushortPointMapping, log);
            Register(ref points, shortPointMapping, log);
            Register(ref points, uintPointMapping, log);
            Register(ref points, intPointMapping, log);
            Register(ref points, folatPointMapping, log);
            Register(ref points, doublePointMapping, log);
            Register(ref points, stringPointMapping, log);
        }
コード例 #2
0
        /// <summary>
        /// byte型点注册
        /// </summary>
        /// <param name="points"></param>
        /// <param name="mapping"></param>
        public static void Register(ref PointDeviceCollcet points, IPointMapping <byte> mapping, ILog log)
        {
            List <DevicePoint <byte> > dupPoints = new List <DevicePoint <byte> >();//重复点名列表

            foreach (var point in points.BytePoints)
            {
                if (mapping.Find(point.Name))
                {
                    dupPoints.Add(point);
                    log.ErrorLog(string.Concat("Point Register Error:Duplication point name <", point.Name, ">"));
                }
                else
                {
                    mapping.Register(point.Name, point);
                }
            }
            foreach (var point in dupPoints)
            {
                points.BytePoints.Remove(point);
            }
        }
コード例 #3
0
        /// <summary>
        /// 创建siemens S7通讯客户端点集合
        /// </summary>
        /// <param name="workBook"></param>
        /// <param name="log"></param>
        /// <returns></returns>
        public static PointDeviceCollcet CreateS7(XMLWorkbook workBook, ILog log)
        {
            PointDeviceCollcet collcet = new PointDeviceCollcet();

            List <string> colums = workBook.llStrings[0];//第一行列表为索引列数据;

            workBook.llStrings.RemoveAt(0);
            bool flag = true;

            foreach (var ls in workBook.llStrings)
            {
                string        pointName     = "";
                DeviceAddress deviceAddress = new DeviceAddress();
                string        dataType      = "";
                int           length        = 0;
                for (int i = 0; i < colums.Count; i++)
                {
                    switch (colums[i].ToLower())
                    {
                    case "tagname":
                        pointName = ls[i];
                        break;

                    //根据地址分解除功能码,DB块,地址编号
                    case "address":
                        var arrayStr = ls[i].Split('.');
                        if (arrayStr.Length >= 2)
                        {
                            if (arrayStr[0].Contains("DB"))
                            {
                                deviceAddress.FuctionCode = 0x84;
                                int area;
                                if (int.TryParse(arrayStr[0].Remove(0, 2), out area))
                                {
                                    deviceAddress.SalveId = area;
                                }
                                else
                                {
                                    flag = false;
                                }
                                int address;
                                if (int.TryParse(arrayStr[1].Remove(0, 3), out address))
                                {
                                    deviceAddress.Address = address;
                                }
                                else
                                {
                                    flag = false;
                                }
                                if (arrayStr.Length == 3)
                                {
                                    int bitAddress;
                                    if (int.TryParse(arrayStr[2], out bitAddress))
                                    {
                                        deviceAddress.BitAddress = bitAddress;
                                    }
                                    else
                                    {
                                        flag = false;
                                    }
                                }
                            }
                            else
                            {
                                flag = false;
                            }
                        }
                        else
                        {
                            flag = false;
                        }
                        break;

                    case "datatype":
                        dataType = ls[i];
                        break;

                    case "length":
                        if (int.TryParse(ls[i], out length))
                        {
                            ;
                        }
                        else
                        {
                            flag = false;
                        }
                        break;

                    case "byteorder":
                        int byteorder;
                        if (int.TryParse(ls[i], out byteorder))
                        {
                            deviceAddress.ByteOrder = (ByteOrder)byteorder;
                        }
                        else
                        {
                            flag = false;
                        }
                        break;
                    }
                }
                if (pointName != "" && flag)
                {
                    if (dataType.ToLower() == ValueType.Bool)
                    {
                        collcet.BoolPoints.Add(new DevicePoint <bool>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Byte)
                    {
                        collcet.BytePoints.Add(new DevicePoint <byte>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.UInt16)
                    {
                        collcet.UshortPoints.Add(new DevicePoint <ushort>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Int16)
                    {
                        collcet.ShortPoints.Add(new DevicePoint <short>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.UInt32)
                    {
                        collcet.UintPoints.Add(new DevicePoint <uint>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Int32)
                    {
                        collcet.IntPoints.Add(new DevicePoint <int>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Float)
                    {
                        collcet.FloatPoints.Add(new DevicePoint <float>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Double)
                    {
                        collcet.DoublePoints.Add(new DevicePoint <double>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                }
            }
            return(collcet);
        }
コード例 #4
0
        /// <summary>
        /// 根据xmlWorkBook数据创建DL645点集合
        /// </summary>
        /// <param name="workBook"></param>
        /// <returns></returns>
        public static PointDeviceCollcet CreateDL645(XMLWorkbook workBook, ILog log)
        {
            PointDeviceCollcet collcet = new PointDeviceCollcet();

            List <string> colums = workBook.llStrings[0];//第一行列表为索引列数据;

            workBook.llStrings.RemoveAt(0);
            foreach (var ls in workBook.llStrings)
            {
                string        pointName     = "";
                DeviceAddress deviceAddress = new DeviceAddress();
                string        dataType      = "";
                int           length        = 0;
                for (int i = 0; i < colums.Count; i++)
                {
                    switch (colums[i].ToLower())
                    {
                    case "tagname":
                        pointName = ls[i];
                        break;

                    case "area":
                        int area;
                        if (int.TryParse(ls[i], out area))
                        {
                            deviceAddress.SalveId = int.Parse(ls[i], NumberStyles.HexNumber);
                        }
                        break;

                    case "address":
                        int address;
                        if (int.TryParse(ls[i], out address))
                        {
                            deviceAddress.Address = int.Parse(ls[i], NumberStyles.HexNumber);
                        }
                        break;

                    case "datatype":
                        dataType = ls[i];
                        break;

                    case "length":
                        int.TryParse(ls[i], out length);
                        break;

                    case "byteorder":
                        int byteorder;
                        if (int.TryParse(ls[i], out byteorder))
                        {
                            deviceAddress.ByteOrder = (ByteOrder)byteorder;
                        }
                        break;
                    }
                }
                if (pointName != "")
                {
                    if (dataType.ToLower() == ValueType.Bool)
                    {
                        collcet.BoolPoints.Add(new DevicePoint <bool>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Byte)
                    {
                        collcet.BytePoints.Add(new DevicePoint <byte>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.UInt16)
                    {
                        collcet.UshortPoints.Add(new DevicePoint <ushort>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Int16)
                    {
                        collcet.ShortPoints.Add(new DevicePoint <short>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.UInt32)
                    {
                        collcet.UintPoints.Add(new DevicePoint <uint>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Int32)
                    {
                        collcet.IntPoints.Add(new DevicePoint <int>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Float)
                    {
                        collcet.FloatPoints.Add(new DevicePoint <float>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                    if (dataType.ToLower() == ValueType.Double)
                    {
                        collcet.DoublePoints.Add(new DevicePoint <double>(pointName, dataType.ToLower(), length, deviceAddress));
                    }
                }
            }
            return(collcet);
        }