【问题标题】:Communication over serial port using Bash使用 Bash 通过串行端口进行通信
【发布时间】:2013-03-29 15:44:30
【问题描述】:

我正在尝试使用支票扫描仪将图像文件传输到我的 Mac(该公司仅提供 Windows 驱动程序)。我有技术手册,其中指定了可以发送到设备的所有命令,我先尝试最基本的命令(闪烁 LED、打印序列号等)。

我已经能够使用“串行工具”与设备成功通信,但我正在尝试使用 bash 来更好地控制输入/输出并最终编写一个自动化脚本。

在阅读了一些其他帖子并尝试了几件事之后,到目前为止我已经尝试过: 使用 stty 命令和各种标志打开端口,例如:
stty -f /dev/tty.usbserial-A5002TeW speed 9600 cs8 cread clocal
stty -f /dev/tty.usbserial-A5002TeW raw speed 9600 -cstopb -parity -echo

尝试通过 echo 发送命令:
echo $'LE 100\cM\cJ' > /dev/tty.usbserial-A5002TeW
--请注意,串行设备是通过 USB 适配器连接的,但在我为其安装了正确的驱动程序后,它会像常规串行设备一样响应(至少在串行工具中)。
--我正在尝试使用 \cM\cJ 字符,因为由于该设备是供 Windows 机器使用的,所以我认为我应该使用它们的控制代码,因此我尝试了代码的多种排列。

问题: 无论发生什么,设备都不会响应(没有闪烁的 LED 灯、没有输出等),并且我的 bash shell 挂起,直到我停止它 (^C)。我知道我可能可以使用 Python 库,而且我可能最终会这样做,但我希望至少看到 bash shell 的一些基本功能。

【问题讨论】:

  • 好的,所以经过一番折腾之后,我可以让一些东西正常工作,但是我没有使用 \r\n 中发送的 \cM\cJ。我可以让 LED 灯亮起来等等。现在我只需要能够可靠地从中获取数据,我一直在做 cat /dev/tty.usb-etc 哪种工作,但似乎有一个时间问题,我会时不时地得到完整的输出,通常我会得到零碎的。
  • 您的终端可能正在缓冲输入/输出。您的 USB 设备是否在 /dev 中有 cu 变体?类似/dev/cu.usb-etc。这是一种更原始​​的套接字类型,可能正是您所需要的。也看看setserial。此相关帖子中的更多提示:stackoverflow.com/questions/3918032/bash-serial-i-o-and-arduino 请务必报告适合您的解决方案,我也想知道 :-)
  • 成功了!!!我所要做的就是stty -f /dev/cu.usbserial-blah speed 9600,然后我所有的正常回显命令都像魅力一样工作。谢谢!!!

标签: bash serial-port


【解决方案1】:

另一种选择是尝试通过在 Mac 上的 VM 中安装 Windows 来使其在 VM(VirtualBox、Fusion、Parallels 等)下工作。

最繁琐的解决方案,因为您必须一直重启,将您的 Mac 双重启动到 Windows。

最后,我的 iPhone 上有一个来自银行机构的应用程序,它只需使用手机中的相机拍摄支票的正面和背面,他们就会接受这种方式。这可能是一种选择。

【讨论】:

  • 遗憾的是,这不是一个选项,这是一个非常小的设备,客户可以直接插入他们的机器来读取支票。我们已经可以为使用 Windows 机器的客户提供支持,但对于 Mac 用户来说,目前还没有选择。该设备只有一个串行端口,所以这几乎是任何人都可以从中获取图像的唯一方法。
  • 查看我在您发布此内容时所做的编辑。也许这会奏效。
  • 感谢您的帮助,但我可以肯定的是,在幕后与握手并没有什么骗局。我已经能够在我的 Mac 上使用“串行工具”实用程序使用一些基本命令,我实际上只是想在 bash shell 中重现我的成功。
  • 很公平。我看不出你的终端设置有什么明显的问题,而且这里没有可以玩的设备,我只能祝你好运。
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
相关资源
最近更新 更多