我有一个ECR(电子收款机)设备,它有一个RS-232 com端口电缆,用于连接到PC,但我没有给它任何驱动程序。我正在尝试将设备连接到PC,但PC无法检测到电缆。如何检测此RS-232上附带的设备?我在Linux下工作。有关如何找到该设备的任何帮助表示赞赏吗?
以下是我在C中找到的基于Baudrate和Com Port number连接设备的代码片段。
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)
答案 0 :(得分:3)
请参阅my answer相关问题,了解如何打开和配置串口。
在Linux上,串行端口几乎总是/dev/ttyS[0123]
(即/dev/ttyS0
,/dev/ttyS1
等)用于硬连线端口,/dev/ttyUSB*
用于USB端口。只有当硬件出现在某些发行版上时,硬连线“设备”才会出现。在其他情况下,他们总是出现是否有硬件。 (尝试cat /dev/ttyS2
并查看是否收到错误“no such device”。)这是一个内核配置选项,经常设置为创建设备条目,无论硬件是否存在。
USB端口仅在插入硬件时才存在,但如果有多个USB串口,则可能难以识别哪个是哪个。
如果设备的某些方面一致,可以在/etc/udev/rules.d/*
内配置一种机制。有关详细信息,请参阅man 7 udev
。
对于我编写的应用程序,我通过写入设备并确定其响应来确定哪个设备是哪个设备。对于没有响应的设备,这可能是一项有价值的编程挑战,也可能是一项普通的配置解决方案。
答案 1 :(得分:0)
我认为你需要做一些关于RS-232的阅读,以及C编程。没有RS-232的驱动程序。这是一个非常“愚蠢”的协议 - 你基本上只是将数据推出端口。
PC无法检测到电缆?那是因为它不是USB。信不信由你,即插即用并不总是存在;你告诉软件设备应该连接到哪个端口,它试图与它通信。
此外,这些不是“代码片段”,这些只是函数原型。那里没有任何实际的代码。
答案 2 :(得分: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(易于使用)与设备进行通信。
的问候, 祖布拉