/***********************************************************/
'单次和连续(biao=2时)发送的usb程序源码
Private Sub Command21_Click()
Dim i As Integer, biao As Integer
Dim mLength As Long
Dim mbuffer As Byte
Dim str As String
Dim strTemp() As Byte
If Text2.Text <> "" Then
mLength = Len(Text2.Text)
For i = 1 To mLength
mDemoReq.mParameter(i - 1) = Asc(Mid(Text2.Text, i, 1))
Next i
CH375WriteData 0, mDemoReq, mLength
If mDemoReq.mParameter(0) = 114 And mDemoReq.mParameter(1) = 100 Then
biao = 1
ElseIf mDemoReq.mParameter(0) = 114 And mDemoReq.mParameter(1) = 97 Then
biao = 2
Else
biao = 0
End If
Else
MsgBox "没有程控命令"
End If
CH375ReadData 0, mDemoReq1, 64
If Len(Text1.Text) <= 32760 Then
Text1.Text = StrConv(mDemoReq1.mParameter, vbUnicode)
End If
If biao = 2 Then
CH375ReadData 0, mDemoReq2, 64
If Len(Text5.Text) <= 32760 Then
Text5.Text = StrConv(mDemoReq2.mParameter, vbUnicode)
End If
CH375ReadData 0, mDemoReq2, 64
If Len(Text6.Text) <= 32760 Then
Text6.Text = StrConv(mDemoReq2.mParameter, vbUnicode)
End If
CH375ReadData 0, mDemoReq2, 64
If Len(Text7.Text) <= 32760 Then
Text7.Text = StrConv(mDemoReq2.mParameter, vbUnicode)
End If
CH375ReadData 0, mDemoReq2, 64
If Len(Text8.Text) <= 32760 Then
Text8.Text = StrConv(mDemoReq2.mParameter, vbUnicode)
End If
CH375ReadData 0, mDemoReq2, 64
If Len(Text9.Text) <= 32760 Then
Text9.Text = StrConv(mDemoReq2.mParameter, vbUnicode)
End If
End If
Flag = True
End Sub
/*************************************************************/
'所需的模块文件源码
Option Explicit
Declare Function CH375OpenDevice Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Long
'打开CH375设备,返回句柄,出错则无效
' iIndex 指定CH375设备序号,0对应第一个设备
Declare Sub CH375CloseDevice Lib "CH375DLL.DLL" (ByVal iIndex As Long)
'关闭CH375设备
' iIndex 指定CH375设备序号
Declare Function CH375GetVersion Lib "CH375DLL.DLL" () As Long
'获得DLL版本号,返回版本号
Declare Function CH375DriverCommand Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef ioCommand As WIN32_COMMAND) As Long
' 直接传递命令给驱动程序,出错则返回0,否则返回数据长度
' iIndex 指定CH375设备序号
' ioCommand 命令结构的指针
' 该程序在调用后返回数据长度,并且仍然返回命令结构,如果是读操作,则数据返回在命令结构中,
' 返回的数据长度在操作失败时为0,操作成功时为整个命令结构的长度,例如读一个字节,则返回mWIN32_COMMAND_HEAD+1,
' 命令结构在调用前,分别提供:管道号或者命令功能代码,存取数据的长度(可选),数据(可选)
' 命令结构在调用后,分别返回:操作状态代码,后续数据的长度(可选),
' 操作状态代码是由WINDOWS定义的代码,可以参考NTSTATUS.H,
' 后续数据的长度是指读操作返回的数据长度,数据存放在随后的缓冲区中,对于写操作一般为0
Declare Function CH375GetDrvVersion Lib "CH375DLL.DLL" () As Long
'获得驱动程序版本号,返回版本号,出错则返回0
Declare Function CH375ResetDevice Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Boolean
' 复位USB设备
' iIndex 指定CH375设备序号
Declare Function CH375GetDeviceDescr Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 读取设备描述符
' iIndex 指定CH375设备序号
' oBuffer 指向一个足够大的缓冲区,用于保存描述符
' ioLength 指向长度单元,输入时为准备读取的长度,返回后为实际读取的长度
Declare Function CH375GetConfigDescr Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 读取配置描述符
' iIndex 指定CH375设备序号
' oBuffer 指向一个足够大的缓冲区,用于保存描述符
' ioLength 指向长度单元,输入时为准备读取的长度,返回后为实际读取的长度
Declare Function CH375SetIntRoutine Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByVal iIntRoutine As Long) As Boolean
' 设定中断服务程序
' iIndex 指定CH375设备序号
' iIntRoutine 指定中断服务程序,为NULL则取消中断服务,否则在中断时调用该程序
Declare Function CH375ReadInter Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 读取中断数据
' iIndex 指定CH375设备序号
' oBuffer 指向一个足够大的缓冲区,用于保存读取的中断数据
' ioLength 指向长度单元,输入时为准备读取的长度,返回后为实际读取的长度
Declare Function CH375AbortInter Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Boolean
' 放弃中断数据读操作
' iIndex 指定CH375设备序号
Declare Function CH375ReadData Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 读取数据块
' iIndex 指定CH375设备序号
' oBuffer 指向一个足够大的缓冲区,用于保存读取的数据
' ioLength 指向长度单元,输入时为准备读取的长度,返回后为实际读取的长度
Declare Function CH375AbortRead Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Boolean
' 放弃数据块读操作
' iIndex 指定CH375设备序号
Declare Function CH375WriteData Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef iBuffer As Any, ByRef ioLength As Long) As Boolean
' 写出数据块
' iIndex 指定CH375设备序号
' iBuffer 指向一个缓冲区,放置准备写出的数据
' ioLength 指向长度单元,输入时为准备写出的长度,返回后为实际写出的长度
Declare Function CH375AbortWrite Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Boolean
' 放弃数据块写操作
' iIndex 指定CH375设备序号
Declare Function CH375WriteRead Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef iBuffer As Any, ByRef oBuffer As Any, ByRef ioLength As Long) As Boolean
' 先写出标准的数据块(命令),再读取标准的数据块(应答)
' iIndex 指定CH375设备序号
' iBuffer 指向一个缓冲区,放置准备写出的数据,长度不大于mCH375_PACKET_LENGTH
' oBuffer 指向一个足够大的缓冲区,长度不小于mCH375_PACKET_LENGTH,用于保存读取的数据
' ioLength 指向长度单元,不大于mCH375_PACKET_LENGTH,输入时为准备写出的长度,返回后为实际读取的长度
Declare Function CH375GetStatus Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef iStatus As Long) As Boolean
' 通过CH375直接输入数据和状态
' iIndex 指定CH375设备序号
' iStatus 指向一个双字单元,用于保存状态数据
' 位7-位0对应CH375的D7-D0引脚,位9对应CH375的RXD#引脚,位10对应CH375的REQ#引脚
Declare Function CH375SetTimeout Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByVal iWriteTimeout As Long, ByVal iReadTimeout As Long) As Boolean
' 设置USB数据读写的超时
' iIndex 指定CH375设备序号
' iWriteTimeout 指定USB写出数据块的超时时间,以毫秒mS为单位,0xFFFFFFFF指定不超时(默认值)
' iReadTimeout 指定USB读取数据块的超时时间,以毫秒mS为单位,0xFFFFFFFF指定不超时(默认值)
Declare Function CH375WriteAuxData Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByRef iBuffer As Any, ByRef ioLength As Long) As Boolean
' 写出辅助数据
' iIndex 指定CH375设备序号
' iBuffer 指向一个缓冲区,放置准备写出的数据
' ioLength 指向长度单元,输入时为准备写出的长度,返回后为实际写出的长度
Declare Function CH375SetExclusive Lib "CH375DLL.DLL" (ByVal iIndex As Long, ByVal iExclusive As Long) As Boolean
' 设置独占使用当前CH375设备
' iIndex 指定CH375设备序号
' iExclusive 为0则设备可以共享使用,非0则独占使用
Declare Function CH375GetUsbID Lib "CH375DLL.DLL" (ByVal iIndex As Long) As Long
' 获取USB设备ID,返回数据中,低16位为厂商ID,高16位为产品ID,错误时返回全0(无效ID)
' iIndex 指定CH375设备序号
Type COMMAND_PACKET ' 自定义的命令包结构
mParameter(64) As Byte ' 参数
End Type
Public mDemoReq As COMMAND_PACKET
Public mDemoReq1 As COMMAND_PACKET
Public mDemoReq2 As COMMAND_PACKET
评论0