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(); }
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(); }