Управление устройством по блютус

в 7:29, , рубрики: diy или сделай сам, smartphone, Программирование, смартфон, управление устройством по блютус

Эта статья служит продолжением предыдущей статьи «Смартфон управляет игрушечным автомобилем» и должна помочь пользователям, решившим повторить проект, управлять своим устройством с помощью блютус, используя среду программирования BASIC!..

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

Для этого написаны две программы.

Одна программа, назову её «Сервер», работает на смартфоне, управляющем устройством. Сервер будет слушать канал связи, получать команды и выполнять их.

Другая, назову ее «Клиент», работает на смартфоне, который выполняет роль пульта ДУ. Клиент будет инициировать связь, формировать команду, передавать ее по блютус серверу.

Команда представляет собой текстовое сообщение. Например, “right”, а можно “r”, что должно интерпретироваться как «вправо», и означать включение привода руля вправо и маршевого двигателя вперёд на 300 миллисекунд.

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

Перед запуском сервера и клиента выключайте блютус, для того чтобы ОС запрашивала разрешение на включение блютус, иначе соединение может и не создастся.

Сначала запускается программа «Сервер», после того как Вы убедитесь, что она начала слушать канал связи, запускаете Клиент и управляете устройством.

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

Листинг программы «Сервер»

FN.DEF speak(t$)
TTS.INIT
TTS.SPEAK t$
TTS.STOP
FN.END

speak("начало работы сервера")
ONERROR:
newConnection:
BT.OPEN
speak ("Жду запрос на соединение ")
DO % ++++++++
BT.STATUS s
IF s = 1
!speak("Слушаю")
ELSEIF s =2
speak( "Соединяюсь")
ELSEIF s = 3
speak( "Соединение создано")
ENDIF
PAUSE 1000
UNTIL s = 3 % ++++++

BT.DEVICE.NAME device$

DO %---------
BT.STATUS s
IF (s<> 3)
speak( "Соединение разорвано")
GOTO new_connection
ENDIF

DO % ======
BT.READ.READY rr
IF rr
BT.READ.BYTES s$
PRINT ":";s$
s$ =mid$(s$,1,len(s$)-1)
speak(s$)
IF (s$="end") THEN GOTO xEnd
ENDIF
UNTIL rr = 0 % ======

UNTIL 0 % --------

xEnd:
speak("Сервер остановлен")
BT.CLOSE
END

Листинг программы «Клиент»

ARRAY.LOAD menucom$[], "Вперед", "Назад", "Вправо", "Влево", "Остановить клиент", "Остановить сервер"

BT.OPEN
BT.CONNECT

n = 0
DO %+++++++++++
BT.STATUS s
IF s = 1
PRINT "Слушаю, секунды: ", n++
ELSEIF s =2
PRINT "Соединяюсь, секунды: ",n++
ELSEIF s = 3
PRINT "Есть соединение"
ENDIF
PAUSE 1000

UNTIL s = 3 %+++++++++

BT.DEVICE.NAME device$
PRINT device$
PAUSE 1000

x = 0
DO %#########
SELECT menu, menuCom$[], "Выбери команду"
IF menu = 1 THEN BT.WRITE "forward"
IF menu = 2 THEN BT.WRITE "backward"
IF menu = 3 THEN BT.WRITE "right"
IF menu = 4 THEN BT.WRITE "left"
IF menu = 5 THEN x=1
IF menu = 6 THEN BT.WRITE "end"
UNTIL x=1 %#########

BT.CLOSE
END

Автор: Федор Волков

Источник

Поделиться

* - обязательные к заполнению поля