我正在尝试访问通过蓝牙从 Neurosky Mindset 传输的串行数据流。这是使用此处提到的 ThinkGear 通信协议(protocol)的一个步骤:
http://developer.neurosky.com/docs/doku.php?id=which_api_is_right_for_me
有几个程序应该为我执行此操作(Puzzlebox、Mindstream 等),我要么遇到了明显无法解决的依赖问题,要么它们没有完全按照我想要的方式执行操作。
我能够使用blueman(特别是blueman-manager)将Mindset与我的机器配对我能够将串行端口连接到/dev/rfcomm0。我首先想知道的是:如何从这个数据流中读取数据。如果我在设备上运行 sdptool 记录,我会得到以下输出:
服务名称:Dev B 服务记录句柄:0x10005 服务类别 ID 列表: “串行端口”(0x1101) 协议(protocol)描述符列表: “L2CAP”(0x0100) “RFCOMM”(0x0003) channel :3 语言基础属性列表: 代码_ISO639:0x656e 编码:0x6a 基本偏移量:0x100
(我得到的不止这些,但这就是我想要访问的服务。)
我想我的主要问题是:如果 cat/dev/rfcomm0 没有显示任何内容,是否意味着没有数据正在传输?问题是它没有显示,因为它是原始的吗?是否有一个命令可以保证在传输串行数据时向我提供任何串行数据?是否有一个蓝牙标准命令可以启动SPP传输(我已经搜索了bluez的文档,但没有太多成果)?
我已经以 root 和常规身份运行所有内容,因此似乎无法解决问题。
任何帮助将不胜感激。
最佳答案
好的,花了一些时间才使 MindSet 可靠地连接起来。
命令行蓝牙工具或多或少没什么用。读取心态的唯一可重复的方法(一旦通过 BlueMan 配对)就是这样做:
bash$ sudo /etc/init.d/bluetooth stop
bash$ sudo /etc/init.d/bluetooth start
bash$ sudo rfcomm connect /dev/rfcomm0 00:13:##:##:##:## 1
bash$ ./mindset_capture.rb
...但是在收到有效的 ThinkGear 数据包之前就达到了 EOF。
而是使用 Blueman 进行配对。
设置:
- bash$ blueman-manager &
- 在 MindSet 上启用配对
- 点击 BlueMan 中的搜索
- 选择 MindSet 设备
- 点击“配对”
- 输入 PIN (0000)
连接:
- bash$ blueman-manager &
- 右键单击 MindSet 并选择“连接到:Dev B”(串行连接器图标)
- 运行捕获实用程序(例如 bash$ ./mindset_capture.rb)
- 右键单击 MindSet 并选择“断开连接:Dev B”
- 退出 Blueman
重新启动蓝牙以释放 rfcomm0(谢谢 BlueMan!)
bash$ sudo/etc/init.d/bluetooth stop; sudo/etc/init.d/bluetooth start
拥有一个完全命令行驱动的解决方案不是更好吗?是的,是的,会的。不幸的是,Linux 上的蓝牙堆栈似乎处于 GUI 工具和命令行工具不合作的状态——并且命令行工具不支持配对(*更新 - 请参阅评论)。
从设备读取数据非常简单。它连续传输字节,因此要从中读取数据,直到遇到两个 SYNC 字节 (0xAA),这标志着数据包的开始。数据包的结构在 MDT 中提供的 mindset_communications_protocol.pdf 中进行了描述。
用于读取 MindSet 的 Ruby 代码:
require 'rubygems' # gem install serialport
require 'serialport'
conn = SerialPort.new "/dev/rfcomm0", 57600
while true
next if conn.readbyte != 0xAA
next if conn.readbyte != 0xAA
while true
c = conn.readbyte
break if c == 0xAA
puts "%02X" % c
end
end
它并不完美,因为它没有进行真正的解析,但这就是从设备读取字节的方式。
关于linux - 在 Linux 中通过蓝牙访问 Neurosky Mindset 的串行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15799076/