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

使用为usb端口上的串行端口编写的代码,usb,serial-port,Usb,Serial Port,我有一个USB读卡器,需要从Lazarus/Delphi访问 SDK是用VB6编写的,并与串行端口通信,因此在Windows中它安装了一个驱动程序来将USB端口映射到串行端口 我想跳过这一步(例如,让相同的代码在Linux中工作),但我对USB协议不是很熟悉,所以我不知道它如何映射到串行协议 VB6代码分别发送每个字符(可以说是串行的),而USB接口允许发送数据流 我还是应该一个字节一个字节地发送,还是只发送命令并一次性发送?还是说这个概念完全不同?USB协议与串行端口完全不同。听起来最简单的方

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

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

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

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


我还是应该一个字节一个字节地发送,还是只发送命令并一次性发送?还是说这个概念完全不同?

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

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

在本例中,您只需打开/dev/ttyACM0(或其他)并对其进行读/写

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

而且,您的Delphi代码没有理由“一次字符”向串行设备发送数据——您也应该能够在Delphi中编写整个数据包。这就是我过去通过串口控制时所做的


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

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