【问题标题】:Using code written for the serial port on an usb port使用为 USB 端口上的串行端口编写的代码
【发布时间】:2009-07-10 02:42:22
【问题描述】:

我有一个 USB 读卡器,我需要从 Lazarus / Delphi 访问它。

SDK 是用 VB6 编写的,并与 serial 端口通信,因此在 Windows 中它会安装一个驱动程序来将 USB 端口映射到串行端口。

我想跳过这一步(例如,让相同的代码在 Linux 中工作),但我对 USB 协议不是很熟悉,所以我不知道它如何映射到串行协议。

VB6 代码单独发送每个字符(可以说是串行),而 USB 接口允许发送数据流。

我应该仍然逐字节发送,还是只是连接命令并一次性发送?还是这个概念完全不同?

【问题讨论】:

    标签: usb serial-port


    【解决方案1】:

    如果 USB 设备是 CDC,那么 Linux 会自动将其检测为串行通信设备。

    在这种情况下,您只需打开 /dev/ttyACM0(或其他)并对其进行读/写。

    无论哪种方式:如果 USB 设备被 Linux 检测为串行通信设备,只需打开它(通过 /dev/)并像对待串行设备一样对待它(除非您不必担心配置波特率率)。

    您的 Delphi 代码没有理由“一次一个字符”地向您的串行设备发送数据——您也应该能够在 Delphi 中编写整个数据包。这就是我以前通过串口控制PTZ (Pan-tilt-zoom) dome cameras时的做法。

    如果设备在 Linux 中未被检测为串行端口,您可能只需打开已安装的 /dev/ 设备并使用标准文件 I/O (read()/write()) 访问它即可逃脱.同样,一次编写整个命令。

    【讨论】:

      【解决方案2】:

      USB 协议与串口完全不同。听起来最简单的方法可能是在 Linux 上安装合适的 USB 串行驱动程序,并使用相同的串行协议。很可能已经存在适用于您的设备的驱动程序。

      【讨论】:

      • 我猜协议会完全不同,但由于有硬件适配器,我认为它毕竟不会有太大不同。我会寻找 Linux 驱动程序,但是我仍然需要在 Windows 中编写不同的驱动程序,所以这不是最佳解决方案。无论如何,thanx 已经回复了,尽管这还不是我希望的答案。 :)
      猜你喜欢
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 2021-12-18
      • 2012-08-09
      • 1970-01-01
      相关资源
      最近更新 更多