# CPCI-PXI-Device-Drive **Repository Path**: Unity3dream/cpci-pxi-device-drive ## Basic Information - **Project Name**: CPCI-PXI-Device-Drive - **Description**: 通过WinDriver自动生成的驱动进行二次封装,并制作了Demo。 该软件可以操作寄存器、DMA。 - **Primary Language**: C# - **License**: BSD-3-Clause - **Default Branch**: Development - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-08-12 - **Last Updated**: 2022-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CPCI-PXI-Device #### 介绍 通过JungoWinDriver1021自动生成的驱动进行二次封装,并制作了Demo。 该软件可以操作寄存器、DMA。 #### 软件架构 软件架构说明 #### 安装教程 1. 运行需要安装JungoWinDriver10.21 64位版本软件 2. 运行环境.NET4.7.2 3. XXX #### 使用说明 ![输入图片说明](%E7%A4%BA%E4%BE%8B%E5%9B%BE%E7%89%87/1.png) // 摘要: // 设备列表集合 public static List pciDeviceList { get; } // 摘要: // 根据设备集合索引关闭某个设备 // 参数: // iSelectedIndex: // 所有符合条件的设备集合索引 // 返回结果: // 为True时成功;为false时失败 public static bool DeviceClose(int iSelectedIndex); // 摘要: // 根据设备VID,DID关闭某个设备 // 参数: // VID: // 厂商编号 // DID: // 设备编号 // 返回结果: // 为True时成功;为false时失败 public static bool DeviceClose(uint VID, uint DID); // 摘要: // 根据设备集合索引使能某个设备 // 参数: // iSelectedIndex: // 所有符合条件的设备集合索引 // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint DeviceOpen(int iSelectedIndex); // 摘要: // 根据设备VID,DID使能某个设备 // 参数: // VID: // 厂商编号 // DID: // 设备编号 // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint DeviceOpen(uint VID, uint DID); // 摘要: // 格式转换 // 参数: // obj: // mode: public static string DisplayHexBuffer(object[] obj, int mode); // 摘要: // 释放资源 public static void Dispose(); // 摘要: // 初始化设备方法参数为16进制写法,默认参数为0显示所有符合条件的ID,例如DeviceInit(0XC514,0); // 参数: // VENDOR_ID: // 厂商ID // DEVICE_ID: // 设备ID // 返回结果: // 所有符合条件的设备集合 public static uint InitScanDevice(uint VENDOR_ID = 0, uint DEVICE_ID = 0); // 摘要: // 读32位寄存器 // 参数: // VID: // 厂商ID // DID: // 设备ID // addr: // offset // Rdata: // 返回的32位数据 // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint ReadAddr32(uint VID, uint DID, uint addr, ref uint Rdata); // // 摘要: // 读32位寄存器 // 参数: // SlotID: // 设备集合索引位置 // addr: // offset // Rdata: // 返回的32位数据 // 返回结果: // 为True时成功;为false时失败 public static uint ReadAddr32(int SlotID, uint addr, ref uint Rdata); // 摘要: // DMA读取 // 参数: // SlotID: // 索引号 // addressHEX: // 首地址16进制格式 // DMANumBytesHEX: // 偏移量16进制格式(偏移量由读取位数决定) // m_u32Data: // 读取缓存数组 // AUTOINC: // 是否自动递增地址(默认True递增) // m_dwBar: // 读取的Bar区(默认读取 Bar 2) // MODE: // 读取格式(MODE=1为8位读取,MODE=2为16位读取,MODE=4为32位读取,MODE=8为64位读取;默认为32位读取) // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint ReadAddrDMA(int SlotID, uint addressHEX, uint DMANumBytesHEX, ref uint[] m_u32Data, bool AUTOINC = true, uint m_dwBar = 2, uint MODE = 4); // 摘要: // DMA读取 // 参数: // VID: // 厂商ID // DID: // 设备ID // addressHEX: // 首地址16进制格式 // DMANumBytesHEX: // 偏移量16进制格式(偏移量由读取位数决定) // m_u32Data: // 读取缓存数组 // AUTOINC: // 是否自动递增地址(默认True递增) // m_dwBar: // 读取的Bar区(默认读取 Bar 2) // MODE: // 读取格式(MODE=1为8位读取,MODE=2为16位读取,MODE=4为32位读取,MODE=8为64位读取;默认为32位读取) // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint ReadAddrDMA(uint VID, uint DID, uint addressHEX, uint DMANumBytesHEX, ref uint[] m_u32Data, bool AUTOINC = true, uint m_dwBar = 2, uint MODE = 4); // 摘要: // DMA读取 // 参数: // SlotID: // 索引号 // addressHEX: // 首地址16进制格式 // DMANumBytesHEX: // 偏移量16进制格式(偏移量由读取位数决定) // m_u32Data: // 读取缓存数组 // AUTOINC: // 是否自动递增地址(默认True递增) // m_dwBar: // 读取的Bar区(默认读取 Bar 2) // MODE: // 读取格式(MODE=1为8位读取,MODE=2为16位读取,MODE=4为32位读取,MODE=8为64位读取;默认为32位读取) // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint ReadAddrDMA(int SlotID, string addressHEX, string DMANumBytesHEX, ref uint[] m_u32Data, bool AUTOINC = true, uint m_dwBar = 2, uint MODE = 4); // // 摘要: // 写32位寄存器 // 参数: // SlotID: // 设备集合索引位置 // Wm_dwOffset: // offset // W_u32Data: // 写入的32位数据 // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint WriteAddr32(int SlotID, uint Wm_dwOffset, uint W_u32Data); // 摘要: // 写32位寄存器 // 参数: // VID: // 厂商ID // DID: // 设备ID // Wm_dwOffset: // offset // W_u32Data: // 写入的32位数据 // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint WriteAddr32(uint VID, uint DID, uint Wm_dwOffset, uint W_u32Data); // 摘要: // DMA写操作 // 参数: // SlotID: // 索引号 // addressHEX: // 首地址16进制格式 // DMANumBytesHEX: // 偏移量16进制格式(偏移量由读取位数决定) // m_u32Data: // 待写入缓存数组 // AUTOINC: // 是否自动递增地址(默认True递增) // m_dwBar: // 读取的Bar区(默认读取 Bar 2) // MODE: // 读取格式(MODE=1为8位读取,MODE=2为16位读取,MODE=4为32位读取,MODE=8为64位读取;默认为32位读取) // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint WriteAddrDMA(int SlotID, string addressHEX, string DMANumBytesHEX, uint[] m_u32Data, bool AUTOINC = true, uint m_dwBar = 2, uint MODE = 4); // 摘要: // DMA写操作 // 参数: // SlotID: // 索引号 // addressHEX: // 首地址16进制格式 // DMANumBytesHEX: // 偏移量16进制格式(偏移量由读取位数决定) // m_u32Data: // 待写入缓存数组 // AUTOINC: // 是否自动递增地址(默认True递增) // m_dwBar: // 读取的Bar区(默认读取 Bar 2) // MODE: // 读取格式(MODE=1为8位读取,MODE=2为16位读取,MODE=4为32位读取,MODE=8为64位读取;默认为32位读取) // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint WriteAddrDMA(int SlotID, uint addressHEX, uint DMANumBytesHEX, uint[] m_u32Data, bool AUTOINC = true, uint m_dwBar = 2, uint MODE = 4); // 摘要: // dma写操作 // 参数: // VID: // 厂商ID // DID: // 设备ID // addressHEX: // 首地址16进制格式 // DMANumBytesHEX: // 偏移量16进制格式(偏移量由读取位数决定) // m_u32Data: // 待写入缓存数组 // AUTOINC: // 是否自动递增地址(默认True递增) // m_dwBar: // 读取的Bar区(默认读取 Bar 2) // MODE: // 读取格式(MODE=1为8位读取,MODE=2为16位读取,MODE=4为32位读取,MODE=8为64位读取;默认为32位读取) // 返回结果: // 操作成功返回0,失败则返回错误代码 public static uint WriteAddrDMA(uint VID, uint DID, uint addressHEX, uint DMANumBytesHEX, uint[] m_u32Data, bool AUTOINC = true, uint m_dwBar = 2, uint MODE = 4); #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)