HRESULT Library_spot_hardware_usb_native_Microsoft_SPOT_Hardware_UsbClient_UsbStream::nativeRead___I4__SZARRAY_U1__I4__I4( CLR_RT_StackFrame& stack ) { TINYCLR_HEADER(); CLR_INT32 retVal = 0; CLR_INT32 controllerIndex, streamIndex, stream; CLR_UINT32 offset, count; CLR_RT_HeapBlock* pThis; CLR_RT_HeapBlock_Array* array; pThis = stack.This(); FAULT_ON_NULL(pThis); controllerIndex = pThis[ Library_spot_hardware_usb_native_Microsoft_SPOT_Hardware_UsbClient_UsbStream::FIELD__m_controllerIndex ].NumericByRef().s4; streamIndex = pThis[ Library_spot_hardware_usb_native_Microsoft_SPOT_Hardware_UsbClient_UsbStream::FIELD__m_streamIndex ].NumericByRef().s4; array = stack.Arg1().DereferenceArray(); FAULT_ON_NULL(array); offset = stack.Arg2().NumericByRef().u4; count = stack.Arg3().NumericByRef().u4; stream = (controllerIndex << USB_CONTROLLER_SHIFT) + streamIndex; if( array->m_numOfElements < (offset + count) ) { TINYCLR_SET_AND_LEAVE(CLR_E_INVALID_PARAMETER); } else { retVal = USB_Read( stream, (char*)array->GetFirstElement()+offset, count ); } stack.SetResult_I4( retVal ); TINYCLR_NOCLEANUP(); }
int DebuggerPort_Read( COM_HANDLE ComPortNum, char* Data, size_t size ) { NATIVE_PROFILE_PAL_COM(); int ret = 0; switch(ExtractTransport(ComPortNum)) { case USART_TRANSPORT: ret = USART_Read( ConvertCOM_ComPort( ComPortNum ), Data, size ); break; case USB_TRANSPORT: ret = USB_Read( ConvertCOM_UsbStream( ComPortNum ), Data, size ); break; case SOCKET_TRANSPORT: ret = SOCKETS_Read( ConvertCOM_SockPort(ComPortNum), Data, size ); break; } return ret; }
int main() { unsigned char c = 0x55; USB_Open(); //USB_WriteWord(0x0100); //USB_WriteChar('D'); //USB_WriteChar(c); //printf("W: 0x%02x\r\n", c); while(1) { if(kbhit()) break; c = USB_Read(); printf("R: 0x%02x\r\n", c); Sleep(200); } USB_Close(); }
///////////////// // Helper functions char USB_ReadChar() { char c = -1; USB_Read(&c, 1); return c; }