Beispiel #1
0
        private ErrCode CheckForRemoteOfAddr(string itemAddr, TypeRW itemType)
        {
            ErrCode result;

            switch (itemType)
            {
            case TypeRW.Read:
                if (!this._items.NameRead.ContainsKey(itemAddr) || !this._items.AddrRead.ContainsKey(this._items.NameRead[itemAddr]))
                {
                    this._errItemAddr = itemAddr;
                    this._errItemName = "";
                    this.ErrCodeParse(ErrCode.noNameOrAddr);
                    result = ErrCode.noNameOrAddr;
                    return(result);
                }
                break;

            case TypeRW.Write:
                if (!this._items.NameWrite.ContainsKey(itemAddr) || !this._items.AddrWrite.ContainsKey(this._items.NameWrite[itemAddr]))
                {
                    this._errItemAddr = itemAddr;
                    this._errItemName = "";
                    this.ErrCodeParse(ErrCode.noNameOrAddr);
                    result = ErrCode.noNameOrAddr;
                    return(result);
                }
                break;
            }
            result = ErrCode.ok;
            return(result);
        }
Beispiel #2
0
        private ErrCode CheckForAddItem(string itemAddr, string itemName, TypeRW itemType)
        {
            ErrCode result;

            switch (itemType)
            {
            case TypeRW.Read:
                if (this._items.AddrRead.ContainsKey(itemName) || this._items.NameRead.ContainsKey(itemAddr))
                {
                    this._errItemName = itemName;
                    this._errItemAddr = itemAddr;
                    this.ErrCodeParse(ErrCode.sameNameOrAddr);
                    result = ErrCode.sameNameOrAddr;
                    return(result);
                }
                break;

            case TypeRW.Write:
                if (this._items.AddrWrite.ContainsKey(itemName) || this._items.NameWrite.ContainsKey(itemAddr))
                {
                    this._errItemName = itemName;
                    this._errItemAddr = itemAddr;
                    this.ErrCodeParse(ErrCode.sameNameOrAddr);
                    result = ErrCode.sameNameOrAddr;
                    return(result);
                }
                break;
            }
            result = ErrCode.ok;
            return(result);
        }
Beispiel #3
0
        public void RemoveByAddr(string itemAddr, TypeRW itemType, out int err)
        {
            if (!this._client.GetConnectionState())
            {
                this.ErrCodeParse(ErrCode.serverConnFlt);
                err = 4;
            }
            else
            {
                ErrCode errCode = this.CheckForRemoteOfAddr(itemAddr, itemType);
                if (errCode != ErrCode.ok)
                {
                    err = (int)errCode;
                }
                else
                {
                    switch (itemType)
                    {
                    case TypeRW.Read:
                    {
                        string key = this._items.NameRead[itemAddr];
                        this._items.AddrRead.Remove(key);
                        this._items.NameRead.Remove(itemAddr);
                        this._items.ValueRead.Remove(itemAddr);
                        this.RefreshOpcItemsRead(new string[]
                            {
                                itemAddr
                            }, 2);
                        break;
                    }

                    case TypeRW.Write:
                    {
                        string key2 = this._items.NameWrite[itemAddr];
                        this._items.AddrWrite.Remove(key2);
                        this._items.NameWrite.Remove(itemAddr);
                        this.RefreshOpcItemsWrite(new string[]
                            {
                                itemAddr
                            }, 2);
                        break;
                    }
                    }
                    err = 0;
                }
            }
        }
Beispiel #4
0
        public void Add(string itemAddr, string itemName, TypeRW itemType, out int err)
        {
            if (!this._client.GetConnectionState())
            {
                this.ErrCodeParse(ErrCode.serverConnFlt);
                err = 4;
            }
            else
            {
                ErrCode errCode = this.CheckForAddItem(itemAddr, itemName, itemType);
                if (errCode != ErrCode.ok)
                {
                    err = (int)errCode;
                }
                else
                {
                    switch (itemType)
                    {
                    case TypeRW.Read:
                        this._items.AddrRead.Add(itemName, itemAddr);
                        this._items.NameRead.Add(itemAddr, itemName);
                        this._items.ValueRead.Add(itemAddr, new object());
                        this.RefreshOpcItemsRead(new string[]
                        {
                            itemAddr
                        }, 1);
                        break;

                    case TypeRW.Write:
                        this._items.AddrWrite.Add(itemName, itemAddr);
                        this._items.NameWrite.Add(itemAddr, itemName);
                        this.RefreshOpcItemsWrite(new string[]
                        {
                            itemAddr
                        }, 1);
                        break;
                    }
                    err = 0;
                }
            }
        }