コード例 #1
0
        /// <summary>
        /// Fix the issue : JNI ERROR (app bug): local reference table overflow (max=512)
        /// </summary>
        public virtual void ReadThread_Step()
        {
            if (m_UsbReqIn.Queue(m_UsbBufferIn, m_SizeRead) == true)
            {
                using (UsbRequest usbReq = m_UsbConnection.RequestWait()) {
                    // (mUsbConnection.requestWait() is blocking
                    if (usbReq == m_UsbReqIn)
                    {
                        // this is an actual receive
                        // do receive processing here (send to consumer)
                        //
#if !DO_NOT_READ
                        m_BufferRead  = m_UsbBufferIn.Array();
                        m_SizeHasRead = m_BufferRead.Length;
#endif
                        if (m_ReadCallback != null)
                        {
                            m_ReadCallback.OnStreamRead(this);
                        }
                    }
                    else
                    {
                    }
                }
            }
            else
            {
            }
            m_UsbBufferIn.Clear();
        }
コード例 #2
0
 public void Write(byte[] buffer, uint cbToWrite)
 {
     if (Connection != null)
     {
         if (EndpointWrite != null)
         {
             if (buffer.Length < cbToWrite)
             {
                 byte[] temp = new byte[cbToWrite];
                 buffer.CopyTo(temp, 0);
                 buffer = temp;
             }
             if (buffer[0] == 0)
             {
                 cbToWrite--;
                 byte[] temp = new byte[cbToWrite];
                 for (int x = 0; x < cbToWrite; x++)
                 {
                     temp[x] = buffer[x + 1];
                 }
                 buffer = temp;
             }
             UsbRequest request  = new UsbRequest();
             ByteBuffer bytes644 = ByteBuffer.Wrap(buffer);
             request.Initialize(Connection, EndpointWrite);
             while (!request.Queue(bytes644, buffer.Length))
             {
                 Thread.Sleep(40);
             }
             if (Connection.RequestWait() == request)
             {
                 Console.WriteLine("Changed Wavelength");
             }
         }
     }
 }