Exemplo n.º 1
0
        public USBXpress.ReturnCodes WriteRAW(int cmd, byte[] buff)
        {
            if (this.IsOpen())
            {
                byte[]                buffer      = new byte[64];
                const int             max_payload = 64 - 4; // 64 (long paquete) - 4 (long. cabecera)
                int                   nbytes      = 0;
                USBXpress.ReturnCodes ret         = USBXpress.ReturnCodes.SI_SUCCESS;

                ClearInputBuffer(handle);
                buffer[0] = (byte)'A';
                buffer[1] = (byte)'T';
                buffer[2] = (byte)'C';
                buffer[3] = (byte)cmd;

                for (int i = 0; i < max_payload && i < buff.Length; i++)
                {
                    buffer[4 + i] = buff[i];
                }

                ret = usbXpress.SI_Write(handle, buffer, OLEN, ref nbytes, 0);
                WaitACK_USB();

                if (ret != USBXpress.ReturnCodes.SI_SUCCESS)
                {
                    isOpen = false;
                }

                return(ret);
            }
            else
            {
                return(USBXpress.ReturnCodes.SI_WRITE_ERROR);
            }
        }
Exemplo n.º 2
0
        protected byte[] WriteRAW(int cmd, int addr, byte[] buff)
        {
            if (this.IsOpen())
            {
                byte[]                buffer      = new byte[64];
                const int             max_payload = 32;
                int                   nbytes      = 0;
                USBXpress.ReturnCodes ret         = USBXpress.ReturnCodes.SI_SUCCESS;

                ClearInputBuffer(handle);
                buffer[0] = (byte)'F';
                buffer[1] = (byte)'R';
                buffer[2] = (byte)'M';
                buffer[3] = (byte)cmd;
                buffer[4] = (byte)(addr & 0xff);
                buffer[5] = (byte)((addr >> 8) & 0xff);

                if (buff != null)
                {
                    for (int i = 0; i < max_payload && i < buff.Length; i++)
                    {
                        buffer[6 + i] = buff[i];
                    }
                }
                ret    = usbXpress.SI_Write(handle, buffer, OLEN, ref nbytes, 0);
                buffer = WaitACK_USB();

                if (ret != USBXpress.ReturnCodes.SI_SUCCESS)
                {
                    isOpen = false;
                }

                return(buffer);
            }
            else
            {
                return(null);
            }
        }