赞
踩
前提:在已经安装USB驱动的情况下,笔者已经安装了ch341驱动,linux已经能够检测到USB设备存在。
插入USB转蓝牙模块
stty -F \dev\ttyUSB0
尤其要关注USB的波特率属性,保证要与即将设置的蓝牙的波特率相同,这样传递数据才不会乱码。
stty -F \dev\ttyUSB0 115200 #修改usb的波特率
# 其余用法可以通过 stty --help 来查询
蓝牙属性是通过AT指令来查询,详细见跳转
其中有以下内容需要注意:
将USB转串口模块连接蓝牙模块。
cd \dev # 跳到设备文件夹下
ls -l # 列出所有设备文件
尤其注意ttyUSB0文件,如果存在就没问题。ttyUSB0文件是USB数据读写中间文件,向其中写数据,相当于发送数据;从其中读数据,相当于接收数据。
在将USB转蓝牙模块的Rx与Tx相连之后(相当于回环模式)之后,可以用下面的代码进行测试:
echo "hello" > ttyUSB0 # 用USB发送"hello"
cat ttyUSB0 # 查看USB的接收缓冲区内容,应该会看到"hello"
ttyUSB0的接受缓冲区是没有结尾的,如果cat的时候会一直输出,需要control+c终止。
虽然知道是对ttyUSB0进行读写,但是利用python自身的file类文件操作会出现很多问题,比如read时候会一直卡死,write时候接收方得到的是不可见字符等等,所以使用pyserial库。
import serial #导入模块 try: #端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等 portx="/dev/ttyUSB0" #波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200 bps=115200 #超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒) timex=5 # 打开串口,并得到串口对象 ser=serial.Serial(portx,bps,timeout=timex) # 写数据 # 如果使用中文必需使用gbk编码 result=ser.write("All is ready. 一切都准备好了。".encode("gbk")) print("写总字节数:",result) ser.close()#关闭串口 except Exception as e: print("---异常---:",e)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。