Example #1
0
        public override void Start()
        {
            try {
                serialPort.Open();
            } catch {
                hasError = true;
                return;
            }

            byte[] buffer = new byte[EMGPacket.PACKET_SIZE];

            while (running)
            {
                bool      readOk = true;
                EMGPacket packet = new EMGPacket();

                for (int i = 0; i < buffer.Length && readOk; i++)
                {
                    int val = serialPort.ReadByte();
                    if (val == -1)
                    {
                        running = false;
                    }

                    byte readByte = (byte)val;

                    if ((i == 0 && readByte != EMGPacket.SYNC0_BYTE) ||
                        (i == 1 && readByte != EMGPacket.SYNC1_BYTE) ||
                        (i == 2 && readByte != EMGPacket.VERSION_BYTE))
                    {
                        readOk = false;
                    }

                    buffer[i] = readByte;
                }

                if (readOk)
                {
                    packet.Unpack(buffer);
                    packetQueue.Enqueue(packet);

                    while (packetQueue.Count > maxQueueSize)
                    {
                        EMGPacket temp;
                        packetQueue.TryDequeue(out temp);
                    }
                }
            }

            serialPort.Close();
        }
Example #2
0
        public override void Start()
        {
            byte[] buffer = new byte[EMGPacket.PACKET_SIZE_W_HINT];

            while (running)
            {
                EMGPacket packet = new EMGPacket();
                bool      readOk = true;

                for (int i = 0; i < buffer.Length; i++)
                {
                    int val = GetNextByte();
                    if (val == -1)
                    {
                        running = false;
                        readOk  = false;
                    }

                    byte readByte = (byte)val;
                    buffer[i] = readByte;
                }

                if (readOk)
                {
                    if (emulateSerialDelay)
                    {
                        Thread.Sleep(2);
                    }

                    packet.Unpack(buffer);
                    packetQueue.Enqueue(packet);
                }

                while (maxQueueSize != -1 && packetQueue.Count > maxQueueSize)
                {
                    EMGPacket temp;
                    packetQueue.TryDequeue(out temp);
                }
            }

            fileStream.Close();
        }