2015-02-09 97 views
0

我有一个脚本的问题。我有一个电压表连接到串行USB设备(ttyUSB1)。 智能电表需要一个初始序列,紧接着是第二个命令以提供所有信息。这工作正常。例如,1.8.0 * 00(000898.46)出现在我感兴趣的行中。括号中的数字是我想要的kWh数。如果我打开第二个终端并执行一个猫/ dev/ttyUSB1,它可以正常工作,并且我可以看到信息进入。4到5秒后,我想要的线路进入。但脚本无法正常工作。如果我在一个终端上启动脚本,它会一直等待。 Grep没有完成。如果我在第二个终端启动它,则第一个终端完成。或者只是在另一个终端中的grep 1.8.0/dev/ttyUSB1 -m1工作,但不在脚本中。 我尝试了不同的方法阅读,所以没有工作。说实话我不明白很多的脚本,并总是成功莫名其妙,但这里没有任何事情帮助:(Grep不能在脚本中工作,但在控制台上

请帮忙,谢谢 阿恩

这里的脚本:!

#! /bin/bash 
echo start 
echo $'\x2f\x3f\x21\x0d' > /dev/ttyUSB1 
sleep 1 
echo ask 
echo $'\x06\x30\x30\x30\x0d' > /dev/ttyUSB1 
echo wait 
grep 1.8.0 /dev/ttyUSB1 -m1 
echo end  

回答

0

你可以尝试使用电压表的输出和grep从该文件创建一个文件:

#! /bin/bash 

dev=/dev/ttyUSB1 
file=/tmp/testfile 

(tail -f $dev | tee $file) & # let's continuously copy in background 
echo start 
echo $'\x2f\x3f\x21\x0d' > $dev 
sleep 1 
echo ask 
echo $'\x06\x30\x30\x30\x0d' > $dev 
echo wait 
grep 1.8.0 $file # lets get the info from the file instead 
echo end 
sleep 1 
exit 
+0

感谢您的回答它创建/ tmp/testfile但它是空的如果我打开第二个终端与cat/dev/USBtty1它显示数据正在进入,我认为脚本不知何故无法控制来自ttyUSB1的输入数据。也许我必须制作两个脚本,一个让电表发送数据,另一个尝试获取我的电话号码。其实我只想要一个能让我回来的数据。想知道为什么它不工作:( – Arne 2015-02-09 18:28:22

+0

是/ dev/USBtty1还是/ dev/ttyUSB1? – Tiago 2015-02-09 18:29:50

+0

/dev/ttyUSB1抱歉没有其他方法 – Arne 2015-02-09 18:38:37

相关问题