加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

minicom & runscript 介绍(1)

(2009-10-14 07:30:14)
标签:

minicom

runscript

自动化

杂谈

分类: script

转载时请表明原文出处(http://blog.sina.com.cn/wyw1976)及作者邮箱(wyw1976@gmail.com)

 


    Tera Term通过TTL 宏语言 (Tera Term Language)为模拟终端用户提供了丰富的编程接口,应用这些接口可以完成很多自动化方面的工作。但是Tera Term当前只有Windows版本,如果在Linux上也有类似的需求,怎么办呢?

    在Linux上的模拟终端工具minicom也支持自己的脚本语言,即runscript。确切的说runscript只是minicom内建的一个脚本解析器,即只能通过minicom调用,就像TTL脚本只有在tera term中有效一样。

 

    有关minicom 和 runscript的详细帮助, 可以“man minicom”或“man runscript”查看帮助信息。


软件安装
    只要在Linux PC 上安装minicom即可。

硬件连接
    将Linux PC 与开发板通过串口连接
编辑脚本
    可以使用任何顺手的编辑工具编辑脚本, 如VIM, notepad等。

运行脚本
    第一方式方式:直接在命令行中指定脚本

     minicom -S your_script_file
    注意这里的参数是大S,不是小s(小s表示进入minicom的设置模式)。当然minicom后仍然可以跟其他的参数
   

     第二种方式:

    (1)运行minicom (不指定脚本)
    (2)在minicom成功启动后,按功能键Ctl+A, 然后按G, 出现如下的窗口,在“Name of script”中设置脚本的文件名:

               minicom <wbr>& <wbr>runscript <wbr>介绍(1)

      需要指定绝对路径,否则将在启动minicom时所在的路径中寻找。如果没有找到指定的脚本,将打印出“runscript: couldn't open your_script_file”

  
下面就结合例子看看runscript脚本的语法和函数。

 

场景1:
    启动uboot后,出现“Hit any key to stop autoboot”,如果10秒内用户按任何键,则进入uboot命令行模式,否则进行自动启动模式。
    现在我们用runsctip脚本模拟用户键盘输入,进入uboot的命令行模式。程序代码如下:

 

         minicom <wbr>& <wbr>runscript <wbr>介绍(1)

 

 

 

  有关上面的代码,说明如下:
(1)expect是runscript中最重要的一个命令,因为几乎所有的自动化工作都依赖于它。 它的语法如下:

       expect {
                pattern_1  [statement_1]
                pattern_2  [statement_2]
                .....
                pattern_n  [statement_n]
               [timeout <value> [statement_t] ] 
       }

 

    其中 pattern_*, 是字符串, 而statement_*是某个runscript支持的命令, minicom会将接受到的每个字符串依次与每个pattern_*比较,如果匹配,则执行之后的命令,一般这个命令就是break或goto。timeout也是runscript的一个命令,它指定了等待时间,如果等待时间到,则这行 timeout后的命令(statement_t), 然后从expect中退出。注意,
每个pattern后面最多只能跟一条命令。
timeout后也只能跟一条命令,多余的不会被执行
expect 退出只有两种情况:1)timeout 2)用户主动调用break或goto
expect 中除了上面的pattern_*和timeout,其他的语句都是无效的
  
   在本例中,等待字符串"autoboot",如果等到,则从expect中退出,如果在600秒钟内没有等到,则跳转到TIMOUT_EXIT

(2) send 是重要命令,作用是发送一个字符串并跟随一个回车符。本例中,发送一个空的字符串,跟随的回车符就模拟了用户的键盘输出,从而进入了uboot命令行模式

(3)runscript的标记行用冒号表示,如例子中的TIMEOUT_EXIT:

(4) exit 表示从脚本中退出 (而不是从minicom中退出)

(5) 在脚本执行期间,minicom的命令键(Ctrl+A)及其各功能键(a,..., z)是禁止的。

(6)runscript的语法要求很严格,例如例子中的expect 后面的"{", 如果写成下面的格式,则expect语句无效,

             minicom <wbr>& <wbr>runscript <wbr>介绍(1)

 

 

(7)runscript纠错能力不强,有时语句错误不会有任何提示,因此需要严格的按照语法写代码。

 

 

 

 

 

   
 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有