如何在python中使用pywinusb读取数据

时间:2019-07-17 02:19:49

标签: python usb hid

我无法在python中使用pywinusb读取隐藏数据。

我提到了此页面(https://www.reddit.com/r/learnpython/comments/3z346p/reading_a_usb_data_stream_on_windows/

我有问题。

def sample_handler(数据):     print(“原始数据:{0}”。格式(数据))

sample_handler函数需要数据。

但是

device.set_raw_data_handler(sample_handler)

此代码不将数据提供给sample_handler。不是错误吗?

和下面是我的代码。 我的代码没有抓住read_handler函数。 我该如何解决。你能帮我吗?

from pywinusb import hid
import time

class PIC18f:
    def __init__(self, VID = 0x04D8, PID=0x003f):

        filter = hid.HidDeviceFilter(vender_id = VID, product_id = PID)
        self.devices = filter.get_devices()
        self.device = self.devices[0]
        self.device.open()


    def write(self, args):

        out_report = self.device.find_output_reports()
        out_report[0].set_raw_data(args)
        out_report[0].send()
        time.sleep(1)

    def read_handler(self, data):
        print("Raw data: {0}".format(data))
        print("done")

    def I2C_Init(self):

        buf = [0x00]
        buf = buf + [0 for i in range(65-len(buf))]

        buf[1] = 0xF1
        buf[2] = 0x1D
        self.write(buf)
        self.device.set_raw_data_handler(read_handler)

test = PIC18f()
test.I2C_Init()

这是错误。

回溯(最近通话最近):   在第35行中输入文件“ d:/ 1。Siliconmitus / python / test2.py”     test.I2C_Init()   I2C_Init中的文件“ d:/ 1。Siliconmitus / python / test2.py”,第32行     self.device.set_raw_data_handler(read_handler) NameError:名称“ read_handler”未定义

1 个答案:

答案 0 :(得分:1)

  1. read_handler未定义,因为应该在I2C_Init内部定义“ read_handler”。

  2. 以下是示例:

from pywinusb import hid
filter = hid.HidDeviceFilter(vendor_id = 0x0001, product_id = 0x0002)
devices = filter.get_devices()

device = devices[0]

def readData(data): 
    print(data) 
    return None 
    
device.set_raw_data_handler(readData) 
device.open()