Python在Windows下操作CH341DLL

本文介绍了一个使用 Python 实现的 USB 到 I2C 通信的类。该类利用 CH341 芯片进行设备通信,通过 ctypes 库调用 CH341DLL.dll 实现对 I2C 设备的读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 #! /usr/bin/env python
 2 #coding=utf-8
 3 import os
 4 import time
 5 from ctypes import *
 6 
 7 class USBI2C():
 8     ch341 = windll.LoadLibrary("CH341DLL.dll")
 9     def __init__(self, usb_dev = 0, i2c_dev = 0x5c):
10         self.usb_id   = usb_dev
11         self.dev_addr = i2c_dev
12         if USBI2C.ch341.CH341OpenDevice(self.usb_id) != -1:
13             USBI2C.ch341.CH341SetStream(self.usb_id, 0x82)
14             USBI2C.ch341.CH341CloseDevice(self.usb_id)
15         else:
16             print("USB CH341 Open Failed!")
17 
18     def read(self, addr):
19         if USBI2C.ch341.CH341OpenDevice(self.usb_id) != -1:
20             obuf = (c_byte * 2)()
21             ibuf = (c_byte * 1)()
22             obuf[0] = self.dev_addr
23             obuf[1] = addr
24             USBI2C.ch341.CH341StreamI2C(self.usb_id, 2, obuf, 1, ibuf)
25             USBI2C.ch341.CH341CloseDevice(self.usb_id)
26             return ibuf[0] & 0xff
27         else:
28             print("USB CH341 Open Failed!")
29             return 0
30 
31     def write(self, addr, dat):
32         if USBI2C.ch341.CH341OpenDevice(self.usb_id) != -1:
33             obuf = (c_byte * 3)()
34             ibuf = (c_byte * 1)()
35             obuf[0] = self.dev_addr
36             obuf[1] = addr
37             obuf[2] = dat & 0xff
38             USBI2C.ch341.CH341StreamI2C(self.usb_id, 3, obuf, 0, ibuf)
39             USBI2C.ch341.CH341CloseDevice(self.usb_id)
40         else:
41             print("USB CH341 Open Failed!")

 

转载于:https://www.cnblogs.com/lyuyangly/p/9025122.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值