/*[StructLayout(LayoutKind.Sequential, Pack = 1, Size = COMMAND_PACKET_SIZE)] * public struct GenericHidPacket * { * public byte WindowsReserved; * * [MarshalAs(UnmanagedType.ByValArray, SizeConst = COMMAND_PACKET_SIZE-1)] * public byte[] Data; * }*/ #endregion #region Protocol Handlers /// <summary> /// Read a complete frame from the serial device. /// </summary> protected override byte[] ReceiveFrame() { byte[] buffer = new byte[COMMAND_PACKET_SIZE]; uint r = rx.Read(buffer, COMMAND_PACKET_SIZE); if (r != COMMAND_PACKET_SIZE) { throw new WinAPI.WinApiFileException("Received data invalid - length mismatch"); } // Throw away the first byte (Windows Reserved) buffer = buffer.Skip(1).ToArray(); return(buffer); }