请大家帮我评估一下这个功能的可行性,谢谢

berniechen0123 2008-10-30 05:37:09
我是蓝牙方面的菜鸟,下面描述如果有不专业的地方,请见谅
简单介绍一下设备,主机通过串口连接蓝牙模块,模块与主机通信有两种模式,命令模式和传输模式。传输模式是将主机端原始数据直接透传给远端(例如pc)。命令模式是主机按照蓝牙模块能够识别的帧格式发送指定命令,控制蓝牙模块。(例如,发送一个命令要求建立spp连接,蓝牙模块收到命令后开始建立连接)
蓝牙模块协议层只支持RFCOMM.现在要求设备能够发送文件到PC机的指定文件夹(pc)。这个是不是需要obex协议层支持?profile实现到哪一个够用,GOEP?OPP?FTP?
如果我移植一个obex协议到我的设备上,是否可行。但我最担心的是,只移植一个obex很有可能不够,因为不管是命令模式还是传输模式,我怎样才能做到让蓝牙模块对主机端符合obex协议规范的包进一步封装呢?换句话说,我好像没办法让蓝牙模块的协议栈和主机端的obex结合起来
请大家帮忙想想还有什么办法,谢谢
...全文
84 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
berniechen0123 2008-11-04
  • 打赏
  • 举报
回复
谢谢你热心的帮助
berniechen0123 2008-11-03
  • 打赏
  • 举报
回复
你所说的定制是什么意思?
sdp应该不是问题,我已经实验了。我按照模块中提供的命令可以随意修改record.然后用在pc端刷新服务,可以看见我的设备支持opp.
opp的连接过程我不熟悉,这个实在头疼,也没有抓包工具,请问你知道有什么免费的蓝牙协议分析软件吗。
alucardpj 2008-11-03
  • 打赏
  • 举报
回复
对了,你可以找一台linux pc,用手机什么的给它发个文件,发送过程中在linux pc上面用bluez的hcidump看数据包,了解一下流程细节。
alucardpj 2008-11-03
  • 打赏
  • 举报
回复
你是在什么环境下开发?如果主机是Linux,可以用bluez的hcidump直接看发出去和接收到的数据包。不知道一些sniff软件可不可以达到要求。应该需要驱动支持,因为我找过一般的sniff软件只支持网卡类型的sniff,对bluetooth dongle没办法。
opp协议过程就是建立rfcomm连接,然后连接双方按照角色分为client和server,在你的应用中应该远端pc作为server,你要开发的这一端作为client,首先在你开发的这一端搜索远端pc的sdp记录找到opp的rfcomm连接channel,然后按照channel号建立连接。连接建立以后流程如下:
client发送"connect request",server回复“ok”
client发送"put request",在put request中将数据包装在里面,把数据发送到server端
最后client发送"disconnect request",断开与client的连接。
具体协议细节可以去参照obex协议文档。
berniechen0123 2008-10-31
  • 打赏
  • 举报
回复
自己顶一下
alucardpj 2008-10-31
  • 打赏
  • 举报
回复
蓝牙模块内部可不可以定制?如果可以的话就用我说的那种方法
如果不可以定制,那你只能在使用传输模式传送数据的时候,在主机侧先对要传送的数据作obex封装。然后把封装过的数据作为实际数据传送过去。
但是有一点问题,如果和远端主机只能建立spp连接,sdp里面没有记录,对方不会把这些数据当作opp的data来处理。
berniechen0123 2008-10-31
  • 打赏
  • 举报
回复
现在主要问题是蓝牙模块协议层只支持到RFCOMM,不支持obex,所以我想在主机加一层obex协议,例如移植openobex
但现在主要问题,蓝牙模块和主机之间通信时本身对数据又加了一层自己的封装。
最理想的情况,蓝牙模块对收到的rfcomm层的数据只加封装,不改动内部的内容,然后传到主机端。
alucardpj 2008-10-31
  • 打赏
  • 举报
回复
描述是有些不太清楚,我的理解是不是这样
主机--(串口)--蓝牙模块--(无线)--远端pc

按照你的要求,需要在蓝牙模块上rfcomm层之上再加上obex支持,profile用opp或者ftp都可以,看你远端pc支持哪一种,保证两边协议匹配就行了。goep属于框架式的规范,实际使用时用不上

obex只需要在无线传输的时候使用就行了,是作为与远端pc通信时候的协议,蓝牙模块和主机之间没必要也用obex,你使用传输模式将数据发送到蓝牙模块然后蓝牙模块按照Obex协议封装以后发送给远端主机就可以了。

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧