0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么要學(xué)習(xí)TTL腳本

科技綠洲 ? 來(lái)源:黑貓學(xué)長(zhǎng) ? 作者:黑貓學(xué)長(zhǎng) ? 2023-11-24 16:00 ? 次閱讀

2.1 TTL背景

所謂 TTL, 其實(shí)是 Tera Term Language 的縮寫(xiě), 也就是 Tera Term 的專用腳本語(yǔ)言. 那么 Tera Term(Wiki)是個(gè)什么東西呢? 其實(shí)就是個(gè)終端(Terminal), 也就是說(shuō)跟什么 XSehll, SecureCRT, Putty 之類(lèi)的東西差不多一個(gè)意思.

Tera Term 是日本人搞出來(lái)的東西. 其實(shí)僅僅就這個(gè) Tera Term 來(lái)說(shuō)我覺(jué)得一點(diǎn)并不好用, 完全比不上 Xshell. 不過(guò)關(guān)鍵就在于它有它自己的腳本語(yǔ)言 Tera Term Language 啊. 有了自己的腳本語(yǔ)言加持以后, 這個(gè)終端瞬間化身自動(dòng)化利器, 可以提前設(shè)計(jì)好各種操作, 剩下的就讓終端自動(dòng)運(yùn)行好了.

Tera Term 這個(gè)東西本身我就不多介紹了, 只要到 Tera Term Open Source Project 下載安裝即可. 寫(xiě)好的腳本雙擊以后是會(huì)自動(dòng)調(diào)用這個(gè)工具的. 接下來(lái)的內(nèi)容將會(huì)介紹 TTL 的語(yǔ)法和使用.

TTL腳本是為tera term這個(gè)軟件服務(wù)的。tera term加載TTL腳本后,會(huì)自動(dòng)運(yùn)行腳本,然后執(zhí)行腳本里的命令。

2.2 為什么要學(xué)習(xí)TTL腳本

對(duì)于嵌入式開(kāi)發(fā)人員來(lái)說(shuō),串口工具想必大家再熟悉不過(guò)。通常使用串口工具給開(kāi)發(fā)板下發(fā)命令、接收l(shuí)og,亦或是連接遠(yuǎn)程終端,而這都需要我們手動(dòng)控制。試想,下發(fā)一條命令可以手動(dòng),那下發(fā)1000條命令呢?

嵌入式開(kāi)發(fā)中,有這么一款廣泛使用的串口工具——Tera Term,其內(nèi)置TTL腳本語(yǔ)言,該語(yǔ)言語(yǔ)法豐富但又簡(jiǎn)單易學(xué)。通過(guò)TTL腳本,即可實(shí)現(xiàn)串口工具自動(dòng)化測(cè)試。當(dāng)然,其功能遠(yuǎn)不止于此,但凡會(huì)用到串口工具的地方,都可以通過(guò)TTL腳本來(lái)滿足自己自動(dòng)化需求。例如自動(dòng)連接遠(yuǎn)程終端、自動(dòng)執(zhí)行遠(yuǎn)程終端腳本、分析串口工具中顯示的log、統(tǒng)計(jì)測(cè)試項(xiàng)是否成功等等。

2小時(shí)學(xué)會(huì)一個(gè)串口自動(dòng)化腳本語(yǔ)言,半天即可熟練掌握,讓你更快速更高效地完成嵌入式項(xiàng)目開(kāi)發(fā)。最少的時(shí)間掌握一個(gè)終生受益的技能,這會(huì)讓你變得比大多數(shù)嵌入式工程師更厲害。

Part3數(shù)據(jù)類(lèi)型

TTL語(yǔ)言(TeraTerm Language)總共只有四種數(shù)據(jù)類(lèi)型,分別為Integer、Character string、Integer Array、String Array。

Part4注釋

; 分號(hào)后面是注釋

; 分號(hào)開(kāi)始的行是注釋行

var = 0 ; 這里分號(hào)右邊開(kāi)始也算注釋

Part5 字面量

  • 支持正數(shù)負(fù)數(shù), 不支持浮點(diǎn)數(shù)
    123
    -11
  • $開(kāi)始的數(shù)字是16進(jìn)制
    $3a
    $10F
  • 字符串’Hello, world’“I can’t do that”“漢字也支持”
  • #開(kāi)頭的是ASCII碼值字符, 也就是#后的數(shù)字查ASCII碼表對(duì)應(yīng)的是哪個(gè)字符就是哪個(gè)字符
    #65 ; 文字 “A”
    #$41 ; 文字 “A”
    #13 ; CR 文字
  • 字符串可以直接拼接
    ‘cat readme.txt’#13#10 ; 相當(dāng)于 “cat readme.txtrn”
    ‘a(chǎn)bc’#$0d#$0a’def’#$0d#$0a’ghi’

Part6 變量

變量包括用戶自定義變量和系統(tǒng)變量?jī)刹糠? 下面將分別介紹一下。

6.1 自定義變量

定義變量無(wú)需指定類(lèi)型, 直接使用 變量名 = 值 的語(yǔ)法即可.

注意:賦值時(shí)候=右邊的“10”或’10’表示字符串,10才表示數(shù)字,例如cycle =“10”和cycle = 10是不一樣的,一個(gè)是字符串,一個(gè)是數(shù)字。

  • 定義普通變量
    _var = ‘valid’ ; 下劃線開(kāi)始的變量名合法。
    var = “valid” ; 使用雙引號(hào)也可以
    var_1 = 1 ; 這是一個(gè)數(shù)字
    var_2 = ‘str’ ; 這是一個(gè)字符串
  • 定義數(shù)組及賦值
    intdim a 3 ; int數(shù)組
    a[0] = 1
    a[1] = 2
    a[2] = 3
    strdim s 3 ; str數(shù)組
    s[0] = ‘1’
    s[1] = ‘2’
    s[2] = ‘3’

6.2 系統(tǒng)變量

TTL 預(yù)置使用了一些系統(tǒng)變量, 寫(xiě)腳本的時(shí)候注意不要占用。 閱讀腳本的時(shí)候要注意這些是系統(tǒng)變量, 是作為系統(tǒng)函數(shù)返回值而存在的。

常見(jiàn):
inputstr ; waitln等函數(shù)的接收到的值存放于此
matchstr ; strmatch等函數(shù)的值存放于此
param1 ; 調(diào)用腳本時(shí)候傳入的第一個(gè)參數(shù)
params ; 調(diào)用腳本時(shí)候傳入的所有參數(shù)的數(shù)組
result ; waitln等函數(shù)執(zhí)行的結(jié)果code存放于此
timeout ; 超時(shí)時(shí)間

具體請(qǐng)查看 Tera Term 的幫助文件:https://ttssh2.osdn.jp/manual/4/en/macro/syntax/variables.html

如何查看系統(tǒng)變量?

TTl腳本中貌似沒(méi)有printf之類(lèi)的函數(shù),可以直接輸出某個(gè)變量的值到底是多少。那如果寫(xiě)代碼過(guò)程中想要看看其中某個(gè)變量的值是多少該怎么辦呢?

其實(shí)可以轉(zhuǎn)變思路,將想要打印的變量直接寫(xiě)入文件中就可以了。圖片

Part7流程控制

TTL 也支持基本的流程控制操作;

7.1 do, loop

; 循環(huán)10次
i = 10
dowhile i > 0
  i = i - 1
loop

7.2 while, endwhile

; 循環(huán)10次
i = 10
while i > 0
  i = i - 1
endwhile

7.3 until, enduntil

; 循環(huán)10次
i = 1
until i > 10
  i = i + 1
enduntil

7.4 for, next

; 循環(huán)10for i 110
  sendln 'abc'
next

; 循環(huán)5for i 51
  sendln 'abc'
next

7.5 if, then, elseif, else, endif

if a = 1 then
  b = 1
  c = 2
  d = 3
endif

if i < 0 then
  i = 0
else
  i = i + 1
endif

if i = 1 then
  c = '1'
elseif i = 2 then
  c = '2'
elseif i = 3 then
  c = '3'
else
  c = '?'
endif

7.6 break, continue

  • break
while1
  recvln
  strcompare inputstr "OK"
  if result = 0 then
    break
  else
    sendln "abc..."
  endif
endwhile
  • continue

a = 0
b = 0
while a < 5
  a = a + 1
  if a > 2 then
    continue
  endif
  b = b + 1
endwhile

sprintf2 var "a=%d b=%d" a b
dispstr var; a=5 b=2

Part8子過(guò)程

TTL 可以定義一些子過(guò)程, 方便重復(fù)調(diào)用. 但是沒(méi)有返回值, 不能稱之為函數(shù)。

定義子過(guò)程首先要了解 label 標(biāo)簽

; 冒號(hào)開(kāi)始的是標(biāo)簽
: I_am_a_label  	; 這就是一個(gè)標(biāo)簽

可以這樣定義和調(diào)用子過(guò)程:

messagebox "I'm in main.""test"
; 跳轉(zhuǎn)到":sub"
call sub
  messagebox "Now I'm in main""test"
end

; 子過(guò)程具體定義
:sub
  messagebox "Now I'm in sub""test"
  return  ; 返回到主體

子過(guò)程以return返回。標(biāo)簽后面沒(méi)有return,說(shuō)明不是子過(guò)程,只是標(biāo)簽。標(biāo)簽也建議用end結(jié)束。

Part9常見(jiàn)用法

下面介紹一些 TTL 腳本中的常見(jiàn)寫(xiě)法。

9.1 連接服務(wù)器

使用 connect 命令, 而且有不少其他命令必須在連接服務(wù)器后才能使用:
connect ‘hostname:22 /ssh /2 /auth=password /user=username /passwd=password’

9.2 執(zhí)行給定命令

sendln date ; 向遠(yuǎn)端服務(wù)器上發(fā)送 date 命令以及 CR, 即執(zhí)行該命令

9.3 等待特定字符

wait ‘**’ ‘#’ ; 等待遠(yuǎn)端服務(wù)器屏幕上出現(xiàn) ** 或者 #. 未出現(xiàn)則一直等待. 該等待超時(shí)時(shí)間由系統(tǒng)變量 timeout 控制, 若為 0 則無(wú)超時(shí)時(shí)間, 即無(wú)限期等待

9.4 拼接字符串

使用 sprintf2 直接定義變量. 其中 %s 是占位符, 被字符串后面跟的變量替換.
hostname = ‘your_hostname’
username = ‘your_username’
password = ‘your_password’
sprintf2 server ‘%s:22 /ssh /2 /auth=password /user=%s /passwd=%s’ hostname username password

直接聲明變量并在后面添加字符串.
hostname = ‘your_hostname’
msg = hostname
strconcat msg ‘:22 /ssh /2 /auth=password /user=’
strconcat msg username
strconcat msg ’ /passwd=’
strconcat msg password

9.5 保存服務(wù)器操作日志

getdir logdir ; 獲取當(dāng)前腳本所在路徑
changedir logdir ; 調(diào)整日志文件夾路徑到當(dāng)前路徑
logfile = “operation.log” ; 日志文件名
logopen logfile 0 0 1 ; 打開(kāi)日志文件用于寫(xiě)入
logwrite “first line in log file”#13#10 ; 向日志文件中寫(xiě)入"first line in log filern", 其中 #13#10 的意思就是 CRLF

Part10include包含其他文件

include ‘1.ttl’
即:將1.ttl里面的內(nèi)容包含到本TTL腳本中。

Part11常用命令

參考鏈接:

  • tera term的ttl腳本使用方法:https://blog.csdn.net/f2157120/article/details/99822653
  • 官方TTL命令參考:https://ttssh2.osdn.jp/manual/4/en/macro/command/index.html

常用命令直接參考官方命令介紹即可,非常清晰明了,此處就不一一列出。只列出部分易錯(cuò)/重要的命令。

11.1 fileopen

如果文件不存在,則創(chuàng)建該文件并打開(kāi)。

11.2 changedir

注意和setdir的區(qū)別,兩個(gè)命令都是改變路徑,那么到底有什么區(qū)別呢?

chagedir改變的是Tera Term的路徑。setdir改變的是MACRO的路徑。

那這時(shí)候又有問(wèn)題了,什么是Tera Term的路徑,什么是MACRO路徑?

File names specified for the communication commands (e.g. kmtsend) are based on the current directory for Tera Term.

File names specified for other commands (e.g. fileopen) are based on the current directory for MACRO.

可能看到這里還是不太清楚Tera Term的路徑和MACRO的路徑區(qū)別,也不要擔(dān)心,在有的命令中,會(huì)用到路徑的時(shí)候,會(huì)講明是哪個(gè)路徑,如下:

圖片

11.3 filereadln

格式:filereadln

注意環(huán)境變量result的值:

如果當(dāng)讀取一行的時(shí)候發(fā)現(xiàn)指針已經(jīng)到達(dá)文件末尾,result被設(shè)置為1。而不是讀取了一行后發(fā)現(xiàn)在指針到達(dá)文件末尾,就返回1,切記??!

如果文件中僅僅包含一個(gè)新行,那么strvar的值是空的,result被置為0.

11.4 Strtrim

格式:strtrim

功能:刪除strval字符串中開(kāi)頭和結(jié)尾出現(xiàn)的trimchars字符串

注意:

  1. 如果在strval字符串中間出現(xiàn)的trimchars,不會(huì)被移除,只會(huì)移除中間或者結(jié)尾出現(xiàn)的所有trimchars字符串。
  2. 如果strval字符串開(kāi)頭或者結(jié)尾出現(xiàn)了trimchars字符串中一部分的字符,也會(huì)被移除。
  3. 如果strval字符串開(kāi)頭或者結(jié)尾連續(xù)出現(xiàn)了幾個(gè)rimchars字符串,則都會(huì)被移除。

例子:

src = “YEE_ONLY YEE_ONLY verify YEE_ONLY test YEE_ONL YEE_ONLY”
strtrim src 'YEE_ONLY ’
messagebox src ‘result’

顯示結(jié)果為:verify YEE_ONLY test

11.5 gettime

例子:

gettime starttime “%Y%m%d-%H%M%S”
%Y%m%d-%H%M%S到底是什么時(shí)間格式呢?

參考鏈接即可知道:https://baike.baidu.com/item/strftime/9569073?fr=aladdin

Part12如何運(yùn)行ttl腳本

有兩種方式運(yùn)行ttl腳本:

  • ttermpro軟件加載TTL腳本圖片

通過(guò) Mcro 選擇自己需要加載的ttl腳本即可。

  • TTPMACRO.EXE軟件加載ttl腳本

在安裝tera term軟件時(shí)候,安裝路徑不僅有ttermpro.exe軟件,還有ttpmacro.exe軟件,打開(kāi)ttpmacro.exe軟件加載ttl腳本即可。圖片

Part13ttermpro軟件使用方法

13.1 中文顯示亂碼

如圖所示,ttermpro軟件連接虛擬機(jī),顯示中文有亂碼:圖片如下設(shè)置即可:

圖片圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 自動(dòng)化測(cè)試

    關(guān)注

    0

    文章

    201

    瀏覽量

    26875
  • TTL
    TTL
    +關(guān)注

    關(guān)注

    7

    文章

    496

    瀏覽量

    69997
  • 終端
    +關(guān)注

    關(guān)注

    1

    文章

    1102

    瀏覽量

    29776
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    384

    瀏覽量

    14794
  • 串口工具
    +關(guān)注

    關(guān)注

    1

    文章

    9

    瀏覽量

    7845
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【RT-Thread學(xué)習(xí)筆記】結(jié)合案例學(xué)習(xí)調(diào)試shell腳本

    【shell編程掃盲系列】結(jié)合真實(shí)案例學(xué)習(xí)如何調(diào)試shell腳本
    的頭像 發(fā)表于 07-29 03:32 ?2032次閱讀
    【RT-Thread<b class='flag-5'>學(xué)習(xí)</b>筆記】結(jié)合案例<b class='flag-5'>學(xué)習(xí)</b>調(diào)試shell<b class='flag-5'>腳本</b>

    shell腳本編程想學(xué)習(xí)的可以看看

    一本關(guān)于shell腳本編程的書(shū)籍,想學(xué)習(xí)的可以看看
    發(fā)表于 10-15 11:06

    Linux系統(tǒng)學(xué)習(xí)之路---腳本體會(huì)

    。方便別的使用與維護(hù)。就拿腳本的開(kāi)頭幾行來(lái)說(shuō)。做好功能,版本的信息,作者還有溝通的方式, 最重要的是,一些比較特殊的環(huán)境變量。 要說(shuō)明。每個(gè)人的電腦環(huán)境都不一樣。 這一點(diǎn)十分重。做好合理的注釋說(shuō)明信息
    發(fā)表于 01-28 20:51

    Perl 腳本語(yǔ)言學(xué)習(xí)是什么

    Perl 腳本語(yǔ)言學(xué)習(xí)是什么
    發(fā)表于 03-12 06:13

    TTL/ECL,TTL/ECL是什么意思

    TTL/ECL,TTL/ECL是什么意思 TTL電路發(fā)展簡(jiǎn)史: TTL電路是晶體管-晶體管邏輯電路的英文縮寫(xiě)(Transister-Transister-Logic),是數(shù)字集成
    發(fā)表于 03-08 11:12 ?9403次閱讀

    什么是腳本

    什么是腳本,腳本是什么意思,腳本錯(cuò)誤是什么意思電子發(fā)燒友深入為大家講解了腳本相關(guān)知識(shí)
    發(fā)表于 12-07 10:36 ?2790次閱讀

    scripts【各類(lèi)編程腳本

    scripts【各類(lèi)編程腳本】,好東西,喜歡的朋友可以下載來(lái)學(xué)習(xí)
    發(fā)表于 02-18 16:29 ?0次下載

    TTL與COMS的區(qū)別

    電子專業(yè)單片機(jī)相關(guān)知識(shí)學(xué)習(xí)教材資料——TTL與COMS
    發(fā)表于 08-22 16:18 ?0次下載

    Linux Bash腳本進(jìn)階教程學(xué)習(xí)

    你可以在腳本頭部使用set -o verbose和set -o xtrace來(lái)永久指定-v和-o。當(dāng)在遠(yuǎn)程機(jī)器上執(zhí)行腳本時(shí),這樣做非常有用,用它來(lái)輸出遠(yuǎn)程信息。
    的頭像 發(fā)表于 05-01 17:45 ?3746次閱讀
    Linux Bash<b class='flag-5'>腳本</b>進(jìn)階教程<b class='flag-5'>學(xué)習(xí)</b>

    嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門(mén)免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)技術(shù)的是嵌入式和物聯(lián)網(wǎng)的shell腳本學(xué)習(xí)指南之shell腳本入門(mén)免費(fèi)下載。
    發(fā)表于 09-11 17:15 ?20次下載
    嵌入式和物聯(lián)網(wǎng)的shell<b class='flag-5'>腳本</b><b class='flag-5'>學(xué)習(xí)</b>指南之shell<b class='flag-5'>腳本</b>入門(mén)免費(fèi)下載

    FPGA學(xué)習(xí)面對(duì)什么問(wèn)題

    FPGA學(xué)習(xí)多練習(xí),多仿真,signaltapII是很好的工具,可以看到每個(gè)信號(hào)的真實(shí)值。
    的頭像 發(fā)表于 01-15 16:55 ?1244次閱讀

    什么是腳本?腳本程序學(xué)習(xí)

    腳本中編寫(xiě)VB腳本代碼??梢韵笫褂孟到y(tǒng)函數(shù)一樣使用項(xiàng)目中完成的腳本。創(chuàng)建腳本時(shí),確定其型號(hào)并定義傳送參數(shù)?!癋unction”類(lèi)型的腳本
    的頭像 發(fā)表于 05-11 10:39 ?6644次閱讀
    什么是<b class='flag-5'>腳本</b>?<b class='flag-5'>腳本</b>程序<b class='flag-5'>學(xué)習(xí)</b>

    解析TTL與CMOS的優(yōu)缺點(diǎn)

    TTL邏輯家族使用雙極晶體管來(lái)執(zhí)行邏輯功能,CMOS使用場(chǎng)效應(yīng)晶體管。盡管CMOS比TTL更靈敏,但它的功耗通常小得多。CMOS和TTL并不是真正的可互換的,隨著低功耗CMOS芯片的
    的頭像 發(fā)表于 10-16 11:08 ?1.8w次閱讀

    TTL與CMOS電平的標(biāo)準(zhǔn)與區(qū)別

    TTL器件輸出低電平小于0.8V,高電平大于2.4V。輸入,低于1.2V就認(rèn)為是0,高于2.0就認(rèn)為是1。于是TTL電平的輸入低電平的噪聲容限就只有(0.8-0)/2=0.4V,高
    的頭像 發(fā)表于 08-22 10:10 ?1.2w次閱讀

    TTL電平學(xué)習(xí)筆記

    實(shí)現(xiàn)輸出電平在0/1之間變換,需要三極管的數(shù)量最少只需要一個(gè),而TTL電路使用了4個(gè)三極管,用較多的器件去實(shí)現(xiàn)相同的功能,必定要有性能上的提升,否則這種電路設(shè)計(jì)就是一種浪費(fèi)。對(duì)于TTL電路而言,使用成倍的器件需要換來(lái)的性能包括
    的頭像 發(fā)表于 09-21 17:03 ?859次閱讀
    <b class='flag-5'>TTL</b>電平<b class='flag-5'>學(xué)習(xí)</b>筆記