Ejemplo n.º 1
0
        void ReceiverOmap_MsgReceived(DspMessage msg)
        {
            switch (msg.Type)
            {
            case MsgType.MsgType_Data_VectorData:
                var vector = msg.GetDataAsStruct <DSPMsg_VectorData>();
                if ((DataSaveType)vector.SaveType != DataSaveType.TimeSave)
                {
                    var vectors = new VectorData[8];
                    foreach (var vec in VectorsQueue)
                    {
                        vectors[vec.ChannelId - 4] = vec;
                    }
                    DatasReceived(vectors);
                    VectorsQueue.Clear();
                }
                break;

            case MsgType.MsgType_Data_WaveData:
                WavesQueue.Enqueue(DSPMsg_WaveData.ParseWave(msg));
                if (WavesQueue.Count >= ChannelCount)
                {
                    var waves = new WaveData[8];
                    foreach (var wave in WavesQueue)
                    {
                        waves[wave.ChannelId - 4] = wave;
                    }
                    DatasReceived(waves);
                    WavesQueue.Clear();
                }
                break;
            }
        }
Ejemplo n.º 2
0
        internal static int ReadHeader(ref DSPMsg_WaveData data, int i, byte[] buff)
        {
            data.Idx       = (uint)ByteUtil.ReadInt32(buff, i);
            i             += 4;
            data.ChannelId = ByteUtil.ReadInt32(buff, i);
            i             += 4;
            data.SaveType  = ByteUtil.ReadInt32(buff, i);
            i             += 4;

            data.DateTime.UtcSeconds = ByteUtil.ReadInt32(buff, i);
            i += 4;
            data.DateTime.Miliseconds = ByteUtil.ReadInt32(buff, i);
            i += 4;

            data.Rpm = ByteUtil.ReadFloat(buff, i);
            i       += 4;

            data.SyncDataCount = ByteUtil.ReadInt32(buff, i);
            i += 4;
            data.AsyncDataCount = ByteUtil.ReadInt32(buff, i);
            i += 4;

            //아래는 C구조체의 주소 저장부분
            i += 4;
            i += 4;

            return(i);
        }
Ejemplo n.º 3
0
        public static DSPMsg_WaveData ParseHeader(DspMessage msg)
        {
            var data = new DSPMsg_WaveData();
            int i    = 0;
            var buff = msg.Data;

            ReadHeader(ref data, i, buff);

            return(data);
        }
Ejemplo n.º 4
0
        internal static int ReadBody(ref DSPMsg_WaveData data, int i, byte[] buff)
        {
            data.SyncData = new float[data.SyncDataCount];
            int syncDataSize = sizeof(float) * data.SyncDataCount;

            Buffer.BlockCopy(buff, i, data.SyncData, 0, syncDataSize);
            i += syncDataSize;

            data.AsyncData = new float[data.AsyncDataCount];
            int asyncDataSize = sizeof(float) * data.AsyncDataCount;
            var overSize      = (asyncDataSize + i) - buff.Length;

            if (overSize > 0)
            {
                asyncDataSize -= overSize;
            }

            Buffer.BlockCopy(buff, i, data.AsyncData, 0, asyncDataSize);
            i += asyncDataSize;
            return(i);
        }