相关文章推荐
卖萌的单车  ·  Mismatch between ...·  1 年前    · 
爱运动的热带鱼  ·  天地图API·  1 年前    · 
淡定的橙子  ·  JS事件 ...·  1 年前    · 
买醉的机器猫  ·  使用 Visual Studio ...·  2 年前    · 
首发于 python

使用CH341 I2C连接北醒TF系列I2C模式 Python例程

目录

硬件接线:

源码

结果输出

本文介绍了北醒单点系列雷达IIC模式下使用CH341芯片转接板读取雷达数据的例程

例程下载:

链接: pan.baidu.com/s/1KVJ-fI

提取码: 6ax8

可支持雷达版本:TFluna\TFmini-S\TFmini-Plus\TF02-Pro

注:需要先确认雷达是否转换成IIC模式

具体转换方式请参考对应的雷达使用说明书

CH341转接板


例程测试系统:Windows 10

Python 版本:3.8 32位(64位会报错)


硬件接线:

请参照雷达使用说明书接线,请确认供电是否按照雷达使用说明书供电

ch341转接板请确认是否在IIC模式下,并已安装好对应的驱动

驱动下载地址

链接: pan.baidu.com/s/1itjyDs 提取码: 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)