Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2013 09:34:21

astridsnus
Зарегистрирован: 2013-10-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

android, bluetooth, sl4a

Использую sl4a, android 4.4, python for android 3.3.2
Задача состоит в отправке некоторых команд с планшета на железку с блютус. Железка планшетом видится и сопряжение устанавливается.

Написал такой код:

import sl4a
import time
droid = sl4a.Android()
droid.toggleBluetoothState(True)
adr = '01:18:DA:00:E2:6B'
droid.bluetoothConnect(adr)
while True:
  
  ans = droid.bluetoothReadLine().result
  droid.dialogCreateAlert('+', ans)
  droid.dialogSetPositiveButtonText('OK')
  droid.dialogShow()
  droid.dialogGetResponse()
  
  result = droid.dialogGetInput().result
  droid.bluetoothWrite(result)
  time.sleep(0.5) 
        
В консоль пишется ошибка “java.io.IOException: Bluetooth not ready for this connID ”
То есть планшет не понимает как и куда слать данные, как я это понимаю. Что можно сделать?

Отредактировано astridsnus (Дек. 9, 2013 09:37:41)

Офлайн

#2 Дек. 9, 2013 11:56:31

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

android, bluetooth, sl4a

Попробуй try: droid.bluetoothConnect(adr) использовать.

Офлайн

#3 Дек. 9, 2013 12:27:07

astridsnus
Зарегистрирован: 2013-10-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

android, bluetooth, sl4a

К сожалению не помогает.

Офлайн

#4 Дек. 9, 2013 17:17:06

astridsnus
Зарегистрирован: 2013-10-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

android, bluetooth, sl4a

Изменил код вот так:

import sl4a
import time

droid = sl4a.Android()
uuid = '00001101-0000-1000-8000-00805F9B34FB'
droid.toggleBluetoothState(True)
adr = '6B:E2:00:DA:18:01'
droid.bluetoothConnect(uuid,adr)
time.sleep(1)

i = 0

while i < 3:

ans = droid.bluetoothRead(1024).result
droid.dialogCreateAlert("+", ans)
droid.dialogSetPositiveButtonText('OK')
droid.dialogShow()
droid.dialogGetResponse()

result = droid.dialogGetInput().result
rr = result + '/r'
droid.bluetoothWrite(rr)
time.sleep(1)
i += 1

Теперь происходит запрос на сопряжение, я ввожу код сопряжения, после чего наступает молчание. Причём если я ставлю вперёд запись, а затем чтение, то все равно все тихо.

Офлайн

#5 Дек. 13, 2013 07:12:52

astridsnus
Зарегистрирован: 2013-10-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

android, bluetooth, sl4a

Неужели никто не знает? Пробовал ввести проверку
if droid.bluetoothReadReady().result:
перед чтением.
Проверка эта возвращает false.

Офлайн

#6 Дек. 13, 2013 11:33:32

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

android, bluetooth, sl4a

У меня закралась мысль, что у вас пермишены не выставлены для роботы с Голубым Зубом.

<manifest ... >
  <uses-permission android:name="android.permission.BLUETOOTH" />
  ...
</manifest>

Офлайн

#7 Дек. 16, 2013 08:34:13

astridsnus
Зарегистрирован: 2013-10-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

android, bluetooth, sl4a

такого не может быть, т.к. если я запускаю на железке только вывод данных (он просто фигачит статистику в ком порт, затем на блютус), я эту статистику планшетом принимаю. кроме того и синхронизация между планшетом и железкой устанавливается.
проблема в том, что почему-то не читается буфер, в который приходит ответ от железки.

Офлайн

#8 Дек. 16, 2013 12:40:12

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

android, bluetooth, sl4a

Я дико извиняюсь, но пермишены раздаются каждой программе на Ведроиде. То есть, если вы читаете одной програмой, то это не означает что ваша программа будет работать с БлюПупом.

Офлайн

#9 Дек. 16, 2013 16:22:23

astridsnus
Зарегистрирован: 2013-10-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

android, bluetooth, sl4a

так это одна и та же программа. я просто могу закомментировать в коде строчки записи, поставить только чтение и бросать на планшет данные с железки (заранее попрошу ее кидать на свой блютус постоянно статистику) .
более того, я уверен, что команды с планшета уходят - смотрел осциллографом на приеме на железке.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version