using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace USB2XXX { class USB2GPIO { //定义函数返回错误代码 public const Int32 GPIO_SUCCESS = (0); //函数执行成功 public const Int32 GPIO_ERR_NOT_SUPPORT = (-1); //适配器不支持该函数 public const Int32 GPIO_ERR_USB_WRITE_FAIL = (-2); //USB写数据失败 public const Int32 GPIO_ERR_USB_READ_FAIL = (-3); //USB读数据失败 public const Int32 GPIO_ERR_CMD_FAIL = (-4); //命令执行失败 /** * @brief 将GPIO引脚设置为输入模式 * @param DevHandle 设备句柄 * @param PinMask 需要设置为输入模式的引脚,每个bit位代表一个引脚,对应bit位为1时改引脚对设置有效,最低位为P0 * @param PuPd 0-浮空输入,无上拉或者下拉,1-上拉输入,2-下拉输入 * @retval 函数执行状态,小于0函数执行出错 */ [DllImport("USB2XXX.dll")] public static extern Int32 GPIO_SetInput(Int32 DevHandle,UInt32 PinMask, Byte PuPd); /** * @brief 将GPIO引脚设置为输出模式 * @param DevHandle 设备句柄 * @param PinMask 需要设置为输出模式的引脚,每个bit位代表一个引脚,对应bit位为1时改引脚对设置有效,最低位对应P0 * @param PuPd 0-推挽输出,无上拉或者下拉,1-上拉输出,2-下拉输出 * @retval 函数执行状态,小于0函数执行出错 */ [DllImport("USB2XXX.dll")] public static extern Int32 GPIO_SetOutput(Int32 DevHandle,UInt32 PinMask, Byte PuPd); /** * @brief 将GPIO引脚设置为开漏模式,该模式下可作为双向引脚 * @param DevHandle 设备句柄 * @param PinMask 需要设置为开漏模式的引脚,每个bit位代表一个引脚,对应bit位为1时改引脚对设置有效,最低位对应P0 * @param PuPd 0-内部无上拉或者下拉,1-使能上拉,2-使能下拉 * @retval 函数执行状态,小于0函数执行出错 */ [DllImport("USB2XXX.dll")] public static extern Int32 GPIO_SetOpenDrain(Int32 DevHandle,UInt32 PinMask, Byte PuPd); /** * @brief 设置GPIO引脚的输出状态 * @param DevHandle 设备句柄 * @param PinMask 需要输出状态的引脚,每个bit位代表一个引脚,对应bit位为1时改引脚对设置有效,最低位对应P0 * @param PinValue 对应引脚的状态,每个bit位代表一个引脚,对应bit位为1输出高电平,为0输出低电平,最低位对应P0 * @retval 函数执行状态,小于0函数执行出错 */ [DllImport("USB2XXX.dll")] public static extern Int32 GPIO_Write(Int32 DevHandle,UInt32 PinMask, UInt32 PinValue); /** * @brief 获取GPIO引脚的输入状态 * @param DevHandle 设备句柄 * @param PinMask 需要获取状态的引脚,每个bit位代表一个引脚,对应bit位为1时改引脚对设置有效,最低位对应P0 * @param pPinValue 对应引脚的状态,每个bit位代表一个引脚,对应bit位为1引脚为高电平,为0引脚为低电平,最低位对应P0 * @retval 函数执行状态,小于0函数执行出错 */ [DllImport("USB2XXX.dll")] public static extern Int32 GPIO_Read(Int32 DevHandle,UInt32 PinMask, ref UInt32 pPinValue); } }