Пример #1
0
        // 생성자

        public ClsWritePacketData(byte invokeId, ClsTagItem tagItem, byte orderPriority, bool hasValue, double value)
        {
            m_OrderTime      = DateTime.Now;
            m_ReorderCount   = 0;
            m_FirstOrderTime = m_OrderTime;

            m_InvokeId = invokeId;
            m_Item     = tagItem;
            m_Device   = tagItem.Device;

            m_Priority = orderPriority;
            m_HasValue = hasValue;
            m_Value    = value;
        }
Пример #2
0
        // public static 메서드

        public static ClsTagItem FindTagObject(IEnumerable <ClsTagItem> tagItems, int tagId)
        {
            ClsTagItem rtn = null;

            foreach (ClsTagItem nowItem in tagItems)
            {
                if (nowItem.CheckTagItem(tagId))
                {
                    rtn = nowItem;
                    break;
                }
            }

            return(rtn);
        }
        public bool AddTag(ClsTagItem tagItem, byte propertyid)
        {
            bool rtn = false;

            if (tagItem == null)
            {
                throw new ArgumentNullException("TagItem 이 null 입니다", "tagItem");
            }
            //else if (this.m_Items.Count > REQUEST_MAX_OBJECT_COUNT)
            //{
            //    throw new ArgumentException("최대 Object 갯수를 초과했습니다", "tagItem");
            //}
            else if (propertyid != PROPERTY_PRESENT_VALUE & propertyid != PROPERTY_PRIORITY_ARRAY)
            {
                throw new ArgumentException("처리하지 않는 propertyid 입니다", "propertyid");
            }
            else if (this.m_RequsetPacket != null)
            {
                throw new ArgumentException("RequestPacket 이 만든 후에는 추가할 수 없습니다", "tagItem");
            }
            else
            {
                if (propertyid == PROPERTY_PRESENT_VALUE
                    & this.m_ResponsePacketSizeEstimates + PacketMultiReadRequest.RESPONSE_PACKET_PRESENT_VALUE_SIZE <= PacketMultiReadRequest.PACKET_MAX_SIZE)
                {
                    this.m_ResponsePacketSizeEstimates += PacketMultiReadRequest.RESPONSE_PACKET_PRESENT_VALUE_SIZE;
                    this.m_Items.Add(new ClsRequestItemData(tagItem, propertyid));
                    rtn = true;
                }
                else if (propertyid == PROPERTY_PRIORITY_ARRAY
                         & this.m_ResponsePacketSizeEstimates + PacketMultiReadRequest.RESPONSE_PACKET_PRIORITY_ARRAY_SIZE <= PacketMultiReadRequest.PACKET_MAX_SIZE)
                {
                    this.m_ResponsePacketSizeEstimates += PacketMultiReadRequest.RESPONSE_PACKET_PRIORITY_ARRAY_SIZE;
                    this.m_Items.Add(new ClsRequestItemData(tagItem, propertyid));
                    rtn = true;
                }
                else
                {
                    rtn = false;
                }
            }

            return(rtn);
        }
        // public 메서드

        public bool AddTag(ClsTagItem tagItem)
        {
            return(this.AddTag(tagItem, PROPERTY_PRESENT_VALUE));
        }
        // 생성자

        public ClsRequestItemData(ClsTagItem tagItem, byte propertyid)
        {
            this.m_TagItem    = tagItem;
            this.m_PropertyId = propertyid;
        }