我正在尝试在BeagleBone和笔记本电脑之间建立串行连接。这类似于我之前成功使用Arduino& amp; amp;笔记本电脑。问题是,虽然机器之间明显传递信号,但输出似乎已损坏。
BB连接到TX&上的Bluesmirf Silver。 RX线。
我用Python编写了一个类来处理串行通信。这在BB和Arduino之间进行通信时工作正常,所以我很确信我已经处理了引脚,多路复用模式等设置。
但同样的代码,通过Bluesmirf无法正常工作。将所有内容设置为19200波特8-N-1,从BB发送到笔记本电脑的文本将作为一系列0xE0字符到达。改变波特率(是的,我小心两端改变它)可以改变笔记本电脑上显示的内容 - 有时没有任何东西可以通过,有时它显然是随机的。但是,大多数情况下,字节似乎具有较高的值。在19200,显示的字节数比发送的字符数多两到三个字节。
使用Serial()(即PySerial)将self.serPort定义为串口,我使用以下命令发送文本(以字符串'sendStr'形式传递):
self.serPort.write(sendStr.encode('utf-8', 'replace'))
我尝试过使用'ascii'代替'utf-8'
在同一个程序中,我以相同的方式向Arduino发送相同的字符串,后者回复它,一切正常。这只是通过Bluesmirf引起我悲伤的东西。
(为了记录,在笔记本电脑上,MacBook Pro,我正在使用CoolTerm进行发送和接收。通过我之前的设置,Arduino通过Bluesmirf与笔记本电脑进行通信,笔记本电脑正在运行Processing sketch。我用BB设置尝试了相同的草图,但仍然没有喜悦)。
有什么想法吗?
答案 0 :(得分:1)
好吧,您的问题似乎是由于您省略了配置BlueSMIRF模块本身的事实。实际上,您在计算机端指定的波特率并不重要,因为您可以使用任何波特率,并且它不必与BeagleBone上使用的波特率相同(尽管它高于波特率)如果你不够小心,你可能会遇到缓冲区溢出错误。
另一方面,需要配置蓝色模块,以使其本地UART接口(与BeagleBone链接)的波特率与后者相同。为此,请参阅Roving Network的用户手册(当前可以找到here)中的命令指南。 根据数据表,您需要:
(1)进入命令模式(在开机后的前60秒内执行此操作,您可以从PC远程完成所有配置到蓝牙模块):
$$$
(不要发送ASCII 13& 10字符)
(2)发送命令:
SU,19
(按ENTER键,即发送ASCII 13& 10字符)
这会将您的BlueSMIRF上的RN-42模块设置为19200波特,与BeagleBone相同。您应该停止看到您看到的错误(从我的评论中可以推断出,可能是由于BlueSMIRF波特率设置为57.6 K)。
请注意,完成配置后,需要重置模块。
答案 1 :(得分:0)
你是如何通过USB连接蓝牙的?您必须使用以下代码:
import serial as s
device = "/dev/tty01"
s.Serial(device, 4800)
BBB中USB端口的名称是什么?或者你是如何在BBB中列出USB端口的?