我有一个ECR(电子收银机)设备,它有一个RS-232串口电缆连接到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)发布于 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。
对于我编写的应用程序,我通过写入设备并识别其响应来确定哪个设备是哪个设备。对于没有响应的设备,这要么是一个有价值的编程挑战,要么是一个平凡的配置解决方案。
发布于 2012-11-05 14:46:21
我认为你需要阅读一些关于RS-232的知识,当然,还有C语言编程。没有用于RS-232的驱动程序。这是一个非常“愚蠢”的协议--您基本上只是将数据推出端口。
PC检测不到电缆吗?那是因为它不是USB。信不信由你,即插即用并不总是存在的;你告诉软件设备应该连接到哪个端口,它就会试图与之对话。
此外,这些不是“代码片段”,它们只是函数原型。那里没有任何实际的代码。
发布于 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
https://stackoverflow.com/questions/13227155
复制相似问题