(注:以下函数声明在VB的一般模块内(Module),如果将函数声明在窗体模块内就必须在每个函数的前面添加 Private 关键字。可以通过书写或粘贴的方式在VB Module 内声明,其中每条函数必须书写在同一行内,本文挡内有换行的函数在使用时写在同一行内。) Declare Function USB20C_EnumDeviceCount Lib "USB20C" () As LongDeclare Function USB20C_Init Lib "USB20C" (ByVal DevNo As Long, ByVal I2CCHhip As Long) As LongDeclare Function USB20C_Done Lib "USB20C" () As LongDeclare Function USB20C_WorkAtHighSpeed Lib "USB20C" () As BooleanDeclare Function USB20C_GetLastErrorStr Lib "USB20C" () As StringDeclare Function USB20C_SetAddress Lib "USB20C" (ByVal iAdd As Long) As BooleanDeclare Function USB20C_Input Lib "USB20C" (ByVal iAdd As Long) As LongDeclare Function USB20C_Output Lib "USB20C" (ByVal iAdd As Long, ByVal iData As Long) As BooleanDeclare Function USB20C_MultInput Lib "USB20C" (ByVal Num As Long, ByRef Buf As Any) As BooleanDeclare Function USB20C_MultOutput Lib "USB20C" (ByVal Num As Long, ByRef Buf As Any) As BooleanDeclare Function USB20C_MixedIO Lib "USB20C" (ByVal Num As Long, ByRef Buf As Any) As BooleanDeclare Function USB20C_StartDMARead Lib "USB20C" () As BooleanDeclare Function USB20C_StartDMAWrite Lib "USB20C" () As BooleanDeclare Function USB20C_EndDMA Lib "USB20C" () As BooleanDeclare Function USB20C_DMARead Lib "USB20C" (ByRef iData As Any, ByVal dataSize As Long, ByVal OverTime As Long) As BooleanDeclare Function USB20C_DMAWrite Lib "USB20C" (ByRef iData As Any, ByVal dataSize As Long, ByVal DataWriteLen As Long, ByVal OverTime As Long) As BooleanDeclare Function USB20C_SetIFCFG Lib "USB20C" (ByVal IntIFCLK As Boolean, ByVal intClk48MHz As Boolean, ByVal IntClkOutEn As Boolean, ByVal IFCLKInvert As Boolean, ByVal AsyncFIFO As Boolean, ByVal OnePulseEarly As Boolean) As BooleanDeclare Function USB20C_SetCPUCS Lib "USB20C" (ByVal cupSpeed As Long, ByVal ClkOutEnable As Boolean, ByVal ClkInvert As Boolean) As BooleanDeclare Function USB20C_SetI2CFrequency Lib "USB20C" (ByVal WorkAt400KHz As Boolean) As BooleanDeclare Function USB20C_ReadI2C Lib "USB20C" (ByVal ChipAddr As Long, ByVal Num As Long, ByVal StartAddr As Long, ByVal I2CChip As Long, ByRef Data As Any) As BooleanDeclare Function USB20C_WriteI2C Lib "USB20C" (ByVal ChipAddr As Long, ByVal Num As Long, ByVal StartAddr As Long, ByVal I2CChip As Long, ByRef Data As Any) As BooleanDeclare Function USB20C_GetLastError Lib "USB20C" () As Long函数实际调用:0:在Module内定义共享变量Public gApiLong As Long ‘获得函数调用的返回值 Public gApibl As Boolean ‘获得函数调用的返回值Public iAdd As Byte ‘读写地址Public iDataLen As Long ‘数据长度Public iData(0 to 4095) As Byte ‘返回数据1:USB20C_EnumDeviceCount() As LonggApiLong = USB20C_EnumDeviceCountIf gApiLong > 0 Then gApiLong=当前PC机上连接的USB20C模块的个数 Else MsgBox "系统未连接到任何设备。", vbQuestion, TiShiExit Sub End If2:USB20C_Init(ByVal DevNo As Long, ByVal I2CCHhip As Long) As Long gApiLong = USB20C_Init(DevNo,I2CCHhip) If gApiLong > 0 Then Select Case gApiLong Case 1 MsgBox ("当前模块工作在全速(USB1.1)模式") Case 2MsgBox ("当前模块工作在高速(USB2.0)模式") End Select Else MsgBox("USB20C_Init函数调用错误!") Exit Sub End If3:Declare Function USB20C_WorkAtHighSpeed Lib "USB20C" () As BooleangApibl = USB20C_WorkAtHighSpeed If gApibl =True Then MsgBox("USB20C工作在高速模式") Else MsgBox("USB20C工作在全速模式") End If4:USB20C_Done Lib "USB20C" () As LonggApiLong = USB20C_Done() MsgBox("断开USB20C与当前PC机的连接")5:USB20C_SetAddress Lib "USB20C" (ByVal iAdd As Long) As Boolean iAdd=1gApibl = USB20C_SetAddress(iAdd) If gApibl Then MsgBox("USB20C_SetAddress调用成功")ElseMsgBox("USB20C_SetAddress调用成功")End If6:USB20C_Input Lib "USB20C" (ByVal iAdd As Long) As LongiAdd=1 gApiLong = USB20C_Input(iAdd)MsgBox ”返回值” gApiLong 7:USB20C_Output Lib "USB20C" (ByVal iAdd As Long, ByVal iData As Long) As BooleaniAdd=1iData(0)=写入的地址gApibl = USB20C_Output(iAdd, iData(0))) If gApibl Then MsgBox "USB20C_Output 写入数据成功" ElseMsgBox "USB20C_Output 写入数据失败" End If8:USB20C_MultInput Lib "USB20C" (ByVal Num As Long, ByRef Buf As Any) As BooleaniAdd = 49 ‘设置读取50个数据 (注:数据个数必须≤60) For I = 0 To iAdd ArrData(0) = I ‘设置读那个地址的数据 Next I gApibl = USB20C_MultInput(iAdd, ArrData(0)) 'Num≤60 If gApibl Then MsgBox(“读出数据成功") Else MsgBox(“读出数据失败") End If For I = 0 To iAdd Debug.Print ArrData(0) Next I9:USB20C_MultOutput Lib "USB20C" (ByVal Num As Long, ByRef Buf As Any) As Boolean iAdd=5 iData [0] = 地址0 iData [1] = 数据0iData [2] = 地址1 iData [3] = 数据1iData [4] = 地址2 iData [5] = 数据2iData [6] = 地址3 iData [7] = 数据3iData [8] = 地址4 iData [9] = 数据4iData [10] = 地址5 iData [11] = 数据5......gApibl= USB20C_MultOutput(iAdd,iData(0))If gApibl Then MsgBox(“多地址写入成功”) Else MsgBox(“多地址写入失败”)End If10:USB20C_MixedIO Lib "USB20C" (ByVal Num As Long, ByRef Buf As Any) As BooleaniAdd=3 iData [0] = 地址0 iData[1] = 数据0iData [2] = 地址1 iData [3] = 数据1iData [4] = 地址2 iData [5] = 数据2gApibl=USB20C_MixedIO(iAdd,iData(0))If gApibl Then MsgBox(“多地址混合读写成功”) Else MsgBox(“多地址混合读写失败”)End IfDebug.Print iData(0)Debug.Print iData(1)Debug.Print iData(2)11:Declare Function USB20C_StartDMARead Lib "USB20C" () As Boolean gApibl=USB20C_StartDMAReadIf gApibl Then MsgBox(“调用成功 ”)Else MsgBox(“调用失败 ”) Exit SubEnd If12: USB20C_DMARead Lib "USB20C" (ByRef iData As Any, ByVal dataSize As Long, ByVal OverTime As Long) As BooleanCall USB20C_DMAEndCall USB20C_StartDMAReadgApibl=USB20C_DMARead(iData(0),20,iDataLen,2000)If gApibl Then MsgBox(“USB20C_DMARead调用成功 ”)Else MsgBox(“USB20C_DMARead调用失败 ”) Exit SubEnd IfFor I=0 To 20 Debug.Print iData(I)Next ICall USB20C_DMAEnd13: USB20C_DMAWrite Lib "USB20C" (ByRef iData As Any, ByVal dataSize As Long, ByVal DataWriteLen As Long, ByVal OverTime As Long) As Boolean gApibl= USB20C_DMAWrite(iData(0),4096,DataWriteLen,2000)If gApibl Then MsgBox(“USB20C_EndDMA调用成功 ”)Else MsgBox(“USB20C_EndDMA调用失败 ”) Exit SubEnd If If DataWriteLen=4096 thenEnd if14: USB20C_EndDMA Lib "USB20C" () As BooleangApibl=USB20C_EndDMA()If gApibl Then MsgBox(“USB20C_EndDMA调用成功 ”)Else MsgBox(“USB20C_EndDMA调用失败 ”) Exit SubEnd If15:USB20C_GetLastError Lib "USB20C" () As LonggApiLong=USB20C_GetLastErrorMsgBox ”返回的错误是。” getErrToStr(gApiLong)Function getErrToStr(sErrIndex As Long) As StringSelect Case sErrIndexCase 0 getErr =”成功” Case 1 getErr=”初始化设备时,设备曾经被初始化过一次。”Case 2 getErr=”化设备时,没有发现设备”Case 3 GetErr=”初始化设备时,已经发现设备,但是不能打开辅助输出管道。”Case 4 GetErr=”初始化设备时,已经发现设备,但是不能打开辅助输入管道。”Case 5 GetErr=”初始化设备时,已经发现设备,但是不能打开主输出管道。” Case 6 GetErr=”初始化设备时,已经发现设备,但是不能打开主输入管道。”Case 7 Geterr=”初始化设备时,没能创建终止事件。”Case 8getErr = “读写操作超时。”Case 9 getErr =”读写操作错误(重叠)。” Case 10 getErr =”读写操作错误。”Case 11 getErr =”设备没有连接。” Case 12 getErr =”没有结束上次操作。” Case 13 getErr =”函数的参数不合适。” Case 14 getErr =”不是我们的设备。” End Select End Function……