2013-03-29 128 views
0

我试图让扫描仪将图像文件传输到我的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的一些基本功能。

+0

发布的评论,因为它最有可能不是问题:尝试使用'回声-n'或'printf'打印您的字符串没有额外的换行符是'echo'单独将产生。 – chepner

+0

好的,所以经过一些更多的搞乱之后,我可以得到一些工作,但不是使用\ cM \ cJ我发送\ r \ n。我可以得到LED灯等等。现在我只需要能够可靠地从中获取数据,我一直在做'cat/dev/tty.usb-etc'这类作品,但似乎有一个时间问题,因为我只会不时地得到完整的输出,通常我会得到件和零件。 –

+0

您的终端可能会缓冲输入/输出。你的USB设备在'/ dev'中有'cu'变种吗?就像'/ dev/cu.usb-etc'一样。这是一个更原始的套接字类型,这可能是你需要的。另外看看'setserial'。更多的技巧在这个相关的职位:http://stackoverflow.com/questions/3918032/bash-serial-io-and-arduino请务必报告适用于您的解决方案,我也想知道: - ) –

回答

0

另一种选择是试图通过Mac上的虚拟机安装Windows让它下虚拟机(VirtualBox的,融合,Parallels的,等等)工作。

最麻烦的解决方案,因为你不得不重新启动所有的时间,双启动你的Mac进入Windows。

最后,我在我的iPhone应用程序从简单地使用相机手机拍摄前和支票背面我的银行机构,他们会接受这种方式。这可能是一个选项。

+0

不幸的是,这不是一个选项,这是一个非常小的设备,客户可以直接插入他们的机器读取支票。我们已经可以支持使用Windows机器的客户,但目前Mac用户还没有选择。该设备只有一个串行端口,所以这几乎是任何人都可以从中获取图像的唯一方式。 –

+0

查看我编辑的内容,正如您发布的内容一样。也许这将起作用。 –

+0

我很感谢你的帮助,但我相当肯定没有猴子生意在幕后摇晃。我已经能够使用我的Mac上的“串行工具”实用程序的一些基本命令,我基本上只是试图在bash shell中重现我的成功。 –

相关问题