/// <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(); }
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"); } } } }