gpt4 book ai didi

android - 通过蓝牙接收消息到 raspberrypi

转载 作者:行者123 更新时间:2023-12-01 22:28:42 26 4
gpt4 key购买 nike

我想通过蓝牙接收从手机到树莓的消息

我写了以下代码,

import bluetooth

hostMACAddress = '18:9E:FC:A1:81:93' # The MAC address of my iphone
port = 3
backlog = 1
size = 1024
s = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
s.bind((hostMACAddress, port))
s.listen(backlog)
try:
client, clientInfo = s.accept()
while 1:
data = client.recv(size)
if data:
print(data)
client.send(data) # Echo back to client
except:
print("Closing socket")
client.close()
s.close()

当我运行此代码时,如何接收到我的树莓派的消息,我没有看到收到任何消息,我的树莓派检测到我的 iPhone 的 MAC 地址,但我想发送一些消息,看看树莓派的蓝牙是否可以接收它

请让我知道我必须在此代码中进行哪些修改才能实现蓝牙连接

最佳答案

我还没有完成使用 Flutter 构建应用程序,但我已经使用 python 准备好了服务器/客户端代码。
服务器.py

import socket
import os
import multiprocessing
from multiprocessing import pool
os.system('sudo python3 relay.py C') #runs relay program and setups up GPIO pins
hostMACAddress = 'B8:27:EB:A3:B6:EB' # The MAC address of a Bluetooth adapter on the server.
backlog = 4
port=3
size = 1024
s = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
s.bind((hostMACAddress,port))
s.listen(backlog)

def new_client(client):
while 1:
data = client.recv(size)
if data:
n=data.decode("utf-8")
if n == 'ON':
os.system('sudo python3 relay.py ON')
if n == 'OFF':
os.system('sudo python3 relay.py OFF')
if n == 'CLOSE':
break
client.send(data)


if __name__ == '__main__':
client, address = s.accept()
pool = multiprocessing.Pool(4)
pool.map(new_client, (client, ))
pool.close()
pool.join
print("Closing socket")
client.close()
s.close()
这是我在树莓派上运行的服务器程序。
我实现了多线程以始终允许 4 个 Activity 连接(套接字),因为蓝牙与 Web 套接字编程有点不同,所以我必须创造性地在任何客户端关闭连接后保持应用程序运行。
基本上,如果我收到消息 ON/OFF,它又会运行另一个打开或关闭继电器的 python 程序,如果我收到 CLOSE 消息,我会终止线程。
客户端.py
import bluetooth
bd_addr = 'B8:27:EB:A3:B6:EB'
port = 3
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((bd_addr,port))
print("Connected")
while True:
try:
data = input()
sock.send(data.encode())
if data == 'CLOSE':
break
except KeyboardInterrupt:
sock.close()
这是我的计算机上运行的客户端程序。
通知 两个代码中的地址相同(我的树莓派的MAC地址),因为树莓派需要蓝牙适配器的地址才能使用(如果某些机器有多个接口(interface))并且客户端需要服务器蓝牙MAC地址才能启动套接字联系。在我的案例 3 中,您还需要移植您在树莓派中配置的端口以接收连接。
如果您需要任何其他信息,请告诉我。
制作一个实现套接字编程的应用程序,玩得开心!

关于android - 通过蓝牙接收消息到 raspberrypi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40897712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com