使用为usb端口上的串行端口编写的代码

时间:2009-07-10 02:42:23

标签: usb serial-port

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

SDK是用VB6编写的,与串行端口对话,因此在Windows中安装驱动程序将USB端口映射到串口。

我想跳过这一步(例如,以便在Linux中使用相同的代码),但我对USB协议不是很熟悉,因此我不知道它是如何映射到串行协议的。< / p>

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

在这种情况下,你可以打开/ dev / ttyACM0(或其他)并读/写它。

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

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

如果在Linux中未将设备检测为串行端口,则可以通过打开已安装的/ dev / device并使用标准文件I / O(read()/ write())访问它来逃脱。再次,一次编写整个命令。