私の問題を明確に説明できない場合は、ご容赦ください。USBデバイスと通信しようとしていますが、これは正常に完了していますが、USBデバイスから読み取りたいです。コマンドを転送するためのコードは次のとおりです。
public final static String TAG = "UsbClient";
private UsbManager mUsbManager;
private final int VID = 0x1fc9;
private final int PID = 0x0003;
private int toggle = 0;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_dummy,
container, false);
mUsbManager = (UsbManager) getActivity().getSystemService(Context.USB_SERVICE);
mPermissionIntent = PendingIntent.getBroadcast(getActivity(), 0, new Intent(ACTION_USB_PERMISSION), 0);
IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
getActivity().registerReceiver(mUsbReceiver, filter);
HashMap<String, UsbDevice> devlist = mUsbManager.getDeviceList();
Iterator<UsbDevice> deviter = devlist.values().iterator();
while (deviter.hasNext()) {
UsbDevice d = deviter.next();
print("Found device: "
+ String.format("%04X:%04X", d.getVendorId(),
d.getProductId()));
if (d.getVendorId() == VID && d.getProductId() == PID) {
mUsbManager.requestPermission(d, mPermissionIntent);
}
}
登録済み受信者のコードは次のとおりです。
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION_USB_PERMISSION.equals(action)) {
synchronized (this) {
UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
if(device != null){
//call method to set up device communication
if (device.getVendorId() == VID && device.getProductId() == PID) {
print("Got permission for the device");
permissionGranted = true;
UsbInterface intf = device.getInterface(0);
conn = mUsbManager.openDevice(device);
//intf=device.getInterface(0);
conn.claimInterface(intf, true);
/* if (!conn.claimInterface(device.getInterface(1), true)) {
print("Could not claim the interface");
return;
}
*/
int i = conn.controlTransfer(0x21, 0x09, 0x0200, 0x0000, new byte[] { (byte) toggle }, 1, 0);
endpoint=device.getInterface(0).getEndpoint(0);
if (toggle == 0) {
toggle = 1;
}
else {
toggle = 0;
}
if ((i == 0) || (i==1)) {
print("transfer successful");
}
else {
print("transfer failed");
}
}
}
}
else {
print("permission denied for device " + device);
}
}
}
}
};
OTGケーブルを使用して、Androidタブレットに接続されているUSBデバイスからデータを読み取る手順を知りたいと思いました。もう 1 つ、USB デバイスへの読み書き用のエンドポイントを取得する方法があります。
前もって感謝します。