我试图让扫描仪将图像文件传输到我的Mac(该公司只提供Windows驱动程序)。我有技术手册指定了可以发送到设备的所有命令,我正在尝试最基本的命令(闪烁LED,打印序列号等)。使用Bash通过串行端口进行通信
我已经能够成功地使用“串行工具”下的设备进行通信,但我试图使用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 $'LE 100\cM\cJ' > /dev/tty.usbserial-A5002TeW
- 请注意,串行设备通过USB适配器连接,但在为我安装正确的驱动程序后作为常规串行设备作出响应(至少在串行工具中)。
- 我试图使用\ cM \ cJ字符,因为由于该设备是打算供Windows使用的,我想我应该使用它们的控制代码,我尝试了多个代码排列。
问题: 无论发生什么事,设备都不会响应(没有闪烁的LED灯,没有输出等),我的bash外壳会挂起,直到我停止它(^ C)。我知道我可以使用Python库,我可能会这样做,但我想至少看看bash shell的一些基本功能。
发布的评论,因为它最有可能不是问题:尝试使用'回声-n'或'printf'打印您的字符串没有额外的换行符是'echo'单独将产生。 – chepner
好的,所以经过一些更多的搞乱之后,我可以得到一些工作,但不是使用\ cM \ cJ我发送\ r \ n。我可以得到LED灯等等。现在我只需要能够可靠地从中获取数据,我一直在做'cat/dev/tty.usb-etc'这类作品,但似乎有一个时间问题,因为我只会不时地得到完整的输出,通常我会得到件和零件。 –
您的终端可能会缓冲输入/输出。你的USB设备在'/ dev'中有'cu'变种吗?就像'/ dev/cu.usb-etc'一样。这是一个更原始的套接字类型,这可能是你需要的。另外看看'setserial'。更多的技巧在这个相关的职位:http://stackoverflow.com/questions/3918032/bash-serial-io-and-arduino请务必报告适用于您的解决方案,我也想知道: - ) –