コード例 #1
0
        /*[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);
        }