2013-03-06 2 views
0

Я пытаюсь использовать arduino с модулем Bluetooth HID (bluesmirf) для управления громкостью на моей вкладке Galaxy. У меня есть настройка arduino, так что я нажимаю маленькую кнопку, которая подключена, и она отправляет текст ascii на планшет так же, как клавиатура, и это работает нормально. Я хотел создать собственный файл раскладки клавиатуры для этой «клавиатуры bluetooth», так что, когда планшет получит нажатие клавиши с arduino через bluetooth, он будет управлять соответствующим элементом, например громкостью, отключением звука и т. Д. Однако при использовании keytest для захват входящего нажатия кнопки с модуля bluetooth, scancode всегда равен 0. Keytest читает ключ справа и показывает его как keycode_a (например), когда отправляется A, но scancode для этого ключа всегда 0 вместо уникального идентификатор. Как ни странно, каретка возвращает, что ардуино автоматически помещается в конец команды serial.println (команда, которую я использую для отправки нажатия кнопки на bluetooth) отображается правильно, как ENTER, и имеет scancode.rn-42 bluesmirf HID не отправляет сканноды?

Я не понимаю. Я, должно быть, делаю что-то не так, но я все еще новичок/учился, поэтому мне это не хватает. Я не могу настроить настраиваемую раскладку клавиатуры, чтобы делать то, что я хочу, не имея при этом сканнода для показа таблетки.

При необходимости я могу указать код arduino. Всем приветствуется всяческая помощь. Я так близок к тому, чтобы заниматься тем, что мне нужно, и сводить меня с ума.

EDIT - КОД НИЖЕ:

// 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, но он показывает scancode как 0. Каждый переданный символ показывает как 0 по какой-либо причине, за исключением автоматического возврата каретки, который эскиз бросает после Serial.println. Я даже пытался использовать Serial.print вместо этого, потому что это не бросает возврат каретки, и я тоже получаю тот же scancode 0.

+0

Ваш код arduino поможет, а также отправку кода, который вы используете на стороне Android, также поможет. – FoamyGuy

+0

Я отредактировал исходное сообщение, чтобы включить код arduino. Я не использую какой-либо код на стороне Android. Идея заключается в том, что со сканнодами я могу написать файл раскладки клавиатуры или изменить один из стандартных по умолчанию, который в основном представляет собой текстовый файл, в котором говорится «когда ключ с этим scancode получен, а затем выполните это действие». Это похоже на создание пользовательских сочетаний клавиш. – user2140890

+0

Вы можете разместить ссылку на который у вас есть модуль bluesmirf? Есть несколько, и они работают немного по-разному. Также вы можете опубликовать вывод, который вы видите на стороне Android? Как, где вы видите, что он возвращается с keycode_a, и ENTER плюс их соответствующие scancodes (или недостаток)? – FoamyGuy

ответ

0

Вместо того, чтобы отправлять его от Arduino, сначала попробуйте его с помощью Cool-Term, с символом 3 мс и задержкой между пакетами 3 мс. В конце строки просто используйте 0D вместо 0D 0A Имейте в виду, что перед отправкой чего-либо ваш BlueSMiRF должен находиться в режиме HID, я не могу видеть эту часть в коде выше. Для HID-режима вы должны соблюдать следующие правила: $$$ (CR) S ~, 6 (CR) R, 1 (CR) $$$ Теперь красный светодиод должен мигать очень быстро, подключите телефон и от холодного срока пошлите A (возврат каретки), вы должны получать его прямо на свой телефон.

Наслаждайтесь!

Смежные вопросы