Benewake TFmini-S\TFmimi Plus\TFluna\TF02-Pro\TF03雷达在PYTHON上的例程
发布日期:2022-02-10 13:35:58 浏览次数:43 分类:技术文章

本文共 3575 字,大约阅读时间需要 11 分钟。

测试环境

Window 10、Python 3.8.6

需求库

numpy pyserial

下载与Python版本匹配的pyserial与numpy模块,将其源文件复制至Python文件目录下,随后执行 ‘pip install 模块路径’指令(需要正确设置pip环境才可安装)

pyserial 安装示例

例程

#创建日期:2020年10月10日#版本:初版#此程序对应北醒TF系列默认配置下串口版本有效#此程序只提供参考和学习# -*- coding: utf-8 -*-import serial.tools.list_portsimport timeimport numpy as npser = serial.Serial()ser.port = 'COM55'    #设置端口ser.baudrate = 115200 #设置雷达的波特率def getTFminiData():   while True:      count = ser.in_waiting #获取接收到的数据长度      if count > 8:         recv = ser.read(9)#读取数据并将数据存入recv         #print('get data from serial port:', recv)         ser.reset_input_buffer()#清除输入缓冲区         if recv[0] == 0x59 and recv[1] == 0x59:  # python3            distance = np.int16(recv[2] + np.int16(recv[3] << 8))            strength = recv[4] + recv[5] * 256            temp = (np.int16(recv[6] + np.int16(recv[7] << 8)))/8-256 #计算芯片温度            print('distance = %5d  strengh = %5d  temperature = %5d' % (distance, strength, temp))            ser.reset_input_buffer()         if recv[0] == 'Y' and recv[1] == 'Y':  # python2 //此处标示出文件读取成功            lowD = int(recv[2].encode('hex'), 16)            highD = int(recv[3].encode('hex'), 16)            lowS = int(recv[4].encode('hex'), 16)            highS = int(recv[5].encode('hex'), 16)            lowT = int(recv[6].encode('hex'), 16)            highT = int(recv[7].encode('hex'), 16)            distance = np.int16(lowD + np.int16(highD << 8))            strength = lowS + highS * 256            temp = (np.int16(lowD + np.int16(highD << 8)))/8-256 #计算芯片温度            print('distance = %5d  strengh = %5d  temperature = %5d' % (distance, strength, temp))      else:         time.sleep(0.005) #50msif __name__ == '__main__':   try:      if ser.is_open == False:         try:            ser.open()         except:            print('Open COM failed!')      getTFminiData()   except KeyboardInterrupt:  # Ctrl+C 停止输出数据      if ser != None:         ser.close()

输出如下:

distance =   205  strengh =  5224  temperature =    52distance =   205  strengh =  5231  temperature =    52distance =   205  strengh =  5230  temperature =    52distance =   205  strengh =  5218  temperature =    52distance =   205  strengh =  5226  temperature =    52distance =   205  strengh =  5221  temperature =    52distance =   205  strengh =  5227  temperature =    52distance =   205  strengh =  5224  temperature =    52distance =   205  strengh =  5223  temperature =    52distance =   205  strengh =  5223  temperature =    52distance =   205  strengh =  5226  temperature =    52distance =   205  strengh =  5225  temperature =    52

运行过程中可能存在的问题:

1、

Traceback (most recent call last):  File "C:/Users/Administrator/AppData/Local/Programs/Python/Python37/test.py", line 1, in 
import serial.tools.list_portsModuleNotFoundError: No module named 'serial'

解决办法:安装Python-serial 模块

2、

Traceback (most recent call last):  File "C:/Users/Administrator/Desktop/test1.py", line 3, in 
import numpy as npModuleNotFoundError: No module named 'numpy'

解决办法:安装numpy模块

3、

Traceback (most recent call last):  File "C:/Users/Administrator/Desktop/test1.py", line 39, in 
getTFminiData() File "C:/Users/Administrator/Desktop/test1.py", line 11, in getTFminiData count = ser.in_waiting #获取接收到的数据长度 File "E:\Python\lib\site-packages\serial\serialwin32.py", line 259, in in_waiting raise SerialException("ClearCommError failed ({!r})".format(ctypes.WinError()))serial.serialutil.SerialException: ClearCommError failed (OSError(9, '句柄无效。', None, 6))

解决办法:设置端口名称为实验设备端口号

例:本次实验中接收端口号为COM55,则修改设置端口语句为ser.port = 'COM55'
在这里插入图片描述

转载地址:https://blog.csdn.net/zoran_wu/article/details/109000592 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Arraylist 与 LinkedList解析和区别
下一篇:北醒激光雷达模组 资料汇总

发表评论

最新留言

很好
[***.229.124.182]2024年03月25日 14时44分39秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章