通过OBEX发送文件(lightblue/OBEXFTP)

1 投票
1 回答
2499 浏览
提问于 2025-04-17 04:25

我正在拼命尝试通过OBEX发送文件,使用的是Python。我有两个能用的代码,第一个是用lightblue,第二个是用obexftp。我们这里有两部安卓手机,一部是三星Galaxy S,另一部是HTC Desire HD(运行CyanogenMod 7.1)。我想从一台运行Ubuntu的电脑(有natty和lucid两个版本)向这两部手机发送文件。

问题是,每个代码只能和一部手机配合使用,而且有时候才能成功。

第一个代码是:

import lightblue
client=lightblue.obex.OBEXClient('MACADDR',CHANNEL)
client.connect()
client.put({'name':'file.png'},file('file.png',"rb"))
client.disconnect()

这个代码只能和Galaxy S配合使用。如果我尝试向Desire HD发送文件,就会出现:

<OBEXRespnse reason='Internal Server Error' code=0x50 (0xd0) headers={}>

第二个代码是:

import obexftp
cli=obexftp.client(obexftp.BLUETOOTH)
channel=obexftp.browsebt('MACADDR',obexftp.PUSH)
print channel #it is the correct channel, I've doubled checked
cli.connect ('MACADDR',channel)
cli.put_file("./file.png") #I also noticed you need to wait a second before this
cli.disconnect()

这个代码只能偶尔和Desire HD配合使用。

所有设备都是通过Ubuntu里的bluez-simple-agent脚本配对的。

我正在努力找出导致这种不一致的原因,但一直没有成功。如果有人能告诉我我哪里做错了,或者给我一个能真正工作的代码,我会很高兴。

1 个回答

1

OBEX这个东西常常会出问题,很多耳机和免提设备的制造商都花了很多钱来测试OBEX和其他蓝牙协议……也许这就是问题所在!你能试试更多的手机来测试一下吗?

撰写回答