2009-07-10 55 views
0

我有一个USB读卡器,我需要从Lazarus/Delphi访问。使用为USB端口上的串行端口编写的代码

SDK编写在VB6中,并与串行端口对话,所以在Windows中安装驱动程序将USB端口映射到串行端口。

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

VB6代码分别发送每个字符(串口,这么说),而USB接口允许发送数据流。

我仍然应该一个字节一个字节发送,或者只是concat命令并发送一次吗?或者这个概念完全不同吗?

回答

1

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

在这种情况下,您可以打开/ dev/ttyACM0(或其他)并读/写它。无论哪种方式:如果USB设备被Linux检测为串行通信设备,只需将其打开(通过/ dev /),并像对待串口设备一样对待它(除非您不必担心配置波特率)。

并且没有理由说明为什么你的Delphi代码应该将数据发送到串行设备“一次一个字符” - 你也应该可以在Delphi中编写整个数据包。当我通过串口控制PTZ (Pan-tilt-zoom) dome cameras时,这就是我曾经做过的。如果在Linux中没有将设备检测为串行端口,那么只需打开已安装的/ dev /设备并使用标准文件I/O(read()/ write()来访问设备即可脱身。 )。再次,一次写入整个命令。

1

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

+0

我猜想协议会完全不同,但由于有硬件适配器,我认为它毕竟不能太差。 我会寻找一个Linux驱动程序,但是我仍然需要在Windows中编写一个不同的驱动程序,所以这不是一个最佳的解决方案。 无论如何,thanx已经回复,尽管它还不是我希望的答案。 :) – lyle 2009-07-13 04:31:03