在bash脚本中使用“echo”写入串行端口

在bash脚本中使用“echo”写入串行端口,bash,shell,serial-port,Bash,Shell,Serial Port,我正在尝试移植一个脚本来处理matlab中的“写入串行端口”。 我在端口/dev/ttyUSB0上有一个串行设备,我需要向其中写入“\xFE\x6C\x01”以打开一个继电器。 我曾经 在终点站。工作正常,继电器接通。 现在如果我在bash脚本文件中使用它 #!/bin/bash echo -en '\xFE\x6C\x01' > /dev/ttyUSB0 然后运行文件,什么都不会发生。为什么会这样 这是我第一个严肃的bash脚本。感谢您的帮助我认为这是不可能的,因为用一个简单的回显,就

我正在尝试移植一个脚本来处理matlab中的“写入串行端口”。 我在端口/dev/ttyUSB0上有一个串行设备,我需要向其中写入“\xFE\x6C\x01”以打开一个继电器。 我曾经

在终点站。工作正常,继电器接通。 现在如果我在bash脚本文件中使用它

#!/bin/bash
echo -en '\xFE\x6C\x01' > /dev/ttyUSB0
然后运行文件,什么都不会发生。为什么会这样


这是我第一个严肃的bash脚本。感谢您的帮助

我认为这是不可能的,因为用一个简单的回显,就不可能设置串行端口的速度。

我认为这是不可能的,因为用一个简单的回显,就不可能设置串行端口的速度。

什么意思?运行bash-xscript.sh是否会显示回音发生?你是以一个用户的身份运行这个脚本,并且可以写入那个设备吗?这就是你的bash脚本文件的全部吗?好吧,我现在看起来像个白痴。我用sh script.sh运行脚本。对于sh-x script.sh,后者显示了回声的发生,但串行中继仍然没有打开。如果我运行bash-xscript.sh,继电器将打开。有什么区别?非常感谢,为了claritysh的内置echo不支持-e选项,我从bash脚本中删除了所有其他内容。也许这就解释了为什么在使用sh执行脚本时无法得到想要的结果。对于sh,您可以使用外部echo命令和/bin/echo。@chinn sh通常是dash,而不是bash。而且,正如上面的评论所指出的,bash中的echo是一个内置的,因此结果不一定是可移植的。这就是为什么要使用的原因之一。printf也是bash中的一个内置组件,但除了在各种扩展情况下,它的可移植性要高得多。什么是什么意思?运行bash-xscript.sh是否会显示回音发生?你是以一个用户的身份运行这个脚本,并且可以写入那个设备吗?这就是你的bash脚本文件的全部吗?好吧,我现在看起来像个白痴。我用sh script.sh运行脚本。对于sh-x script.sh,后者显示了回声的发生,但串行中继仍然没有打开。如果我运行bash-xscript.sh,继电器将打开。有什么区别?非常感谢,为了claritysh的内置echo不支持-e选项,我从bash脚本中删除了所有其他内容。也许这就解释了为什么在使用sh执行脚本时无法得到想要的结果。对于sh,您可以使用外部echo命令和/bin/echo。@chinn sh通常是dash,而不是bash。而且,正如上面的评论所指出的,bash中的echo是一个内置的,因此结果不一定是可移植的。这就是为什么要使用的原因之一。printf也是bash中的内置元素,但是,除了在各种扩展情况下,它是否更具可移植性?您可以分享如何设置串行端口的速度?@Kyle Hotchkiss,例如,使用perl,使用Device::SerialPort,您可以使用:my$s=new设置端口速度设备::SerialPort/dev/ttySXXXX$s->波特率9600$s->写世界;您可以分享如何设置串行端口的速度吗?@Kyle Hotchkiss,例如,使用perl,使用Device::SerialPort,您可以使用以下命令设置端口速度:my$s=new Device::SerialPort/dev/ttySXXXX$s->波特率9600$s->写世界;
#!/bin/bash
echo -en '\xFE\x6C\x01' > /dev/ttyUSB0