📄 ch365modl.bas
字号:
' iEnableInterrupt 是否需要支持中断
Declare Function CH365mCloseDevice Lib "CH365DLL.DLL" (ByVal iIndex As Long)
' CH365mCloseDevice 关闭CH365设备
' iIndex 指定CH365设备序号
Declare Function CH365mDriverCommand Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByRef ioCommand As mWIN32_COMMAND) As Long
'CH365mDriverCommand 直接传递命令给驱动程序,出错则返回0,否则返回数据长度
' iIndex 指定CH365设备序号
' ioCommand 命令结构的指针
' 该程序在调用后返回数据长度,并且仍然返回命令结构,如果是读操作,则数据返回在命令结构中,
' 返回的数据长度在操作失败时为0,操作成功时为整个命令结构的长度,例如读一个字节,则返回mWIN32_COMMAND_HEAD+1,
' 命令结构在调用前,分别提供:命令功能代码,起始地址(可选),存取数据的长度(可选),
' 命令结构在调用后,分别返回:操作状态代码,返回的基址(可选),后续数据的长度(可选),
' 操作状态代码是由WINDOWS定义的代码,可以参考NTSTATUS.H,
' 返回的基址只适用于下列命令:获取I/O基址,获取存储器基址,获取中断号,对于其它命令则保持输入时的起始地址
' 后续数据的长度是指读操作返回的数据长度,数据存放在随后的缓冲区中,对于写操作一般为0
Declare Function CH365mGetIoBaseAddr Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByRef oIoBaseAddr As mCH365_IO_REG) As Boolean
' CH365mGetIoBaseAddr 获取I/O端口的基址
' iIndex 指定CH365设备序号
' oIoBaseAddr 保存I/O端口基址的单元地址
Declare Function CH365mSetIoBaseAddr Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iIoBaseAddr As mCH365_IO_REG) As Boolean
' CH365mSetIoBaseAddr 设定I/O端口的基址
' iIndex 指定CH365设备序号
' iIoBaseAddr 指定I/O端口基址
Declare Function CH365mGetMemBaseAddr Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByRef oMemBaseAddr As mCH365_MEM_REG) As Boolean
' CH365mGetMemBaseAddr 获取存储器的基址
' iIndex 指定CH365设备序号
' oMemBaseAddr 保存存储器基址的单元地址
Declare Function CH365mSetMemBaseAddr Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iMemBaseAddr As mCH365_MEM_REG) As Boolean
' CH365mSetMemBaseAddr 设定存储器的基址
' iIndex 指定CH365设备序号
' iMemBaseAddr 指定存储器基址,为0则关闭存储器,为-1则自动设定
Declare Function CH365mGetIntLine Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByRef oIntLine As Long) As Boolean
' CH365mGetIntLine 获取中断号
' iIndex 指定CH365设备序号
' oIntLine 保存中断号的单元地址
Declare Function CH365mSetIntLine Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iIntLine As Long) As Boolean
' CH365mSetIntLine 设定中断号
' iIndex 指定CH365设备序号
' iIntLine 指定中断号,为0则关闭中断,为-1则自动检测并设定
Declare Function CH365mWaitInterrupt Lib "CH365DLL.DLL" (ByVal iIndex As Long) As Boolean
' CH365mWaitInterrupt 等待中断事件
' iIndex 指定CH365设备序号
Declare Function CH365mAbortWaitInt Lib "CH365DLL.DLL" (ByVal iIndex As Long) As Boolean
' CH365mAbortWaitInt 放弃等待中断
' iIndex 指定CH365设备序号
Declare Function CH365mSetIntRoutine Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iIntRoutine As Long) As Boolean
' CH365mSetIntRoutine 设定中断服务程序
' iIndex 指定CH365设备序号
' mPCH365_INT_ROUTINE iIntRoutine 指定中断服务程序,为NULL则取消中断服务,否则在中断时调用该程序
Declare Function CH365mReadIntCommand Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByRef oCommand As mWIN32_COMMAND, ByVal iCmdIndex As Long) As Boolean
' CH365mReadIntCommand 读取中断命令缓冲区
' iIndex 指定CH365设备序号
' oCommand 指向一个足够大的缓冲区,用于保存读取的命令结构
' iCmdIndex 中断命令序号,为1或者2
Declare Function CH365mWriteIntCommand Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByRef iCommand As mWIN32_COMMAND, ByVal iCmdIndex As Long) As Boolean
' CH365mWriteIntCommand 写入中断命令缓冲区
' iIndex 指定CH365设备序号
' iCommand 指向作为中断命令的命令结构
' iCmdIndex 中断命令序号,为1或者2
Declare Function CH365mReadIoByte Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByRef oByte As Byte) As Boolean
' CH365mReadIoByte 从I/O端口读取一个字节
' iIndex 指定CH365设备序号
' iAddr 指定I/O端口的地址
' oByte 指向一个字节单元,用于保存读取的字节数据
Declare Function CH365mReadIoWord Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByRef oWord As Integer) As Boolean
' CH365mReadIoWord 从I/O端口读取一个字
' iIndex 指定CH365设备序号
' iAddr 指定I/O端口的地址
' oWord 指向一个字单元,用于保存读取的字数据
Declare Function CH365mReadIoDword Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByRef oDword As Long) As Boolean
' CH365mReadIoDword 从I/O端口读取一个双字
' iIndex 指定CH365设备序号
' iAddr 指定I/O端口的地址
' oDword 指向一个双字单元,用于保存读取的双字数据
Declare Function CH365mWriteIoByte Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByVal iByte As Byte) As Boolean
' CH365mWriteIoByte 向I/O端口写入一个字节
' iIndex 指定CH365设备序号
' iAddr 指定I/O端口的地址
' iByte 待写入的字节数据
Declare Function CH365mWriteIoWord Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByVal iWord As Integer) As Boolean
' CH365mWriteIoWord 向I/O端口写入一个字
' iIndex 指定CH365设备序号
' iAddr 指定I/O端口的地址
' iWord 待写入的字数据
Declare Function CH365mWriteIoDword Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByVal iDword As Long) As Boolean
' CH365mWriteIoDword 向I/O端口写入一个双字
' iIndex 指定CH365设备序号
' iAddr 指定I/O端口的地址
' iDword 待写入的双字数据
Declare Function CH365mReadMemByte Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByRef oByte As Byte) As Boolean
' CH365mReadMemByte 从存储器读取一个字节
' iIndex 指定CH365设备序号
' iAddr 指定存储器的地址,虚拟地址
' oByte 指向一个字节单元,用于保存读取的字节数据
Declare Function CH365mReadMemDword Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByRef oDword As Long) As Boolean
' CH365mReadMemDword 从存储器读取一个双字
' iIndex 指定CH365设备序号
' iAddr 指定存储器的地址,虚拟地址
' oDword 指向一个双字单元,用于保存读取的双字数据
Declare Function CH365mWriteMemByte Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByVal iByte As Byte) As Boolean
' CH365mWriteMemByte 向存储器写入一个字节
' iIndex 指定CH365设备序号
' iAddr 指定存储器的地址,虚拟地址
' iByte 待写入的字节数据
Declare Function CH365mWriteMemDword Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAddr As Any, ByVal iDword As Long) As Boolean
' CH365mWriteMemDword 向存储器写入一个双字
' iIndex 指定CH365设备序号
' iAddr 指定存储器的地址,虚拟地址
' iDword 待写入的双字数据
Declare Function CH365mReadConfig Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iOffset As Any, ByRef oByte As Byte) As Boolean
' CH365mReadConfig 从配置空间读取一个字节数据
' iIndex 指定CH365设备序号
' iOffset 指定偏移地址
' oByte 指向一个字节单元,用于保存读取的字节数据
Declare Function CH365mWriteConfig Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iOffset As Any, ByVal iByte As Byte) As Boolean
' CH365mWriteConfig 向配置空间写入一个字节数据
' iIndex 指定CH365设备序号
' iOffset 指定偏移地址
' iByte 待写入的字节数据
Declare Function CH365mSetA15_A8 Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iA15_A8 As Byte) As Boolean
' CH365mSetA15_A8 设置高地址,即设置A15-A8的输出
' iIndex 指定CH365设备序号
' iA15_A8 位7-位0对应A15-A8的输出,1为高电平,0为低电平
Declare Function CH365mReadI2C Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iDevice As Byte, ByVal iAddr As Byte, ByRef oByte As Byte) As Boolean
' CH365mReadI2C 从I2C接口读取一个字节数据
' iIndex 指定CH365设备序号
' iDevice 低7位指定I2C设备地址
' iAddr 指定数据单元的地址
' oByte 指向一个字节单元,用于保存读取的字节数据
Declare Function CH365mWriteI2C Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iDevice As Byte, ByVal iAddr As Byte, ByVal iByte As Byte) As Boolean
' CH365mWriteI2C 向I2C接口写入一个字节数据
' iIndex 指定CH365设备序号
' iDevice 低7位指定I2C设备地址
' iAddr 指定数据单元的地址
' iByte 待写入的字节数据
Declare Function CH365DelayUS Lib "CH365DLL.DLL" (ByVal iDelay As Long) As Boolean
' 延时指定微秒
' iDelay 指定要延时的微秒数,如果延时小于10则误差较大
Declare Function CH365mAccessBlock Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iAccessMode As Long, ByVal iAddr As Any, ByRef ioBuffer As Any, ByVal iLength As Long) As Boolean
' 读取或者写入数据块
' iIndex 指定CH365设备序号
' iAccessMode 参考下面的说明
' iAddr 指定I/O端口或者存储器的地址
' ioBuffer 指向输入或者输出的缓冲区
' iLength 数据块长度,也就是读取或者写入的字节数,长度不超过32KB
Declare Function CH365mSetExclusive Lib "CH365DLL.DLL" (ByVal iIndex As Long, ByVal iExclusive As Long) As Boolean
' 设置独占使用当前CH365设备
' iIndex 指定CH365设备序号
' iExclusive 为0则设备可以共享使用,非0则独占使用
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
'将文本框中输入的十六进制值转换成BCD码
Function hextobcd(str As String) As Byte
Dim length As Integer
Dim X As String
Dim i As Integer
length = Len(str)
For i = 0 To length - 1
X = Mid(str, length - i, 1)
Select Case X
Case "a", "A"
hextobcd = hextobcd + 10 * (16 ^ i)
Case "b", "B"
hextobcd = hextobcd + 11 * (16 ^ i)
Case "c", "C"
hextobcd = hextobcd + 12 * (16 ^ i)
Case "d", "D"
hextobcd = hextobcd + 13 * (16 ^ i)
Case "e", "E"
hextobcd = hextobcd + 14 * (16 ^ i)
Case "f", "F"
hextobcd = hextobcd + 15 * (16 ^ i)
Case "0" To "9"
hextobcd = hextobcd + Val(X) * 16 ^ i
Case Else
MsgBox "非十六进制数", vbCritical, "信息提示"
hextobcd = 0
End Select
Next i
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -