英飞凌
直播中

jackhui

12年用户 1085经验值
私信 关注

CYUSB3014接收数据异常的原因?

我使用python脚本调用cyusb.dll,发送数据正常,但是接收数据全是0;用脚本发送数据,用软件接收可以收到;软件发送数据,脚本接收到的全是0,应该是接收到数据了,不知道是哪里出错了,哪位大佬能给个建议。
python脚本:
import clr
import os
import sys
import time
import ctypes as c
import binascii

# 添加CyUSB.dll引用
dll_path = os.path.abspath("C:/Users/PDA/Desktop/cypress/CYUSB301/CyUSB.dll")
sys.path.append(dll_path)
clr.AddReference("C:/Users/PDA/Desktop/cypress/CYUSB301/CyUSB")

# 导入CyUSB命名空间
from CyUSB import USBDeviceList, CyConst, CyUSBDevice, CyBulkEndPoint,  CyControlEndPoint, CyIsocEndPoint

def find_device(vid, pid
    usb_devices = USBDeviceList(CyConst.DEVICES_CYUSB)
    device = None
    for dev in usb_devices:
        if dev.VendorID == vid and dev.ProductID == pid:
            device = dev
            break
    return device, usb_devices

def send_data(device, endpoint_addr, data
    endpoint = device.EndPointOf(endpoint_addr)
    if endpoint is None:
        print(f"无法找到端点地址: {endpoint_addr}")
        return
    buffer = bytearray(data)
    bytes_written = endpoint.XferData(buffer, len(buffer))
    print(f"数据发送成功, 发送字节数: {bytes_written}")
    return bytes_written

def receive_data(device, endpoint_addr, size
    endpoint = device.EndPointOf(endpoint_addr)
    if endpoint is None:
        print(f"无法找到端点地址: {endpoint_addr}")
        return
    buffer = bytearray(size)
    endpoint.TimeOut = 20
    bytes_read = endpoint.XferData(buffer, len(buffer))
    print(f"数据接收成功, 接收字节数: {bytes_read}")
    print(buffer)
    print(binascii.b2a_hex(buffer))
    return None#buffer[:bytes_read]

def main():
    # 替换为你的设备的VID和PID
    VID = 0x04B4  # Vendor ID
    PID = 0x00F1  # Product ID

    # 查找并配置设备
    usb_devices = USBDeviceList(CyConst.DEVICES_CYUSB)
    device = usb_devices[VID, PID]
   
    if device is None:
        print("设备未找到")
        return

    print("设备已连接")

    # 设置端点地址(替换为你的设备的端点地址)
    IN_ENDPOINT = 0x81  # 输入端点地址
    OUT_ENDPOINT = 0x01  # 输出端点地址

    # 发送数据到设备
    out_data = [0xaa, 0xbb, 0xcc, 0xdd, 0x0e, 0x06, 0x07, 0x08, 0x09,
                0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
                0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
                0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
                0x01, 0xa2, 0x03, 0x04, 0x05, 0xf6, 0xf7, 0x08, 0x09, 0x01, 0x02, 0x03]
    send_data(device, OUT_ENDPOINT, out_data)
   
    time.sleep(1)
   
    receive_data(device, IN_ENDPOINT, 1024)  # 假设接收64字节数据
    print(device.bHighSpeed)


    # 释放资源
    usb_devices.Dispose()

if __name__ == "__main__":
    main()

回帖(1)

郭大

2024-6-3 16:33:07
根据您提供的信息,我将尝试分析可能导致接收数据异常的原因,并提供一些建议。以下是我分析的步骤:

1. 首先,确保您的CyUSB3014设备已正确连接并被系统识别。检查设备管理器以确认设备状态。

2. 检查您的Python脚本是否正确调用了cyusb.dll。从您提供的代码片段来看,您已经成功地添加了CyUSB.dll的引用。但是,请确保您已经导入了CyUSB命名空间并正确使用了其功能。

3. 检查您的脚本是否正确地初始化了CyUSB3014设备。在调用任何发送或接收数据的功能之前,您需要确保设备已正确初始化。

4. 检查您的脚本在发送数据后是否正确地等待接收数据。可能存在发送和接收数据之间的时间差,导致接收到的数据不正确。

5. 检查您的脚本是否正确地处理了接收到的数据。确保您正确地读取了接收缓冲区,并将其转换为所需的数据格式。

6. 如果可能,请尝试使用其他编程语言或工具来测试CyUSB3014设备。这将帮助您确定问题是否出在Python脚本或cyusb.dll上。

7. 检查您的设备驱动程序是否为最新版本。过时的驱动程序可能会导致通信问题。

8. 如果问题仍然存在,您可以尝试联系Cypress技术支持以获取更多帮助。

希望这些建议能帮助您找到问题所在并解决接收数据异常的问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分