Nur*_*lim 2 linux bash serial-port
我使用简单的 RedHat Linux 机器的收银机。这些寄存器具有连接到串行端口 ( ttyS0)的扫描器。
我们进行了大量测试,需要有人站在收银机前并在扫描仪上刷产品。我试图找出一种方法来从等式中删除这个人。
有没有一种简单的方法来模拟来自串行端口的输入?
显然,向串口发送信息很容易:
echo [whatever] > /dev/ttyS0
Run Code Online (Sandbox Code Playgroud)
但我真正喜欢的是某种 bash 代码,我可以在其中键入:
echo [barcode number] > (some code that makes the machine think the barcode number is coming from the serial port)
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我实际上可以放在登记册上的内容也受到限制。我无法在机器上安装任何新的实用程序。我可以把bash脚本放在那里,但仅此而已。
您可以使用TIOCSTIioctl (以 root 用户身份)执行此操作。请参阅本答案末尾的示例程序。将其用作
echo [whatever] | ./tiocsti > /dev/ttyS0
Run Code Online (Sandbox Code Playgroud)
您也可以从 perl 执行此操作而无需编译任何内容 - 搜索此站点,有很多示例。
我正在使用的另一个选项是在硬件中进行:只需通过 USB-> 串行适配器将机器连接到自身,然后写入/dev/ttyUSBx(或/dev/serial/by-id/xx-xx-xx)您想要读取的任何内容/dev/ttySx(make /dev/ttyUSBxrawstty raw以便它传递数据不变)。