2013-03-25 129 views
0

我正在爲飛思卡爾MC9S12C32處理器的HC12組件編寫一個課程。我使用PuTTy作爲通過串行(-over-USB)連接到設備的終端。對於這個任務,我們應該使用VT100/ANSI轉義序列將光標移動到任意位置並寫入當前時間,然後將其返回,以便用戶可以輸入並將其輸入回顯。PuTTy是否可以正確使用ANSI/VT100轉義序列?

我正在使用下面的順序保存光標,移動光標並將其返回。然而由於某種原因,PuTTy只是將光標置於左上角並且無法將其返回。

ESC   EQU $1B ; ASCII ESC 
SAVECUR  EQU $37 ; ASCII 7 
RESTCUR  EQU $38 ; ASCII 8 

SaveCursor PSHA 
      LDAA #ESC    ; Use Escape Sequence 
      JSR putchar 
      LDAA #'[' 
      JSR putchar 
      LDAA #SAVECUR   ; To save cursor location 
      JSR putchar 
      PULA 
      RTS 

GotoClkPos PSHA 
      LDAA #ESC    ; Move Cursor 
      JSR putchar 
      LDAA #'[' 
      JSR putchar 
      LDAA #$05    ; To Row 5 
      JSR putchar 
      LDAA #';' 
      JSR putchar 
      LDAA #$05    ; Column 5 
      JSR putchar 
      LDAA #'H' 
      JSR putchar 
      PULA 
      RTS 

RestCursor PSHA 
      LDAA #ESC   ; Use Escape Sequence 
      JSR putchar 
      LDAA #'[' 
      JSR putchar 
      LDAA #RESTCUR  ; To Restore Cursor 
      JSR putchar 
      PULA 
      RTS 

我編碼的轉義序列是否錯誤或者PuTTy沒有按照我的預期處理它們?

回答

1

你的轉義序列是錯誤的。你應該從SaveCursor和RestCursor中刪除'[''(save cursor = ESC +'7',restore = ESC +'8')。 雖然GotoClkPos似乎確定。

PuTTY處理VT100-命令就好了。儘管我無法使用某些命令來工作,例如隱藏光標。

+0

謝謝你。因爲我只使用了白底黑字文本,所以我最終從使用'Save/Restore cursor with attributes'命令切換到'Save/Restore cursor'命令。那些爲我工作。現在我知道了,我可以回去修復它。 – Huckle 2013-04-15 02:28:14

0

膩子沒有沒有處理所有的VT100的權利。它爲除F1/F2/F3之外的所有功能鍵發送垃圾,並且不能正確處理各種其他接口。我還沒有找到一個很好的計劃,其實確實,所以我很高興我有幾個愚蠢的終端踢(但這是多麼愚蠢?)

+1

當我將putty的功能鍵模式切換到「VT100 +」時,我得到了「ESC O P」 - 「ESC O S」,這應該是VT100爲PF1 - PF4發送的內容。 – 2014-08-03 10:20:46

相關問題