一、簡介
超級終端是Windows操作係統自帶的一個通用的串行交互軟件,可以通過這個工具對路由器交換機等進行配置。使用調製解調器、一條零調製解調電纜或以太網連接,再調用此程序能夠連接到其他計算機、Telnet 站點、公告板係統 (BBS)、聯機服務和主機。我們可以用它來調試電路是否可行。 嵌入式開發板基本都有串口,可以通過超級終端與嵌入式係統的串口交互,使超級終端成為嵌入式係統的“顯示器”。
使用:開始→程序→附件→通訊→超級終端(可新建或者使用現有的連接對設備進行配置);
啟動命令:hypertrm.exe。
二、超級終端的原理
超級終端的原理並不複雜,它是將用戶的輸入隨時發向串口(采用TCP協議時是發往網口,這裏隻說串口的情況),但並不顯示輸入。它顯示的是從串口接收到的字符。所以,嵌入式係統的相應程序應該完成的任務便是:
將自己的啟動信息、過程信息主動發到運行有超級終端的主機;
將接收到的字符返回到主機(也就是回顯),同時發送需要,也可以遠程管理服務器。
三、超級終端常用操作
超級終端應用比較簡單,和一般的串口軟件差不多。
1、發送0x0C(12) : 清屏;
2、發送0x08(8) :將光標退格(注意這並不刪除字符);
3、發送0x09(9) ;將光標右移一個製表符(相當於TAB鍵);
4、發送0x0D(13);將光標移動到行首;
5、發送0x0A(10)或0x0B(11);將光標移動到同一列的下一行;
6、發送0x0D跟0x0A,換行功能(回車和換行的問題後麵會具體講解)。
四、常見問題和解決辦法
1、把超級終端最大化時,那個實際屏幕還是沒有變化。
原因:"超級終端"的終端屏幕大小由所使用的字體大小決定。它將自行顯示為 24 行,每行為 80 或 132 個字符,字體為所選字體。
解決辦法:在超級終端的"查看"菜單上,選擇"字體"。如果想要較大的終端屏幕,就選擇較大的字體。如果想要較小的終端屏幕,就選擇較小的字體。
2、鍵入的信息沒有顯示在超級終端上。
原因:終端屏幕顯示的信息是來自遠程計算機所發送的,而不是已輸入到本地計算機上的信息。為了查看所鍵入的信息,遠程計算機必須可反饋輸入信息。這可能會在輸入信息與終端屏幕顯示信息之間存在時間滯後的問題。
解決辦法:請確保與遠程計算機正確連接,並且遠程計算機可以反饋用戶輸入信息(也就是遠程計算機或嵌入式開發板將受到的信息再發送給本地計算機)。
3、ANSI字符不能夠正確顯示。
原因:未使用終端字體。
解決辦法:在超級終端的"查看"菜單上,選擇"字體"。單擊"終端",然後選擇"確定"。
4、連接到遠程計算機後,終端屏幕顯示無意義信息。
原因:未選擇正確的終端仿真類型。
解決辦法:在超級終端的"文件"菜單上,選擇"屬性"。選中"設置"選項卡。在"仿真"下拉框中,選擇遠程計算機的終端類型。如果遠程計算機類型沒有在下拉框中列出,則超級終端不支持該類型。
5、不能從終端刪除字符。
原因:所連接的遠程計算機已經控製了顯示在終端屏幕上的字符。遠程計算機期望光標能根據已發送到屏幕上的數據而定位到屏幕中的特定位置。如果在本地上改變該屏幕,那麼就有可能以主機所不能預料或控製的方式,潛在地中斷了您與遠程計算機之間交互操作。因此,超級終端不允許從屏幕上刪除字符。
解決辦法:不能。其實可以通過向遠程計算機發送b(退格)轉義符和空格來實現。
6、用CTRL+V不能將數據粘貼到終端屏幕。
原因:如果在該連接屬性的"終端鍵"進行了設置,按 CTRL+V 將會給模擬器發送轉義序列。許多主機使用 CTRL+V 來導航它們的係統。
解決方案:可以將該設置更改到"Windows 鍵"中,然後 CTRL+V 就會正常運作。如要更改,請單擊超級終端"文件"菜單中的"屬性"。單擊"設置"選項卡,然後單擊" Windows 鍵"單選按鈕。使用" Windows 鍵"設置時,所有的功能鍵、箭頭鍵和控製鍵將在本地執行。建議選項為:使用"終端鍵"設置,然後使用菜單進行粘貼
五、回車符和換行符區別
首先介紹一下“回車”(carriage return)和“換行”(line feed)這兩個概念的來曆和區別。在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鍾可以打10個字符。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字符。要是在這0.2秒裏麵,又有新的字符傳過來,那麼這個字符將丟失。於是,研製人員想了個辦法解決這個問題,就是在每行後麵加兩個表示結束的字符。一個叫做“回車”,告訴打字機把打印頭定位在左邊界;另一個叫做“換行”,告訴打字機把紙向下移一行。這就是“換行”和“回車”的來曆,從它們的英語名字上也可以看出一二。 後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,存儲器很貴,一些科學家認為在每行結尾加兩個字符太浪費了,加一個就可以。於是,就出現了分歧:
Unix 係統裏,每行結尾隻有“<換行>”,即“n”;
Windows係統裏麵,每行結尾是“ <回車><換行>”,即“rn”;
Mac係統裏,每行結尾是“<回車>”,即“r”。
一個直接後果是,Unix/Mac係統下的文件在Windows裏打 開的話,所有文字會變成一行;而Windows裏的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。
需要注意的是:在Windows係統中回車鍵被當做rn 的組合來使用,當我們從鍵盤輸入回車鍵時,Windows係統會把回車鍵當做rn 來處理,Unix係統隻會當做n 來處理,不管在什麼係統中,都可以用n來作為一行輸入結束的標記,隻是在編程時我們需要注意,在Windows係統中我們會讀到r 這個字符,我們必須把r和正常輸入的字符區別開來。
Windows與Unix文件格式是不同的,問題一般就是出在/r/n問題上。回車(CR)和換行(LF)符都是用來表示“下一行”的。而標準沒有規定要使用哪一個。於是產生了三種不同的用法:和windows采用回車+ 換行(CR+LG)表示下一行(亦即所謂的PC格式),UNIX采用換行符(LF)表示下一行,MAC機采用回車符(CR)表示下一行。當在不同的係統間傳遞文件,就要涉及格式的轉換。
兩種文件格式之間的轉化
Unix -> Windows:'n' -> 'rn'
while ( (ch = fgetc(in)) != EOF )
{
if ( ch == 'n' )
putchar('r');
putchar(ch);
}
隻要在Unix文件中出現的'n'的之前加入一個'r'字符就可以了
Unix <- Windows:'n' <- 'rn'
從Windows到Unix的情況複雜點,不能隻是把從文件中讀出的'r'去掉就可以了。因為Windows文件中的文本行的末尾有時會內嵌一個回車符號,這種情況在擊打式打印機中出現。所以在轉換前要判斷'r'是否和'n'同時出現。如果同時出現,則去掉'r',如果沒有同時出現,保留'n'。
cr_flag = 0; /* No CR encountered yet */
while ( (ch = fgetc(in)) != EOF )
{
if ( cr_flag && ch != 'n' ) {
/* This CR did not preceed LF */
putchar('r');
}
if ( !(cr_flag = (ch == 'r')) )
putchar(ch);
}
六、超級終端中關於回車符合換行符的一些設置
以換行符作為發送行末尾(ASCII碼發送)
(超級終端 ->屬性 ->設置 ->ASCII碼設置 ->ASCII碼發送:以換行符作為發送行末尾),若勾選了,則發送的數據中有0D(r)的,會在0D後添加0A(n)。
以換行符作為傳入行末尾(ASCII碼接收)
(超級終端 ->屬性 ->設置 ->ASCII碼設置 ->ASCII碼發送:以換行符作為傳入行末尾),若勾選了,則接收的數據中有0D(r)的,會在0D後添加0A(n)。
此外,還有一點需要注意,我們在使用printf輸出信息時,比如“printf("ce123' CSDN blog.n")”,這裏麵的n是回車換行,因此通過串口將該字符串發送到超級終端時要在n後麵或者後麵增加一個r。