BeagleBone&;蓝牙串行问题;python

BeagleBone&;蓝牙串行问题;python,python,bluetooth,serial-port,Python,Bluetooth,Serial Port,我正在尝试在BeagleBone和我的笔记本电脑之间建立串行连接。这类似于我之前在Arduino和笔记本电脑上成功使用的设置。问题是,虽然机器之间显然存在信号传递,但输出似乎已损坏 BB与TX和RX线路上的Bluesmirf银线相连 我用Python编写了一个类来处理串行通信。这在BB和Arduino之间通信时效果很好,所以我确信我已经处理好了引脚、mux模式等的设置 但同样的代码,当通过Bluesmirf时无法工作。当所有设置为19200波特8-N-1时,从BB发送到笔记本电脑的文本以一系列0

我正在尝试在BeagleBone和我的笔记本电脑之间建立串行连接。这类似于我之前在Arduino和笔记本电脑上成功使用的设置。问题是,虽然机器之间显然存在信号传递,但输出似乎已损坏

BB与TX和RX线路上的Bluesmirf银线相连

我用Python编写了一个类来处理串行通信。这在BB和Arduino之间通信时效果很好,所以我确信我已经处理好了引脚、mux模式等的设置

但同样的代码,当通过Bluesmirf时无法工作。当所有设置为19200波特8-N-1时,从BB发送到笔记本电脑的文本以一系列0xE0字符的形式到达。改变波特率(是的,我很小心地在两端改变它)可以改变笔记本电脑上显示的内容——有时什么都不能通过,有时显然是随机的。不过,在大多数情况下,字节似乎具有较高的值。在19200年,显示通过的字节数比发送的字符数多2或3个字节

使用serial()(即PySerial)将self.serPort定义为串行端口后,我使用以下命令发送文本(作为字符串“sendStr”传递):

我试着用“ascii”代替“utf-8”

在同一个程序中,我以同样的方式将相同的字符串发送到Arduino,Arduino会将其回显,并且在那里一切正常。正是那些通过蓝军的东西让我悲伤

(作为记录,在笔记本电脑MacBook Pro上,我使用CoolTerm发送和接收。在我之前的设置中,使用Arduino通过Bluesmirf与笔记本电脑通信,笔记本电脑运行处理草图。我在BB设置中尝试了相同的草图,但仍然没有乐趣)


有什么想法吗?

嗯,您的问题似乎是由于您忽略了配置BlueSMIRF模块本身。事实上,您在计算机端指定的波特率实际上并不重要,因为您可以使用任何波特率,并且它不必与BeagleBone上使用的波特率相同(尽管如果它高于Beagle上的波特率,如果您不够小心,可能会出现缓冲区溢出错误)

另一方面,蓝色模块需要进行配置,以便其本地UART接口(链接到BeagleBone)的波特率与后者相同。要执行此操作,请参阅Roving Network用户手册(当前可找到)中的命令指南。 根据数据表,您需要:

(1) 进入命令模式(在通电后的前60秒内执行此操作,您可以从PC到蓝牙模块远程执行所有配置):

$$$
(不要发送ASCII 13和10字符)

(2) 发送命令:

SU,19
(按ENTER键,即发送ASCII 13和10字符)

这会将BlueSMIRF上的RN-42模块设置为19200波特,与BeagleBone相同。您应该停止看到看到的错误(从您的评论中我可以推断,这可能是由于BlueSMIRF波特率设置为57.6 K)


请注意,配置完模块后,需要重置模块。

您是如何通过USB连接蓝牙的?您必须使用如下代码:

import serial as s
device = "/dev/tty01"
s.Serial(device, 4800)
BBB中USB端口的名称是什么?或者您是如何在BBB中列出USB端口的

import serial as s
device = "/dev/tty01"
s.Serial(device, 4800)