本文介绍了北醒单点系列雷达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
源码
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)
结果输出
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)