通过OBEX发送文件(lightblue/OBEXFTP)
我正在拼命尝试通过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和其他蓝牙协议……也许这就是问题所在!你能试试更多的手机来测试一下吗?