저는 xamarin android의 직렬 칩에 CP2102 USB와 통신하기위한 응용 프로그램을 작성했습니다. 나는 succssesfully 장치를 열고 인터페이스를 주장하기위한 전제를 부여 할 수 있습니다. 나는 장치를 연 후에 나는 엔드 포인트 인터페이스를 주장하고 얻을 코드 줄을 사용 UsbDeviceConnection ControlTransfer()는 -1을 반환합니다.
for (int i = 0; i < mDevice.InterfaceCount; i++)
{
UsbInterface usbIface = mDevice.GetInterface(i);
if (mConnection.ClaimInterface(usbIface, true))
{
Log.Debug(TAG, "claimInterface " + i + " SUCCESS");
}
else
{
Log.Debug(TAG, "claimInterface " + i + " FAIL");
}
}
UsbInterface dataIface = mDevice.GetInterface(mDevice
.InterfaceCount - 1);
for (int i = 0; i < dataIface.EndpointCount; i++)
{
UsbEndpoint ep = dataIface.GetEndpoint(i);
if (ep.Type == UsbAddressing.XferBulk)
{
if (ep.Direction == UsbAddressing.In)
{
mReadEndpoint = ep;
}
else
{
mWriteEndpoint = ep;
}
}
}
가 그럼 난 장치와 통신하기 위해 ControlTransfer을 사용하려고하지만 항상 -1을 반환합니다. 이 내가 설정을 설정하기 위해 작성한 코드 :
int r = mConnection.ControlTransfer(UsbAddressing.Out, 0x00, 0x0001, 0, null, 0, 5000);
는 R 항상 -1 나는 자바 안드로이드에서이 명령을 실행하면 장치가 완벽하게 작동하지만, 통신에 오류가 있음을 나타냅니다 :
mConnection.controlTransfer(0x41, 0x00, 0x0001, 0, null, 0, 5000);