【发布时间】:2013-03-29 15:44:30
【问题描述】:
我正在尝试使用支票扫描仪将图像文件传输到我的 Mac(该公司仅提供 Windows 驱动程序)。我有技术手册,其中指定了可以发送到设备的所有命令,我先尝试最基本的命令(闪烁 LED、打印序列号等)。
我已经能够使用“串行工具”与设备成功通信,但我正在尝试使用 bash 来更好地控制输入/输出并最终编写一个自动化脚本。
在阅读了一些其他帖子并尝试了几件事之后,到目前为止我已经尝试过:
使用 stty 命令和各种标志打开端口,例如:stty -f /dev/tty.usbserial-A5002TeW speed 9600 cs8 cread clocalstty -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