【问题标题】:Trouble with Xamarin.Android app which communicate with FTDI optical probe via USB通过 USB 与 FTDI 光学探头通信的 Xamarin.Android 应用程序出现问题
【发布时间】:2014-04-18 10:53:24
【问题描述】:

我正在尝试实现一个 Xamarin.Android 应用程序,该应用程序必须通过 USB (FTDI chip) 与光学探测器进行通信。
我试图:

  1. 使用 Xamarin 创建一个 java 库绑定项目,将 D2XX.jar 转换为 c# 等效项,但没有成功。
  2. 我们已尝试在 c# 中翻译此 java 指令的参数 connection.ControlTransfer(0x040, 0x03, 0x809c, 0, null, 0, 5000)。在 C# 中,我找到了除第一个参数之外的所有参数。在 c# ControlTransfer 中,接受一个枚举 USBAddressing 作为第一个参数,它不包含值为 0x040 或 64 的元素。 有没有人尝试以相同的 java 方式使用 controlTransfer?如何将 0x040 转换为 Xamarin UsbAddressing 元素?

提前谢谢你

【问题讨论】:

  • 嗨,扎帕桑。您是否找到在 c# xamarin 中使用 ControlTransfer() 的任何解决方案?我也有同样的问题。当我使用 UsbAddressing.Out 时,它总是返回 null。如果你修好它可能会帮助我吗?提前致谢。
  • 看来在这个应用程序中使用xamarin的唯一方法就是绑定一个jar。

标签: c# java android xamarin ftdi


【解决方案1】:

您可以将数字转换为 UsbAddressing。现在这是唯一的方法和推荐的方法(我正在与 xamarin 支持聊天)。我有同样的问题,这对我有用:

 UsbDeviceConnection.ControlTransfer((UsbAddressing)64, 0, 0, 0, null, 0, 0);// reset  mConnection.controlTransfer(0×40, 0, 1, 0, null, 0, 0);//clear Rx
UsbDeviceConnection.ControlTransfer((UsbAddressing)64, 0, 1, 0, null, 0, 0);// clear Rx
UsbDeviceConnection.ControlTransfer((UsbAddressing)64, 0, 2, 0, null, 0, 0);// clear Tx
UsbDeviceConnection.ControlTransfer((UsbAddressing)64, 3, 26, 0, null, 0, 0);// baudrate  57600 115200-0x001A-26, 9600-0x4138-16696, 19200-0x809C-32924, 230040-0x000D-13
UsbDeviceConnection.ControlTransfer((UsbAddressing)64, 2, 0, 0, null, 0, 0);// flow  control none                                                            
UsbDeviceConnection.ControlTransfer((UsbAddressing)64, 4, 8, 0, null, 0, 0);// data bit  8, parity  none,  stop bit 1, tx off

在我的 CAS 中,我在 hexa 0x001A 和 int 26 中使用波特率 115200

如果还有问题,请告诉我。

【讨论】:

  • Majkl:目前是否有任何代码可用于连接包装 D2xx.jar?我试图创建一个 Xamarin android 绑定库,但它出现了我不理解的各种错误。
猜你喜欢
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多