Exemple #1
0
        protected byte[] ReadRAW(int cmd, int addr)
        {
            if (this.IsOpen())
            {
                byte[] buff     = new byte[64];
                byte[] buffer   = new byte[64];
                uint   numbytes = 0;
                int    i;

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


                for (i = 4; i < 64; i++)
                {
                    buffer[i] = 0;
                }
                usbXpress.SI_Write(handle, buffer, OLEN, ref nbytes, 0);

                USBXpress.RXQueueStatus queueStatus = USBXpress.RXQueueStatus.SI_RX_EMPTY;
                numbytes = 0;

                for (i = 0; i < 50 && numbytes < ILEN; i++)
                {
                    usbXpress.SI_CheckRXQueue(handle, ref numbytes, ref queueStatus);
                    Thread.Sleep(20);
                }
                ret = usbXpress.SI_Read(handle, buffer, 64, ref nbytes, 0);
                for (i = 0; i < 64; i++)
                {
                    buff[i] = buffer[i];
                }

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

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