首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BeagleBone和Python的蓝牙串行问题

BeagleBone和Python的蓝牙串行问题
EN

Stack Overflow用户
提问于 2012-06-17 00:18:22
回答 2查看 1.3K关注 0票数 3

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

BB连接到TX和RX线路上的Bluesmirf Silver。

我用Python编写了一个处理串行通信的类。这在BB和Arduino之间的通信中工作得很好,所以我非常确信我已经处理了引脚上的设置,多路复用模式等等。

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

在使用Serial() (即PySerial)将self.serPort定义为串行端口后,我使用以下代码发送文本(作为字符串‘sendStr’传递):

代码语言:javascript
运行
复制
self.serPort.write(sendStr.encode('utf-8', 'replace'))

我试着用'ascii‘代替'utf-8’

在同一个程序中,我以同样的方式将相同的字符串发送到Arduino,Arduino回显它,一切都在那里正常工作。它只是通过蓝魔的东西,让我感到悲哀。

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

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2012-09-01 12:31:15

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

另一方面,需要对蓝色模块进行配置,使其本地通用异步收发器接口(链接到您的BeagleBone)的波特率与后者相同。为此,请参阅漫游网络用户手册中的命令指南(目前可在here中找到)。根据数据表,您需要:

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

$$$ (不发送ASCII13和10个字符)

(2)发送命令:

SU,19 (按ENTER,即发送ASCII13和10个字符)

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

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

票数 1
EN

Stack Overflow用户

发布于 2013-09-14 02:38:48

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

代码语言:javascript
运行
复制
import serial as s
device = "/dev/tty01"
s.Serial(device, 4800)

BBB中USB端口的名称是什么?或者您是如何在BBB中列出USB端口的?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11065117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档