- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用蓝牙适配器将我的手机连接到我的 RaspberryPi(不是试图做任何惊天动地的事情,只是确定我的手机何时位于该区域)。如果我打开手机的蓝牙并发出以下命令,我会得到以下输出(在有人开始向我宣讲这是如何破坏安全之前,让我提醒您,这是<强>不是我实际的手机蓝牙ID):
命令:
sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10
echo $?
输出:
Connected /dev/rfcomm0 to AA:BB:CC:DD:EE:FF on channel 10
Press CTRL-C for hangup
0
现在,如果我关闭手机的蓝牙,并发出相同的命令,我会得到以下输出(同样,所有 ID 都已更改以保护无辜者)。
命令:
sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10
echo $?
输出:
Can't connect RFCOMM socket: Host is down
0
由于我试图确定手机何时在房间里以及何时离开,我需要某种方法(其他方法)来检测加密狗何时可以连接到它以及何时不能连接到它。我怎样才能实现这一目标? (注:我尝试将手机从建筑物中取出,甚至将其完全关闭)
编辑:我考虑过捕获stderr
消息并像这样测试它
error=$`sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10 >/dev/null` &
if [ $error=="Can't connect RFCOMM socket: Host is down" ]
then
...
fi;
但问题是 rfcomm 必须在后台运行。
最佳答案
我还没有完全弄清楚如何做到这一点,但这就是我解决它的方法。我只需在执行 sudo rfcomm connect 0 AA:BB:CC:DD:EE:FF 10 命令后等待 5 秒,然后检查是否有连接。我怀疑这实际上是完美的,因为下一次迭代会发现所犯的任何错误,但不要引用我的话。也许是更多的经历。我已经包含了最小工作示例 (MWE),以便您可以遵循它。
MWE:
#!/bin/bash
phone1="AA:BB:CC:DD:EE:FF" #Address of phone
inside=1 # Whether the phone is 'inside' the house (0) or 'outside (1)
phoneDetected ()
{
# Search for phone
hcitool rssi $phone1 &>/dev/null
ret=$?
# If search was unsuccessful,
if [ $ret -ne 0 ]
then
# Add phone
sudo rfcomm connect 0 $phone1 10 &>/dev/null &
# Note: the return code of rfcomm will almost always be 0,
# so don't rely on it if you are looking for failed connections,
# instead wait 5 seconds for rfcomm to connect, then check
# connection again. Note this is not fool proof as an rfcomm
# command taking longer than 5 seconds could break this program,
# however, it generally only takes 2 seconds.
sleep 5
hcitool rssi $phone1 &>/dev/null
ret=$?
fi;
# Case 1) we are now connected (ret=0) and we were previously outside (inside=1)
if [ $ret -eq 0 ] && [ $inside -eq 1 ]
then
# change state to inside and do something (I am playing a song)
inside=0
mplayer /home/pi/documents/rasbpi/raspi1/media/audio/1.mp3 &>/dev/null
# Case 2) we are no longer connected (ret=1) but we were previously inside (inside=0)
elif [ $ret -eq 1 ] && [ $inside -eq 0 ]
then
# change state to outside and do something (I am playing another song)
inside=1
mplayer /home/pi/documents/rasbpi/raspi1/media/audio/2.mp3 &>/dev/null
fi;
}
# run an infinite loop
while :
do
phoneDetected $phone1
done
关于bluetooth - 使用 rfcomm 检查连接是否成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19105870/
我已经使用基于 RFCOMM 和串行端口配置文件 (SPP) 的 MS 蓝牙套接字在我的 PC 和蓝牙设备之间建立了连接。 连续接收数据没有问题。但是,如果要发送一个字节(作为命令),设备不会接收到它
我在 Python 3 上创建了简单的蓝牙 RFCOMM 服务器 这是我的代码: import bluetooth class Bluetooth: def __init__(self, po
我正在使用蓝牙加密狗尝试将信息从 ubuntu 15.04 发送到运行最新的 debian jessie 镜像的 raspberry pi b+。我只是关注http://people.csail.mi
我正在使用 RFComm 套接字。我有一个客户端循环,它在循环中读取和写入。我猜当服务器退出时,客户端也应该终止。但是客户端没有终止。它不打印“客户端循环退出”。我的代码如下- void* c
我需要制作一个应用程序,通过 RFCOMM 套接字 与 Raspberry Pi 进行通信,无需配对。在 Android 端,我有 RPi 的 MAC 地址,我正在尝试使用以下代码连接到服务器: Bl
我正在尝试使用蓝牙适配器将我的手机连接到我的 RaspberryPi(不是试图做任何惊天动地的事情,只是确定我的手机何时位于该区域)。如果我打开手机的蓝牙并发出以下命令,我会得到以下输出(在有人开始向
我有一个 Android 应用程序 [1],我部分地想将其移植到 google-glass - 这个应用程序使用蓝牙 rfcomm。现在我面临以下问题:当我使用我的连接代码时,我在玻璃上看到一个配对对
我正在开发一个 Android 应用程序,它会大量使用两个设备之间的蓝牙 RFCOMM 连接,并使用默认的 BluetoothAdapter 进行数据传输。 我想知道的是: 是否可以在用户使用蓝牙耳机
我通过蓝牙在使用gumstix的客户端和Linux上的服务器之间创建了连接。这就是我对服务器所做的: ftph-user@ftph-9818:~$ hcitool dev Devices: hci0
上下文如下,我们有多辆包含蓝牙转串口设备的卡车,我们为每辆卡车的蓝牙赋予了一个唯一的名称,以便能够连接到特定的卡车。 我使用此代码检索所有 RFComm 服务: DeviceInformation.F
我正在使用以下代码创建从我的 HTC One X 到 SENA 蓝牙 ESD110 串行模块的不安全 rfcomm 连接: BluetoothDevice device = mBluetoothAda
我正在尝试将 Ubuntu 电脑与设备连接。输入命令时,返回各种错误,包括rfcomm connect address already in use、host is down、rfcomm conne
我正在计划在 Android 设备和使用商用蓝牙模块的自定义传感器之间使用的通信协议(protocol)。我会使用 SPP 配置文件,据说它“向用户提供简单可靠的数据流,类似于 TCP”。 我对蓝牙技
我正在制作一个连接到蓝牙设备的应用程序。当我搜索我得到的设备时 Windows.Devices.Enumeration.DeviceInformation 在列表框中,但我想要设备名称。 我使用的代码
我正在使用 listenUsingInsecureRfcommWithServiceRecord 和createInsecureRfcommSocketToServiceRecord 调用以进行连接一
我有两个蓝牙设备,我正在尝试建立两个 rfcomm 连接,每个设备一个连接。 我正在使用 bluez rfcomm 套接字 addr.rc_family = AF_BLUETOOTH; addr.rc
我已经通过改编 Android SDK 提供的蓝牙聊天示例代码成功地设置了一个蓝牙服务器。我有一个关于如何找到创建的 bluetoothserversocket 的 channel 的问题。当我启动服
我有一个使用蓝牙 SPP (RFCOMM) 与硬件通信的应用程序。该应用程序和蓝牙连接效果很好。问题是当另一个应用程序启动时也使用 SPP,然后其中一个应用程序停止。一旦任何一个应用程序停止,无论是通
我正在探索使用 rfcomm 的蓝牙通信代码。我能够在 xamarin.android native 中实现此功能,但对于 xamarin.ios 我什至无法找到示例,只是找到了 BLE 示例。那么,
我在连接到我的树莓派上的串口转蓝牙设备时遇到问题。 在 bluetoothctl 中,我扫描 ip 并尝试配对(在信任之后),但我被拒绝了,而且我从未收到输入 pin 的提示。 我也试过 rfcomm
我是一名优秀的程序员,十分优秀!