【问题标题】:Writing a C# synch app using USB使用 USB 编写 C# 同步应用程序
【发布时间】:2013-01-23 22:43:02
【问题描述】:

我正在考虑将同步功能添加到我的一个 C# 应用程序中。其目的是其中一个同步选项允许一个版本的应用通过 USB 电缆同步到另一个版本的应用。

该应用是跨平台的,目前使用 Mono 在 Windows 和 Mac 上实现,但最终也将移植到 iOS 和 Android。

我只想通过 USB 数据线发送和接收数据。

这听起来可行吗?

【问题讨论】:

  • 请参阅常见问题解答,了解有关此处要问的问题类型的信息。
  • 我觉得这里没有做任何研究。我们是来指导有特定错误的人,而不是回答“我应该怎么做?”问题。
  • 不正确,我做了很多研究,但我没有找到任何讨论 PC 到 PC 数据通过 USB 仅 PC 到设备的传输,所以我想知道这是否可行。

标签: c# usb communication transfer


【解决方案1】:

可行吗?当然。这只是一个串行数据传输。您必须处理端口的打开和关闭以及数据的发送/接收,但这非常简单。

public void SendDataOverSerial(string data) {
  try {
     SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); 
     port.Open(); 
     port.Write(data); 
  }
  finally {
     port.Close();    
  }
}

显然,您需要在管道的另一端接收数据并执行它应该对它执行的任何操作。

【讨论】:

  • 我想我正在努力解决的问题是通过 USB 进行操作,您的示例谈到了 COM1,它是一个串行端口。大概您是在建议可以像打开串行端口一样打开 USB 端口?
  • 如果 port 在 finally 块中为 null 或处于无效状态,它将抛出异常,这是您不应该做的事情。在这种情况下使用using 可能更好
  • USB 是一种串行协议。它不是 COM,但基本原理是相同的。选择一个用于 USB 的 coms 库(code.google.com/p/csharp-usb-hid-drivericsharpcode.net/OpenSource/SharpUSBLib/default.aspx 等)并对其进行编码。
【解决方案2】:

这是一个很老的问题,但我最近写了一篇博客文章来描述如何实现这一点。简单地使用 SharpUSBLib 之类的东西是行不通的,因为您的 iOS 应用程序无法直接访问 USB 端口。

http://thecodewash.blogspot.com/2017/05/communicating-with-your-ios-app-over.html

要回答您的问题(所以这个答案不仅仅是一个链接),是的,使用通常作为 iTunes 的一部分安装的 USB 多路复用守护程序 (usbmuxd) 程序绝对可以实现这一点。该程序可以通过 USB 电缆创建与您的 iOS 设备的套接字连接,并允许您通过该套接字连接进行通信,就像您使用任何其他套接字一样。该链接更详细。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2012-08-21
    • 1970-01-01
    相关资源
    最近更新 更多