1

我有一个 ECR(电子收银机)设备,它有一个 RS-232 com 端口电缆用于连接到 PC,但我没有得到任何驱动程序。我正在尝试将设备连接到 PC,但 PC 无法检测到电缆。如何检测连接在此 RS-232 上的此设备?我在 Linux 下工作。任何有关如何找到设备的帮助表示赞赏?

以下是我在 C 中找到的代码片段,用于根据波特率和 Com 端口号连接到设备。

int OpenComport(int comport_number, int baudrate)

int SendByte(int comport_number, unsigned char byte)

int SendBuf(int comport_number, unsigned char *buf, int size)
4

3 回答 3

3

请参阅对相关问题的回答,该问题显示了如何打开和配置串行端口。

在 Linux 上,串行端口几乎总是/dev/ttyS[0123](即/dev/ttyS0/dev/ttyS1等)用于硬连线端口和/dev/ttyUSB*USB 端口。只有在某些发行版上存在硬件时,才会出现硬连线“设备”。在其他人身上,无论有没有硬件,它们总是出现。(尝试cat /dev/ttyS2看看你是否得到错误“没有这样的设备”。)这是一个内核配置选项,经常设置它来创建设备条目,无论硬件是否存在。

USB 端口仅在插入硬件时才存在,但如果有多个 USB 串行端口,则可能难以识别哪个是哪个。

/etc/udev/rules.d/*如果设备的某些方面是一致的,则可以在其中配置一种机制。详情请参阅man 7 udev

对于我编写的应用程序,我通过写入设备并识别其响应来确定哪个设备是哪个设备。对于没有响应的设备,这要么是一个有价值的编程挑战,要么是一个普通的配置解决方案。

于 2012-11-05T06:59:34.437 回答
0

我认为您需要阅读有关 RS-232 以及 C 编程的一些知识。RS-232 没有驱动程序。这是一个非常“愚蠢”的协议——你基本上只是将数据推出端口。

PC无法检测到电缆?那是因为它不是USB。信不信由你,即插即用并不总是存在。您告诉软件设备应该连接到哪个端口,然后它会尝试与它通信。

此外,这些不是“代码片段”,它们只是函数原型。那里没有任何实际代码。

于 2012-11-05T06:46:21.277 回答
0

1>由于您的 ECR 上没有操作系统,所以我想您不需要任何驱动程序,而是 ECR 中将有一个固件,它会尝试与您的 Linux UART 驱动程序进行通信

2> Rs-232 基本上是一种串行协议,我的意思是它有 9 根线,因此使用 9 针连接器 DB-9 连接器,处理器内部的所有通信都是并行格式,因此使用称为 UART 的芯片将所有并行数据转换成串行数据,由于yu要传递Rs-232格式的数据,所以需要以该格式打包。

3> Linux 内核已经有一个 uart 驱动程序,它是为 RS-232 实现的。所以需要担心来自Linux端的驱动程序。

4> 打开终端类型“dmesg | grep tty”(仅将 ECR 连接到 PC 的 rs-232 端口)。它会返回 ttyS 或 ttyUSB 等内容,但是如果您仅通过 rs-232 电缆连接,您只需专注于 ttyS。

5> 一旦你确定来自 dmesg 的 ttyS 设备,使用 minicom(它易于使用)与设备通信。

问候,祖布拉伊

于 2012-11-05T10:34:33.243 回答