DEBUG


語法

            DEBUG Item {, Item}

 

操作

            DEBUG指令讓BASIC Commander跟使用者藉由顯示訊息、控制碼或數值在innoBASIC Workshop的終端機視窗中作溝通。

  • Item 用來顯示在終端機視窗上的訊息控制碼或變數。如果超過一個可以用冒號分開。

 

說明

            有時意思需要BASIC Commander跟使用者去做溝通對話,方法是藉由在BASIC工作室的終端機視窗上對程式下DEBUG指令。程式除錯是在應用程式發展中的基礎部分,因為很少程式可以在第一次就做對的。因此在程式中加入DEBUG指令可以讓你了解程式執行到的位置以及它的變數內容。例如:

 

DEBUG "This is the wrong path, and the variable I is ", i

 

            除錯指令可以放置在例外的地方,當分支執行時會顯示相關的變數值i幫助錯誤的診斷。

 

控制碼

            除了除錯外,DEBUG也是很有用的互動人機介面。為了提供更符合使用者使用的控制台顯示,我們另外提供了控制碼。這些特殊的控制碼摘要在下表:

 

函數

敘述

CLS

清除螢幕

CR

歸位(換行)

TAB

放置一個tab

CSRL

游標左移

CSRR

游標右移

CSRU

游標往上

CSRD

游標往下

BKSP

游標強制返回

CLREOL

清除從游標到行尾

CLREOS

清除從游標到螢幕結尾

CSRXY (x,y)

將游標移到行 x y

CSRX (x)

將游標移到行x

CSRY (y)

將游標移到列y

BELL(n)

產生一個電腦嗶聲或視窗內建的音效

 

資料格式化程式

            數字資料可以各種形式顯示在終端機視窗中。如果沒有特別定義,數值將會以小數形式顯示。以上面的例子看來,這並不會造成任何問題而值可以正確的顯示。不過如果要顯示成二進位或十六進位格式,則要用符號”%”加上想要的格式。下表包含了所有的用法:

 

格式化程式符號

敘述

?

如果使用“?”格式化程式,額外的字串symbol = ” 會加在顯示值的前面,並於顯示值後換行。symbol 代表一個使用者定義的變數名稱。

%DEC{n{L|R}}

資料以帶正負值小數格式顯示,額外的n代表行寬。如果n值小於實際的數字,寬度會自動延展到符合實際數字寬度。額外的值LR代表左右對齊。如果刪除LR,預設為靠左對齊。在顯示時前導的數字0會被刪除。

%BIN{n{L|R}}

資料以不帶正負值的二進位顯示,額外的n代表行寬。如果n值小於實際的數字,8位元變數是816位元變數是16,寬度會自動延展到符合實際數字寬度。額外的值LR代表左右對齊。如果刪除LR,預設為靠左對齊。在816位元的數字資料格式中前導的數字0會顯示。

%HEX{n{L|R}}

資料以不帶正負值的十六進位顯示,額外的n代表行寬。如果n值小於實際的數字,8位元變數是216位元變數是4,寬度會自動延展到符合實際數字寬度。額外的值LR代表左右對齊。如果刪除LR,預設為靠左對齊。在24位數的數字資料格式中前導的數字0會顯示。

%CHR

資料以ASCII字元格式顯示

%FLOAT{n.m{L|R}}

以科學格式顯示浮點資料,額外的n代表行寬額外的m代表15位的有效位數。如果n值小於實際的數字,8位元變數是216位元變數是4,寬度會自動延展到符合實際數字寬度。額外的值LR代表左右對齊。如果刪除LR,預設為靠左對齊。

%REAL{n.m{L|R}}

%FLOAT{n.m{L|R}}上面所提的一樣,除了浮點數是實數格式。

%REP{n}

重複常數或變數n次。如果沒有設定額外的n值,預設值為1

 

            上面的例子的DEBUG指令可以修改為將變數顯示成如下的二進位格式:

      

   Debug "The value for i is ", %BIN i

 

            注意:DEBUG指令需要一些時間藉由USB介面在BASIC CommanderPC間作溝通。有時間考量的應用程式,要預防在程式關鍵路徑中使用DEBUG指令。在開發階段使用DEBUG指令除錯,時脈可能會跟DEBUG指令移除做正式操作時有所不同。

 

範例

Sub Main()
   
Dim PushBtn As Byte=0   ' Push button on P0
    Dim Cycles As Word=0    ' Counted cycles
    Dim m As Byte=0
 
   
Do
       
Debug CLS,_
       
"How fast can you press within 5 seconds?", CR
       
Pause 1000
       
Debug "Ready!",CR
       
Pause 1000
       
Debug "Set!",CR
       
Pause 2000
       
Debug "Go!", CR  
 
       
COUNT PushBtn, 5000, Cycles
 
       
Debug CR, "Your score is ", Cycles, CR, CR
       
Pause 2000
       
Debug "Press button to try again!"
 
       
Do
            m=
in(Pushbtn)
       
Loop Until m=0
   
Loop
End Sub