我已经能够通过蓝牙将传感器连接到我的Raspberry Pi,并使用Python套接字库和以下程序通过串行端口配置文件接收其信息:
import socket
sensorMACAddress = 'XX:XX:XX:XX:XX:XX'
port = 1
s = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
s.connect((sensorMACAddress,port))
s.send(bytes('#ob', 'UTF-8')) # Tells the sensor to send the data in bytes
while(1):
data = s.recv(12)
while len(data) < 12:
data = data + s.recv(12)
Y = struct.unpack('<f', data[0:4])[0]
P = struct.unpack('<f', data[4:8])[0]
R = struct.unpack('<f', data[8:12])[0]
YPR = str(['S3', int(Y), int(P), int(R)])
print(YPR)
print('\n')
(传感器连接后会自动发送数据。)
现在我想将此传感器的信息发送到我的计算机,因此我刚刚更新了先前的程序,为树莓和计算机之间的连接创建了一个新的套接字对象,以使用send()函数发送信息:
# This goes outside the loop
computerMACAddress = 'XX:XX:XX:XX:XX:XX'
s_comp = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
s_comp.connect((computerMACAddress,port))
# This goes inside the loop
s_comp.send(YPR.encode())
显然,这个程序正在发送信息,它确实通过蓝牙连接到我的电脑(或手机),但我的电脑(Windows)似乎没有接收到它,我的手机(Android)也没有
按照这些步骤(https://scribles.net/setting-up-bluetooth-serial-port-profile-on-raspberry-pi/),我能够使用各自的键盘,使用蓝牙串行端口配置文件,通过蓝牙在我的Raspberry Pi和我的计算机之间发送和接收信息,因此问题似乎出在插座上,而不是蓝牙串行端口配置文件连接上。以下简单程序也不起作用:
import socket
computerMACAddress = 'XX:XX:XX:XX:XX:XX'
port = 1
s = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
s.connect((computerMACAddress,port))
data = 'Hello world!'
while 1:
s.send(bytes(data, 'UTF-8'))
print(data)
在这个例子(http://blog.kevindoran.co/bluetooth-programming-with-python-3/)中,我看到他们创建了一个客户端程序来发送信息,并创建了一个服务器程序来接收信息,但我不必这样做来接收从传感器到树莓的信息,所以我不知道为什么我需要用计算机来做。无论如何,我试过了,但没能成功。显然,在Windows环境下,套接字工作得不太好,但我的Android手机也无法接收信息,即使我可以建立蓝牙连接
因此,总而言之:
多谢各位
传感器上似乎运行着蓝牙串行端口配置文件(SPP)服务器,因此Raspberry Pi上的SPP客户端成功连接并交换信息
Windows上蓝牙SPP的Python套接字仅在Python 3.9中引入,因此您需要在Windows计算机上安装最新版本的Python
但是,如果它已连接,则可能需要查找它已连接到的串行端口。也许以下内容会有所帮助:https://www.instructables.com/Raspberry-Pi-Bluetooth-to-PuTTY-on-Windows-10/
然而,更典型的设置是,树莓Pi将成为传感器和网络之间的桥梁。这意味着来自传感器的值通过蓝牙传输到RPi。然后,RPi通过运行在RPi上的网站/插座,通过WiFi/互联网提供传感器数据
作为补充说明,您可以更高效地解包数据。例如:
相关问题 更多 >
编程相关推荐