2013-03-06 97 views
0

我正在嘗試使用帶藍牙HID模塊(bluesmirf)的arduino來控制Galaxy選項卡上的音量。我有arduino安裝程序,這樣我就可以按下一個連接的小按鈕,它就像鍵盤一樣將ascii文本發送到平板電腦,並且工作正常。我想爲這個「藍牙鍵盤」創建一個自定義鍵盤佈局文件,這樣當平板電腦通過藍牙從arduino接收到一個按鍵時,它將控制相應的項目,如音量,靜音等。但是,當使用keytest捕獲來自藍牙模塊的傳入按鈕,掃描碼始終爲0. Keytest正在讀取右側的鍵,並在發送A時將其顯示爲keycode_a(例如),但該鍵的掃描碼始終爲0而不是唯一的標識符。奇怪的是,回車,arduino自動放在serial.println命令的末尾(我用來通過藍牙發送按鈕的命令)正確顯示爲ENTER,並且有一個掃描碼。rn-42 bluesmirf HID不發送掃描碼?

我不明白。我一定做錯了什麼,但我還是新的/學習,所以我必須錯過它。我無法設置自定義鍵盤佈局來執行我想要的操作,而無需掃描代碼進入平板電腦查看。

如果需要,我可以發佈我的arduino代碼。任何和所有的幫助,不勝感激。我非常接近完成我所需要的東西,並使我瘋狂。

編輯 - CODE BELOW:

// test code for sending keystrokes from arduino 
// to computer via HID bluetooth module 
// constants won't change. They're used here to 
// set pin numbers: 
const int buttonPin = 2;  // the number of the pushbutton pin 
const int ledPin = 13;  // the number of the LED pin 

// variables will change: 
int buttonState = 0;   // variable for reading the pushbutton status 
void setup() { 
// initialize the LED pin as an output: 
    pinMode(ledPin, OUTPUT);  
// initialize the pushbutton pin as an input: 
    pinMode(buttonPin, INPUT); 
// begin serial communication at 115200 baud rate 
    Serial.begin(115200); 
} 
void loop() { 
// read the state of the pushbutton value: 
    buttonState = digitalRead(buttonPin); 

    // check if the pushbutton is pressed. 
    // if it is, the buttonState is HIGH, 
    //the LED turns on, and the line is printed via bluetooth. 
    if (buttonState == HIGH) { 
    digitalWrite(ledPin, HIGH); // turn LED on: 
    Serial.println("A"); // write the line via bluetooth 
    delay(1000); // delay one second 
    } 
    else { 
    // turn LED off: 
    digitalWrite(ledPin, LOW); 
    } 

} 

所以在上面的代碼中,Serial.println( 「A」);發送到平板電腦,我可以看到一個打印在文本編輯器中的A.平板電腦在keytest應用程序中看到A被按下,但它顯示掃描碼爲0.由於某些原因,發送的每個字符都顯示爲0,除了在Serial.println之後草圖引入的自動回車。我甚至嘗試使用Serial.print,因爲它沒有輸入回車符,並且我也得到了相同的掃描碼0。

+0

你的arduino代碼會有幫助,同時發佈你在Android端使用的代碼也會有幫助。 – FoamyGuy 2013-03-06 16:55:25

+0

我編輯原始帖子以包含arduino代碼。我沒有在android端使用任何代碼。這個想法是,通過掃描碼,我可以編寫一個鍵盤佈局文件,或者修改其中一個默認的文件,它基本上只是一個文本文件,上面寫着「何時接收到帶有此掃描碼的密鑰,然後執行此操作」。它就像製作自定義鍵盤快捷鍵一樣。 – user2140890 2013-03-06 23:03:10

+0

你能發佈一個鏈接到哪個bluesmirf模塊嗎?有幾個,他們工作有點不同IIRC。你也可以發佈你在android端看到的輸出嗎?就像你在哪裏看到它使用keycode_a和ENTER以及它們各自的掃描碼(或缺少它們)? – FoamyGuy 2013-03-07 02:21:22

回答

0

代替從Arduino發送它,首先嚐試通過Cool-Term,具有3ms字符間隔和3ms數據包間延遲。在結束時,只需使用0D而不是0D 0A 請注意,在發送任何內容之前,您的BlueSMiRF應該處於HID模式,我無法在上面的代碼中看到該部分。對於HID模式,您應該從冷靜期開始使用 $$$(CR) S〜,6(CR) R,1(CR) $$$ 現在紅色LED應該非常快地閃爍,連接手機並從冷靜期發送A(回車),你應該直接在你的手機上收到它。

享受!