コード例 #1
0
        void GroupScanTick(GridScanArgs <IMyBlockGroup> info)
        {
            if (!GroupBlocks.ContainsKey(info.Item))
            {
                GroupBlocks.Add(info.Item, new List <IMyTerminalBlock>());
            }
            var list = GroupBlocks[info.Item] as List <IMyTerminalBlock>;

            list.Clear();
            info.Item.GetBlocks(list);
            var kv   = new KeyValuePair <IMyBlockGroup, List <IMyTerminalBlock> >(info.Item, list);
            var args = new GridScanArgs <KeyValuePair <IMyBlockGroup, List <IMyTerminalBlock> > >(kv, info.First, info.Last);

            GroupFound?.Invoke(args);
        }
コード例 #2
0
        protected override void OnEventAnalyzed(byte id, byte[] eventValue)
        {
            switch (id)
            {
            case 0x00:
            {
                var connection = eventValue[0];
                var attrHandle = BitConverter.ToUInt16(eventValue, 1);
                var eventArgs  = new IndicatedEventArgs(connection, attrHandle);
                Indicated?.Invoke(this, eventArgs);
                break;
            }

            case 0x01:
            {
                var connection = eventValue[0];
                var errorCode  = BitConverter.ToUInt16(eventValue, 1);
                var chrHandle  = BitConverter.ToUInt16(eventValue, 3);
                var eventArgs  = new ProcedureCompletedEventArgs(connection, errorCode, chrHandle);
                ProcedureCompleted?.Invoke(this, eventArgs);
                break;
            }

            case 0x02:
            {
                var connection = eventValue[0];
                var start      = BitConverter.ToUInt16(eventValue, 1);
                var end        = BitConverter.ToUInt16(eventValue, 3);
                var uuidLength = eventValue[5];
                var uuid       = new byte[uuidLength];
                Array.Copy(eventValue, 6, uuid, 0, uuid.Length);
                var eventArgs = new GroupFoundEventArgs(connection, start, end, uuid);
                GroupFound?.Invoke(this, eventArgs);
                break;
            }

            case 0x04:
            {
                var connection = eventValue[0];
                var chrHandle  = BitConverter.ToUInt16(eventValue, 1);
                var uuidLength = eventValue[3];
                var uuid       = new byte[uuidLength];
                Array.Copy(eventValue, 4, uuid, 0, uuid.Length);
                var eventArgs = new FindInformationFoundEventArgs(connection, chrHandle, uuid);
                FindInformationFound?.Invoke(this, eventArgs);
                break;
            }

            case 0x05:
            {
                var connection  = eventValue[0];
                var attHandle   = BitConverter.ToUInt16(eventValue, 1);
                var type        = (AttributeValueType)eventValue[3];
                var valueLength = eventValue[4];
                var value       = new byte[valueLength];
                Array.Copy(eventValue, 5, value, 0, value.Length);
                var eventArgs = new AttributeValueEventArgs(connection, attHandle, type, value);
                AttributeValue?.Invoke(this, eventArgs);
                break;
            }

            case 0x06:
            {
                var connection    = eventValue[0];
                var handlesLength = eventValue[1];
                var handles       = new byte[handlesLength];
                Array.Copy(eventValue, 2, handles, 0, handles.Length);
                var eventArgs = new ReadMultipleResponseEventArgs(connection, handles);
                ReadMultipleResopnse?.Invoke(this, eventArgs);
                break;
            }

            default:
            {
                break;
            }
            }
        }