当前位置:   article > 正文

linux下USB转串口发送数据(Python方法)_linux usb转串口

linux usb转串口

前提:在已经安装USB驱动的情况下,笔者已经安装了ch341驱动,linux已经能够检测到USB设备存在。

1. 查看USB属性以及蓝牙属性

插入USB转蓝牙模块

stty -F \dev\ttyUSB0
  • 1

尤其要关注USB的波特率属性,保证要与即将设置的蓝牙的波特率相同,这样传递数据才不会乱码。

 stty -F \dev\ttyUSB0  115200 #修改usb的波特率
 # 其余用法可以通过 stty --help 来查询
  • 1
  • 2

蓝牙属性是通过AT指令来查询,详细见跳转
其中有以下内容需要注意:

  1. 蓝牙波特率需要与USB的波特率相同
  2. 查询的时候留意NAME与PWSD
  3. 需要将模式设置为Slave,因为手机或者电脑需要主动连接蓝牙HC-05,在配对角色中蓝牙模块属于从模式。

2. 查看USB设备文件

将USB转串口模块连接蓝牙模块。

cd \dev # 跳到设备文件夹下
ls -l # 列出所有设备文件
  • 1
  • 2

尤其注意ttyUSB0文件,如果存在就没问题。ttyUSB0文件是USB数据读写中间文件,向其中写数据,相当于发送数据;从其中读数据,相当于接收数据。
在将USB转蓝牙模块的Rx与Tx相连之后(相当于回环模式)之后,可以用下面的代码进行测试:

echo "hello" > ttyUSB0 # 用USB发送"hello"
cat ttyUSB0 # 查看USB的接收缓冲区内容,应该会看到"hello"
  • 1
  • 2

ttyUSB0的接受缓冲区是没有结尾的,如果cat的时候会一直输出,需要control+c终止。

3. 利用pyserial发送数据

虽然知道是对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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

异常处理的内容可以看跳转
更多pyserial用法见跳转

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/211195
推荐阅读
相关标签
  

闽ICP备14008679号