在LabVIEW中要偵測鍵盤滑鼠的動作,標準做法是使用鍵盤滑鼠事件來處理。這個方法有個問題?那就是鍵盤上有些按鍵在事件中是偵測不到的,尤其是很多新型鍵盤通常比標準鍵盤多了很多功能鍵

 

透過調用API程式user32.dll的GetKeyboardState函式,可以一次讀取鍵盤滑鼠所有按鍵狀態

 

首先使用Call Library Function Node元件,按滑鼠右鍵從選單中點選config...進入設定畫面,Library name or path設定為user32.DLL,Function name設定為GetKeyboardState

20131203-02

 

切換到Parameters畫面,內定的return type那一項保持原樣不變更。接下來要新增幾項函數

20131203-03  

 

新增ByteArray項目,格式設定為U8數值陣列。這一項是用來輸出鍵盤滑鼠按鍵狀態,按鍵狀態以0或1的數值表示

20131203-04  

 

新增size項目,格式設定為I32格式數值。這一是設定輸出資料長度,資料總長度是256

20131203-05

 

全部函數新增完成後按OK結束設定


完成程式 

20131203-06  

 

如何知道陣列中哪個點代表哪個按鍵?經過用標準鍵盤實測整理如下表:

20131203-01  

 

注意:除了Num Lock、Scroll Lock、Caps Lock這3個按鍵有實體燈號可以對應狀態外,其餘按鍵沒有。且所有按鍵都是按一次變化狀態後保持,要等到按下一次還會再變化。所以這個程式只能用來偵測按鍵是否有動作而已,動作後的0或1狀態是不確定的

 

另外在Windows 7底下,這個API程式會錯誤,無法讀到資料

, ,

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