我有一个 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)
最佳答案
请参阅my answer到显示如何打开和配置串行端口的相关问题。
在Linux上,串口几乎都是/dev/ttyS[0123]
(即/dev/ttyS0
, /dev/ttyS1
等)用于硬连线端口,/dev/ttyUSB*
用于 USB 端口。硬连线“设备”可能仅在某些发行版上存在硬件时才会出现。在其他人身上,无论是否有硬件,它们总是出现。 (尝试 cat/dev/ttyS2
看看你是否收到错误“没有这样的设备”。)这是一个内核配置选项,经常设置它来创 build 备条目,无论硬件是否存在.
USB 端口只有在插入硬件时才会出现,但如果有多个 USB 串行端口,则很难区分哪个是哪个。
/etc/udev/rules.d/*
中有一种机制,如果设备的某些方面是一致的,则可以对其进行配置。有关详细信息,请参见 man 7 udev
。
对于我编写的应用程序,我通过写入设备并识别其响应来确定哪个设备是哪个。对于没有响应的设备,这要么是一个有值(value)的编程挑战,要么是一个普通的配置解决方案。
关于c - 在 Linux 中检测 RS-232 com 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13227155/