這次研究的主題是如何用LabVIEW模擬Windows小算盤程式的計算功能

 

這個小算盤程式看起來簡單,實際要寫時遇到很多問題,在寫之前必須要先解析小算盤每個按鍵的功能特點

 

 

小算盤功能特點解析:

 

顯示幕顯示數字和錯誤訊息

 

除了C和CE鍵,其他按鍵在出現計算錯誤訊息時,按下去不會動作

 

0這個按鍵在顯示幕上只有0時按下去也不會動作,有其他數字時會插入其他數字後面,若有按下計算功能鍵(+-*/)時,則直接清除畫面以0取代

 

1~9按鍵在顯示幕只有0時或按下計算功能鍵時,直接清除畫面以1~9數字取代,有其他數字時會插入其他數字後面

 

.這個按鍵在顯示幕上有0~9以上數字時按下去會插入其他數字後面,但顯示幕上已有小數點時,按下去也不會動作

 

+/-個按鍵在顯示幕上只有0時按下去不會動作,有其他數字時,按一次則將顯示幕數字變成負數,再按一次則將顯示幕上的負數數字變成正數

 

左上角的是顯示M數值記憶狀態,有記憶數值時顯示為M,沒有時顯示為空白

 

MC這個按鍵會把M數值記憶清除

 

MR這個按鍵會把M數值記憶讀出顯示到顯示幕上

 

MS這個按鍵會把顯示幕上的數值存入M數值記憶中,但顯示幕為0時,這個按鍵不動作

 

M+這個按鍵會把顯示幕上的數值和M數值記憶的數值相加後,再存入M數值記憶中

 

Sqrt這個按鍵會把顯示幕上的數值開根號,運算後的結果顯示在顯示幕上。但顯示幕為0時,這個按鍵不動作。顯示幕為負數時,則出現輸入的函數不正確。的錯誤訊息。當出現錯誤訊息時,只能用C和CE鍵來清除顯示幕,否則無法進行其他操作


%這個按鍵在沒有按下計算功能鍵時,會直接清除畫面以0取代。有按下計算功能鍵時,會將按下計算功能鍵前的顯示幕的數值,乘上按下計算功能鍵後按下%這個按鍵時的顯示幕數值的百分比,運算後的結果顯示在顯示幕上。之後若再按計算功能鍵或=鍵,會把運算後的百分比數值和前一數值計算後顯示


1/x這個按鍵把顯示幕上的數值做倒數運算後顯示。若顯示幕為0時,則出現無法除以零。的錯誤訊息


C這個按鍵會清除顯示幕的數值和錯誤訊息成為0。同時也把所有已按下的計算功能清除


CE這個按鍵則只會清除顯示幕的數值和錯誤訊息成為0。不會把已按下的計算功能清除


Backspace這個按鍵會清除顯示幕上的數值的最右邊1個。當數值只剩1個或負數只剩含負號的2個字時,這個按鍵會清除顯示幕上的數值以0取代


+-*/功能鍵,在按下時會先將顯示幕上的數值暫時記憶。若之前已有按過計算功能鍵,則會先執行之前的計算,再將結果暫時記憶。若之前已有按過計算功能鍵後沒有按過任何數字鍵,則按鍵沒有動作。另外任何數值若除以0,則出現無法除以零。的錯誤訊息


=這個按鍵會直接執行計算功能鍵的計算功能,若沒有按計算功能鍵則=鍵不會動作。=鍵會記憶運算功能和第2個數值,之後只要按=鍵就會連續執行相同的計算功能,所以1+1+1...或2*2*2...這樣的功能可以靠按=鍵來達成

 

 

程式的畫面配置當然是完全仿造標準型小算盤程式的畫面,不過為了方便知道目前是哪種計算功能,特地在右上角加入可以顯示目前計算功能的框框

20090423-01  

 

 

程式碼的部分:


為了省事,這個程式只支援滑鼠點選輸入,不支援以鍵盤輸入,唯一有支援的電腦鍵盤功能是按Esc鍵結束程式。另外為了不想把程式弄得太複雜,只設定成計算到小數以下12位數

 

 

完成的程式碼畫面如下:

20090423-03  

 

在迴圈外側是所有用到的按鍵,由於程式裏只用每個按鍵的Mouse Down事件觸發動作,所以這些按鍵只放著,沒寫在程式內

20090423-02  

 

迴圈上半寫了一堆移位暫存器,作為狀態、數值顯示及操作參數的記憶及傳遞

20090423-04  

 

 

接著說明每個按鍵事件的程式

 

首先是唯一支援的電腦鍵盤功能,這功能是要結束程式,用的是Key Down?事件。用事件左邊的ScanCode傳出的值,當ScanCode傳出的值=1(Esc鍵代碼)時,就輸出信號結束程式

20090423-05  

 

接著是0~9按鍵的Mouse Down事件,程式裏主要程式碼幾乎相同,右邊是在有錯誤訊息時讓按鍵對應的數值不能輸入。中間則是當有按下計算功能鍵時,把顯示幕清除以按鍵對應的數字取代。左邊則是在顯示幕只有0且沒有按下計算功能鍵時,以按鍵對應的數字取代0

20090423-06  

 

再來是.按鍵的Mouse Down事件,同樣在有錯誤訊息時讓.按鍵無法輸入。或是已有輸入小數點時,.按鍵無法再輸入。若是有按下計算功能鍵時,則把顯示幕清除以0.數字取代

20090423-07  

 

再來是+/-按鍵的Mouse Down事件,同樣在有錯誤訊息時讓+/-按鍵無法輸入。若有按下計算功能鍵時,把顯示幕清除0數字取代。當顯示幕只有0時,無法切換正負號。0以外數值,則正數變負數,負數則變正數

20090423-08  

 

MC按鍵的Mouse Down事件,同樣在有錯誤訊息時不動作。以外則清除M記憶數值,也清除M記憶數值的狀態顯示

20090423-09  

 

MR按鍵的Mouse Down事件,同樣在有錯誤訊息時不動作。此外則是在有M記憶數值的狀態下,把M記憶數值轉成字串顯示到顯示幕上

20090423-10  

 

MS按鍵的Mouse Down事件,同樣在有錯誤訊息時不動作,另外當顯示幕只有0或有按下計算功能鍵時也不動作。此外則是把顯示幕上的字串轉成數字存入M記憶數值中

20090423-11  

 

M+按鍵的Mouse Down事件,同樣在有錯誤訊息時不動作,另外當顯示幕只有0或有按下計算功能鍵時也不動作。此外則是把顯示幕上的字串轉成數字後,和M記憶數值相加,然後再存入M記憶數值中

20090423-12  

 

Backspace這個按鍵的Mouse Down事件,同樣在有錯誤訊息時不能動作,每動作一次則清除顯示幕上右邊最後一個數字。當正數剩1個負數剩2個(含負號)字時,則清除顯示幕以0取代

20090423-13  

 

CE這個按鍵的Mouse Down事件,只有把顯示幕上的數字或錯誤訊息清除為0,其餘的部分都沒有更動

20090423-14  

 

C這個按鍵的Mouse Down事件,除了把顯示幕上的數字或錯誤訊息清除為0外,連已按下的計算功能和記憶的數值一並清除

20090423-15  

 

Sqrt這個按鍵的Mouse Down事件,把顯示幕上的文字轉成數字並開根號運算,運算後的結果顯示在顯示幕上。當顯示幕上為負數時,則在顯示幕顯示輸入的函數不正確。的錯誤訊息

20090423-16  

 

%這個按鍵的Mouse Down事件,在有錯誤訊息時不動作。在沒有按下計算功能鍵時,會清除顯示幕以0取代。有按下計算功能鍵時,會將按下計算功能鍵前的顯示幕的數值,乘上按下計算功能鍵後按下%這個按鍵時的顯示幕數值的百分比,運算後的結果顯示在顯示幕上。之後若再按計算功能鍵或=鍵,會把運算後的百分比數值和前一數值計算後顯示

20090423-17  

 

1/x這個按鍵的Mouse Down事件,同樣在有錯誤訊息時不動作。若顯示幕為0時,則出現無法除以零。的錯誤訊息。此外則是把顯示幕上的數值做倒數運算後顯示

20090423-18  

 

+-*/計算功能鍵的Mouse Down事件,同樣在有錯誤訊息時不動作。被按下時會先檢查是否之前已有按下其它計算功能,若有按下其它計算功能鍵後又沒有按下數字鍵,則不動作(計算功能鍵不能連按)。若有按下其它計算功能鍵後又有按下數字鍵,則會先進行上一個計算功能,然後等待輸入下一個數字。若沒有按下其它計算功能鍵,則會先將顯示幕上的字串轉成數值後記憶保存

20090423-19  

 

=這個按鍵的Mouse Down事件,同樣在有錯誤訊息時不動作。此外則是直接進行計算功能,並將運算結果顯示在顯示幕上。不同的是=這個按鍵會記憶計算時輸入的第2個數字和計算功能,所以一直按=鍵會連續執行相同的計算功能

20090423-20  

 

 

程式可能還會有些小問題,可能還有些Windows標準型小算盤程式會遭遇的操作狀態沒研究到,以上程式是以研究過後可能會出現的狀態為基礎去寫的

文章標籤
創作者介紹

LabVIEW & PLC還未出師的小工程師部落格

未出師的小工程師 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • 悄悄話
  • 悄悄話
找更多相關文章與討論

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼