Проблемы с подключением Android Bluetooth

#android #python #bluetooth #arduino #sl4a

#Android #python #bluetooth #arduino #sl4a

Вопрос:

Я пытаюсь запустить простой скрипт python на моем телефоне Andorid (используя SL4A) для подключения к bluetooth-модему BlueSMiRF (на базе устройства RN41), однако, независимо от того, что я пытаюсь, я продолжаю получать следующую ошибку при попытке подключения.

исключение java.io.IOException: не удается запустить обнаружение службы

Сценарий python показан ниже

 import android

droid = android.Android()
droid.toggleBluetoothState(True)

result = droid.bluetoothConnect()
#result = droid.bluetoothConnect('00001101-0000-1000-8000-00805f9B34fb')
#result = droid.bluetoothConnect('00001101-0000-1000-8000-00805f9B34fb', '00:06:66:07:AE:44')

print repr(result)

droid.toggleBluetoothState(False)
  

Я попробовал все три варианта bluetoothConnect() , как показано в приведенном выше коде. Если я попробую первые два способа подключения, я также смогу увидеть blueSMiRF в списке подключаемых устройств.

Мой эскиз arduino (работающий на Arduino Mega) показан ниже. Он просто пересылает символы с одного порта на другой. Serial подключен к моему ноутбуку на 9600, Serial1 подключен к BlueSMiRF на 115200.

 void setup ()
{
  // initialise serial
  Serial.begin(9600);  
  Serial1.begin(115200);  
}

void loop ()
{

  if (Serial1.available())
  {
    char c = Serial1.read(); 
    Serial.print(c); 
  }

  if (Serial.available())
  {
    char c = Serial.read();        
    Serial1.print(c); 
  }
} 
  

Я могу использовать Putty для доступа к blueSMiRF командному режиму, набрав $$$ текст. Кажется, все в порядке. У меня есть лишь небольшие опасения по поводу настроек для класса обслуживания и класса устройства. Для них установлены заводские значения по умолчанию 0x0000 и 0x1f00 соответственно, и мне интересно, может ли потребоваться установить класс service на 0x1101 (UUID для SSP).

Другая информация: версия Android 2.3.3 SL4A r4

Комментарии:

1. Возможно, вы захотите попробовать запросить в списке рассылки Py4A или проверить проблемы Py4A.

Ответ №1:

Переключите RX-TX на BlueSMiRF, когда он будет взаимодействовать с платой arduino.

Если вы можете подключиться к BlueSMiRF через ПК, у него настроен RX-TX в качестве платы arduino.

Настройка ПК для BlueSMiRF:
PC TX -> Arduino RX -> BlueSMiRF RX
PC RX <— Arduino TX <— BlueSMiRF TX

Настройка Arduino для BlueSMiRF:
Arduino RX —> BlueSMiRF TX
Arduino TX <— BlueSMiRF RX

Ответ №2:

Модуль PyBluez в целом работает хорошо, и я использовал его с SL4A без проблем. Возможно, вам повезет больше, просто используя это и вообще пропустив Java.

PyBluez не является чистым модулем Python, поэтому его необходимо скомпилировать, но это было сделано, и последняя версия доступна в разделе «загрузки» сайта Py4A. Именно этой копией я пользуюсь лично, без каких-либо проблем.

Просто загрузите копию на свой droid, откройте приложение Python4Android, нажмите Импортировать модули и выберите PyBluez egg.