蓝牙设备控制

本文是上一篇文章“智能手机驾驶玩具车”的继续,应帮助已决定重复该项目的用户使用BASIC编程环境使用蓝牙来管理其设备!

语音控制是一种有效但不是很可靠的控制工具,尤其是当距控制对象的距离大于2米时。 声音衰减和混响以及外来干扰,并且您还需要不断访问Internet。 可靠的蓝牙控制。

为此编写了两个程序。

我将其称为“服务器”的一个程序在控制该设备的智能手机上运行。 服务器将监听通信通道,接收并执行命令。

另一个,我将其称为“客户端”,可在充当遥控器的智能手机上使用。 客户将启动通信,组成一个团队,并通过蓝牙服务器进行传输。

该命令是一条短信。 例如,“向右”或“ 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 

Source: https://habr.com/ru/post/zh-CN426249/


All Articles