柯密特等待时间不够长

时间:2019-01-10 12:19:53

标签: serial-port pyserial kermit

我正在编写一个kermit script来在运行custom kernel的IMX板上启动一个小精灵,并且尝试使用以下脚本捕获由小精灵编写的字符串:

set input echo on
lineout tests_domains/usb/hid/build/test  # send elf name to the board's shell
minput 40 "<--- PNC TEST STATUS: PASS" "<--- PNC TEST STATUS: INCONCLUSIVE" "<--- PNC TEST STATUS: FAIL" "<--- PNC TEST STATUS: NOTRUN" "<--- PNC TEST STATUS: TIMEOUT"
switch \v(minput) {
  :1, echo "TEST PASS", exit 0
  :2, echo "TEST INCONCLUSIVE", exit 1
  :3, echo "TEST FAIL", exit 2
  :4, echo "TEST NOTRUN", exit 3
  :5, echo "TEST TIMEOUT", exit 4
  :default, echo "entering default case", echo \v(minput), exit 255
}

但是minput在收到<--- PNC TESTS STATUS字符串之一之前和40秒之前返回。发射精灵后约5〜6秒返回。

木板在其uart上的完整输出如下:https://pastebin.com/vsps5ZQ1正确以<--- PNC TEST STATUS: PASS结尾

使用上述脚本捕获输出时,其终止如下:https://pastebin.com/wFSDdn5s输出显示,在捕获字符串“ 0”之后,将执行开关的默认情况。它总是在格式为[ 6.099262][usbd:imx ] prime_endpoint: IN endpoint 1 (3)的字符串(第二个粘贴中的董事会写的最后一行)之后返回。我不明白为什么会发生后者。

如果让kermit执行我在做什么,请向我提出建议。 kermit的在线文档很少。

最后说明:ny kermit启动脚本(~/.kermrc)如下:

set line /dev/ttyUSB0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5

1 个答案:

答案 0 :(得分:1)

\v(minput)扩展为接收到的字符串的 index ,索引从零开始。 这意味着您应该写

minput 40 "<--- PNC TEST STATUS: PASS" "<--- PNC TEST STATUS: INCONCLUSIVE" "<--- PNC TEST STATUS: FAIL" "<--- PNC TEST STATUS: NOTRUN" "<--- PNC TEST STATUS: TIMEOUT"
switch \v(minput) {
  :0, echo "TEST PASS", exit 0
  :1, echo "TEST INCONCLUSIVE", exit 1
  :2, echo "TEST FAIL", exit 2
  :3, echo "TEST NOTRUN", exit 3
  :4, echo "TEST TIMEOUT", exit 4
  :default, echo "entering default case", echo \v(minput), exit 255
}

您的代码发生的情况是,在收到<--- PNC TEST STATUS: PASS时,minput退出,且\v(minput)设置为0,而switch仅匹配默认值。输出中的0不是接收到的字符串,而是它给minput index