使用expect进行双向通信

时间:2011-08-27 14:22:17

标签: linux expect

我正在编写一个expect脚本,以便在/dev/ttyUSB0上的arduino和本地telnet端口6789上的xine实例之间自动进行通信。如果在arduino上检测到按键,它将会通过它的串行输出button 01 pressedbutton 2 pressed等发送一行。现在,根据按下的按钮,我想告诉xine开始播放某些电影。

到目前为止,两个通信都是自己工作的,但我需要用telnet消息对arduino消息做出反应,就像这个例子一样:

User presses key 1.
arduino sends serial line "button 01 pressed"
expect sees this string on /dev/ttyUSB0 and sends "playlist delete all; mrl add movie01.mp4" to xine.
xine then plays this movie while I am asking it for it's status every second.
Once the movie is finished playing, I tell xine to start the "loop" movie and also the arduino to set every output to the idle state.

所以,基本上我要求同时进行两次spawn通信(一个串行,一个telnet),expect不同的字符串,并以编程方式对它们做出反应(而最后一部分,以编程方式作出反应,已经完成了。)

感谢您的帮助,

Christian.

1 个答案:

答案 0 :(得分:0)

您可以尝试使用expect with -i来指定要与之通信的spawn id,并设置一个小的超时值,然后您可以在两个进程之间进行预期。