c - 在 Linux 中检测 RS-232 com 端口

标签 c

我有一个 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/

相关文章:

python - 如何以编程方式确定 "write"系统调用在特定文件上是否是原子的?

c - C编程中的修改链表

c - 使用 strstr 时出现奇怪的错误

无法弄清楚如何使用 if 语句返回除一个选项之外的任何内容

c - 还有其他方法可以用C语言构建管道吗?

c - 在 EOF 处终止 scanf 并忽略字符串

这个程序的 Python 内存模型

c - 在 x86 上对 32 位 block 实现类似学校的划分

c - 如何按值可变大小数组传递(到函数)?

c - 递增运算符在 if 语句中如何工作?