Benewake(北醒) 单点TF系列雷达IIC模式下使用CH341芯片转接板读取雷达数据在Python上的例程

本文介绍了北醒单点系列雷达IIC模式下使用CH341芯片转接板读取雷达数据的例程
例程下载:
链接: https://pan.baidu.com/s/1KVJ-fINxUgKZny2Gdi8T2A
提取码: 6ax8
可支持雷达版本:TFluna\TFmini-S\TFmini-Plus\TF02-Pro
注:需要先确认雷达是否转换成IIC模式
具体转换方式请参考对应的雷达使用说明书
CH341转接板
在这里插入图片描述
例程测试系统:Windows 10
Python 版本:3.8 32位(64位会报错)

硬件接线:

请参照雷达使用说明书接线,请确认供电是否按照雷达使用说明书供电
ch341转接板请确认是否在IIC模式下,并已安装好对应的驱动
驱动下载地址
链接:https://pan.baidu.com/s/1itjyDsSWQRZeqSw11F1URw 提取码: wi4y

源码

#! /usr/bin/env python
#coding=utf-8
import os
import time
from ctypes import *

class USBI2C():
    ch341 = windll.LoadLibrary("CH341DLL.dll")
    def __init__(self, usb_dev = 0, i2c_dev = 0x20):
        self.usb_id   = usb_dev
        self.dev_addr = i2c_dev
        if USBI2C.ch341.CH341OpenDevice(self.usb_id) != -1:
            USBI2C.ch341.CH341SetStream(self.usb_id, 0x82)
            USBI2C.ch341.CH341CloseDevice(self.usb_id)
        else:
            print("USB CH341 Open Failed!")

    def read(self):
        if USBI2C.ch341.CH341OpenDevice(self.usb_id) != -1:
            
            rec  = (c_byte * 1)()
            ibuf = (c_byte * 9)()
            rec[0] = self.dev_addr
            
            USBI2C.ch341.CH341StreamI2C(self.usb_id, 1, rec, 9, ibuf)
            USBI2C.ch341.CH341CloseDevice(self.usb_id)
            
            return ibuf
        else:
            print("USB CH341 Open Failed!")
            return 0

    def write(self,cmd,size):
        if USBI2C.ch341.CH341OpenDevice(self.usb_id) != -1:
            tcmd = (c_byte * (size + 1))()
            ibuf = (c_byte * 1)()
            tcmd[0] = self.dev_addr
            
            for i in range (size):
                tcmd[i+1] = cmd[i] & 0xff

            USBI2C.ch341.CH341StreamI2C(self.usb_id, 6, tcmd, 0, ibuf)
            USBI2C.ch341.CH341CloseDevice(self.usb_id)
        else:
            print("USB CH341 Open Failed!")

if __name__ == "__main__":
    cmd = (c_byte * 5)(0x5a,0x05,0x00,0x01,0x60)
    size = sizeof(cmd) 
    while True:
        q = USBI2C()
        q.write(cmd,size)
        rec =q.read()
        dist    =((rec[2]&0xff)+(rec[3]&0xff)*256)
        strengh =((rec[4]&0xff)+(rec[5]&0xff)*256)
        temp    =((rec[6]&0xff)+(rec[7]&0xff)*256)/8-256
        print("Dist:",dist,"Strengh:",strengh,"Temp:",temp)
  
        time.sleep(0.05) #50ms
    

结果输出

请添加图片描述

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值