首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux中检测RS-232 com端口

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

Stack Overflow用户
提问于 2012-11-05 14:42:00
回答 3查看 2.5K关注 0票数 1

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

下面是我在C中找到的基于波特率和COM端口号连接到设备的代码片段。

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

发布于 2012-11-05 14:59:34

有关如何打开和配置串行端口的相关问题,请参阅my answer

在Linux上,串行端口几乎总是/dev/ttyS[0123]的(即/dev/ttyS0/dev/ttyS1等)。用于硬连线端口,/dev/ttyUSB*用于通用串行总线端口。只有当硬件出现在某些发行版上时,才会出现硬连线的“设备”。在另一些情况下,无论有没有硬件,它们都会出现。(尝试使用cat /dev/ttyS2,看看是否出现错误“没有这样的设备”。)这是一个内核配置选项,它经常被设置为创建设备条目,而不管硬件是否在那里。

仅当插入硬件时,USB端口才会出现,但如果有多个USB串行端口,则很难识别哪个是哪个。

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

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

票数 3
EN

Stack Overflow用户

发布于 2012-11-05 14:46:21

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

PC检测不到电缆吗?那是因为它不是USB。信不信由你,即插即用并不总是存在的;你告诉软件设备应该连接到哪个端口,它就会试图与之对话。

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

票数 0
EN

Stack Overflow用户

发布于 2012-11-05 18:34:33

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

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

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

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

一旦你从dmesg中确定了ttyS设备,就可以使用minicom (它易于使用)与设备进行通信。

问候你,Zubraj

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13227155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档