java - USB 通信,Monodroid/Android 中的端点

标签 java android usb xamarin.android

我有一个 USB 设备,正在尝试使用 MonoDroid API 与我的 Android 4.1 设备进行通信,但在设置正确连接时遇到了一些问题。首先,为达成我“认为”可能存在的问题而采取的步骤:

  1. 使用 Intent 过滤器按供应商和产品 ID 过滤我的设备 我的 AndroidManifest 文件。这效果很好,当我插入我的 我的应用程序请求默认启动的设备,因此权限应该 正确。
  2. 从 Intent 过滤器在发现设备后发送程序的 Activity 中获取我的 USB 设备:UsbDevice device = (UsbDevice)this.Intent.GetParcelableExtra(UsbManager.ExtraDevice);
  3. 检查只有一个接口(interface)后,我通过发出以下命令来获取关联的接口(interface):UsbInterface intf = device.GetInterface(0);
  4. 检查端点的数量并抓取它们。有 2 个,因为这是输入和输出设备: UsbEndpoint endpoint_IN = intf.GetEndpoint(0); UsbEndpoint endpoint_OUT = intf.GetEndpoint(1);
  5. 使用 UsbManager 获取与设备的连接:UsbDeviceConnection connection = device_manager.OpenDevice(device);

但是,我注意到接口(interface)索引0处的端点(上面的endpoint_IN)具有UsbAddressing枚举类型“DirMask”,其中endpoint_OUT具有类型“Out”;我希望端点_IN 为“In”,但事实并非如此。什么是“DirMask”?内联文档指出“本节的文档尚未输入”,在线文档也反射(reflect)了相同的情况:http://api.xamarin.com/?link=T%3aAndroid.Hardware.Usb.UsbAddressing

这可能是我的问题吗?我只是不太确定。我尝试实现其余的通信程序,但未能产生任何结果。例如,以下代码应输入一个命令来接收一个读数:

Byte[] sys_command = Encoding.ASCII.GetBytes("!001:SYS?\r");
Java.Nio.ByteBuffer sys_command_buffer = Java.Nio.ByteBuffer.Wrap(sys_command);

Java.Nio.ByteBuffer output_buffer = Java.Nio.ByteBuffer.Allocate(4);

UsbRequest request_out = new UsbRequest();
request_out.Initialize(connection, endpoint_OUT);

connection.ClaimInterface(intf, forceClaim);

request_out.Queue(output_buffer, 4);
connection.BulkTransfer(endpoint_IN, sys_command, sys_command.Length, TIMEOUT);

if (connection.RequestWait() == request_out)
    readings.Text = output_buffer.GetFloat(0).ToString();

有什么见解吗?

最佳答案

考虑到所有因素,我的接口(interface)端点是向后的。也就是说,我试图读取/写入错误的接口(interface)。

关于java - USB 通信,Monodroid/Android 中的端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12111417/

相关文章:

java - 如何使用 “for” 循环找到 28 之后的前 3 个完全数?

java - 打开一个新的 JFrame

应用程序中的 Android webview 未加载

linux - GSM 调制解调器未作为 ttyUSB 连接到 Tomato 固件上

java - 使用 JAXB 2.0 忽略 XML 中的一些包装器标记

java - 'ExpandableListAdapter' 是抽象的;不能实例化

Android SQLite 原始查询参数

linux - 如何通过 idVendor 和 idProduct 获取 USB 设备路径?

windows - 如何强行释放被其他应用程序占用或挂起的COM端口

java - 抽象类 - 请澄清