linux 参数写入脚本,linux-用于从串行通信写入和读取数据的Shell脚本

我正在制作一个简单的Shell脚本,以将数据写入和读取到串行设备.

我在终端上使用这些命令,并且它们正确响应:

写我正在使用:

echo -en '\xAA\x04\xC2' > /dev/ttyUSB0

要阅读我正在使用阅读:

cat -v < /dev/ttyUSB0

但是当我将其包含在shell脚本中时,它没有响应.我需要有关此的帮助.

我也想知道,当我发送写命令时,它应该以十六进制格式给我输出,但是它以这种格式给我输出M-* ^ NM- ^ H

在这方面也需要帮助.

解决方法:

我希望您的cat语句阻止等待文件结束.它将您的输入tty视为标准的终端设备,在这种情况下,它将需要文件结尾字符来终止输入(例如,Control-D),并且可以对输入和输出进行其他处理.您最好熟悉stty命令及其选项(请参见stty man page).尝试执行stty -F / dev / ttyUSB0来查看设置了哪些选项.

读取输入的最简单方法可能是一次读取一个字符.您可以尝试以下脚本.从输入直到输入“ q”,这一次将读取一个字符.

stty -F /dev/ttyUSB0 raw

stty -F /dev/ttyUSB0 -echo

while read -rs -n 1 c && [[ $c != 'q' ]]

do

echo "read " # Replace this with code to handle the characters read

done < /dev/ttyUSB0

如果-F不起作用,请将stdin重定向到该设备.

对于您的输出问题,我认为它正在运行,但是您看到的是显示为字符的字符,而不是十六进制代码.要查看十六进制代码(仅用于验证测试-我认为您不希望将十六进制代码发送到终端),请尝试:

echo -en '\xAA\x04\xC2' | od -tx1

您可能还希望在输出时设置原始模式,以避免驱动程序更改输出字符.

标签:shell,linux

来源: https://codeday.me/bug/20191120/2045751.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值