📄 ch365dll.h
字号:
BOOL WINAPI CH365ReadIoWord( // 从I/O端口读取一个字
PVOID iAddr, // 指定I/O端口的地址
PUSHORT oWord ); // 指向一个字单元,用于保存读取的字数据
BOOL WINAPI CH365ReadIoDword( // 从I/O端口读取一个双字
PVOID iAddr, // 指定I/O端口的地址
PULONG oDword ); // 指向一个双字单元,用于保存读取的双字数据
BOOL WINAPI CH365WriteIoByte( // 向I/O端口写入一个字节
PVOID iAddr, // 指定I/O端口的地址
UCHAR iByte ); // 待写入的字节数据
BOOL WINAPI CH365WriteIoWord( // 向I/O端口写入一个字
PVOID iAddr, // 指定I/O端口的地址
USHORT iWord ); // 待写入的字数据
BOOL WINAPI CH365WriteIoDword( // 向I/O端口写入一个双字
PVOID iAddr, // 指定I/O端口的地址
ULONG iDword ); // 待写入的双字数据
BOOL WINAPI CH365ReadMemByte( // 从存储器读取一个字节
PVOID iAddr, // 指定存储器的地址,虚拟地址
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
BOOL WINAPI CH365ReadMemDword( // 从存储器读取一个双字
PVOID iAddr, // 指定存储器的地址,虚拟地址
PULONG oDword ); // 指向一个双字单元,用于保存读取的双字数据
BOOL WINAPI CH365WriteMemByte( // 向存储器写入一个字节
PVOID iAddr, // 指定存储器的地址,虚拟地址
UCHAR iByte ); // 待写入的字节数据
BOOL WINAPI CH365WriteMemDword( // 向存储器写入一个双字
PVOID iAddr, // 指定存储器的地址,虚拟地址
ULONG iDword ); // 待写入的双字数据
BOOL WINAPI CH365ReadConfig( // 从配置空间读取一个字节数据
PVOID iOffset, // 指定偏移地址
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
BOOL WINAPI CH365WriteConfig( // 向配置空间写入一个字节数据
PVOID iOffset, // 指定偏移地址
UCHAR iByte ); // 待写入的字节数据
BOOL WINAPI CH365SetA15_A8( // 设置高地址,即设置A15-A8的输出
UCHAR iA15_A8 ); // 位7-位0对应A15-A8的输出,1为高电平,0为低电平
BOOL WINAPI CH365ReadI2C( // 从I2C接口读取一个字节数据
UCHAR iDevice, // 低7位指定I2C设备地址
UCHAR iAddr, // 指定数据单元的地址
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
BOOL WINAPI CH365WriteI2C( // 向I2C接口写入一个字节数据
UCHAR iDevice, // 低7位指定I2C设备地址
UCHAR iAddr, // 指定数据单元的地址
UCHAR iByte ); // 待写入的字节数据
HANDLE WINAPI CH365mOpenDevice( // 打开CH365设备,返回句柄,出错则无效
ULONG iIndex, // 指定CH365设备序号,0对应第一个设备
BOOL iEnableMemory, // 是否需要支持存储器
BOOL iEnableInterrupt ); // 是否需要支持中断
VOID WINAPI CH365mCloseDevice( // 关闭CH365设备
ULONG iIndex ); // 指定CH365设备序号
ULONG WINAPI CH365mDriverCommand( // 直接传递命令给驱动程序,出错则返回0,否则返回数据长度
ULONG iIndex, // 指定CH365设备序号
mPWIN32_COMMAND ioCommand ); // 命令结构的指针
// 该程序在调用后返回数据长度,并且仍然返回命令结构,如果是读操作,则数据返回在命令结构中,
// 返回的数据长度在操作失败时为0,操作成功时为整个命令结构的长度,例如读一个字节,则返回mWIN32_COMMAND_HEAD+1,
// 命令结构在调用前,分别提供:命令功能代码,起始地址(可选),存取数据的长度(可选),
// 命令结构在调用后,分别返回:操作状态代码,返回的基址(可选),后续数据的长度(可选),
// 操作状态代码是由WINDOWS定义的代码,可以参考NTSTATUS.H,
// 返回的基址只适用于下列命令:获取I/O基址,获取存储器基址,获取中断号,对于其它命令则保持输入时的起始地址
// 后续数据的长度是指读操作返回的数据长度,数据存放在随后的缓冲区中,对于写操作一般为0
BOOL WINAPI CH365mGetIoBaseAddr( // 获取I/O端口的基址
ULONG iIndex, // 指定CH365设备序号
mPCH365_IO_REG *oIoBaseAddr ); // 保存I/O端口基址的单元地址
BOOL WINAPI CH365mSetIoBaseAddr( // 设定I/O端口的基址
ULONG iIndex, // 指定CH365设备序号
mPCH365_IO_REG iIoBaseAddr ); // 指定I/O端口基址
BOOL WINAPI CH365mGetMemBaseAddr( // 获取存储器的基址
ULONG iIndex, // 指定CH365设备序号
mPCH365_MEM_REG *oMemBaseAddr ); // 保存存储器基址的单元地址
BOOL WINAPI CH365mSetMemBaseAddr( // 设定存储器的基址
ULONG iIndex, // 指定CH365设备序号
mPCH365_MEM_REG iMemBaseAddr ); // 指定存储器基址,为0则关闭存储器,为-1则自动设定
BOOL WINAPI CH365mGetIntLine( // 获取中断号
ULONG iIndex, // 指定CH365设备序号
PULONG oIntLine ); // 保存中断号的单元地址
BOOL WINAPI CH365mSetIntLine( // 设定中断号
ULONG iIndex, // 指定CH365设备序号
ULONG iIntLine ); // 指定中断号,为0则关闭中断,为-1则自动检测并设定
BOOL WINAPI CH365mWaitInterrupt( // 等待中断事件
ULONG iIndex ); // 指定CH365设备序号
BOOL WINAPI CH365mAbortWaitInt( // 放弃等待中断
ULONG iIndex ); // 指定CH365设备序号
BOOL WINAPI CH365mSetIntRoutine( // 设定中断服务程序
ULONG iIndex, // 指定CH365设备序号
mPCH365_INT_ROUTINE iIntRoutine ); // 指定中断服务程序,为NULL则取消中断服务,否则在中断时调用该程序
BOOL WINAPI CH365mReadIntCommand( // 读取中断命令缓冲区
ULONG iIndex, // 指定CH365设备序号
mPWIN32_COMMAND oCommand, // 指向一个足够大的缓冲区,用于保存读取的命令结构
ULONG iCmdIndex ); // 中断命令序号,为1或者2
BOOL WINAPI CH365mWriteIntCommand( // 写入中断命令缓冲区
ULONG iIndex, // 指定CH365设备序号
mPWIN32_COMMAND iCommand, // 指向作为中断命令的命令结构
ULONG iCmdIndex ); // 中断命令序号,为1或者2
BOOL WINAPI CH365mReadIoByte( // 从I/O端口读取一个字节
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定I/O端口的地址
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
BOOL WINAPI CH365mReadIoWord( // 从I/O端口读取一个字
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定I/O端口的地址
PUSHORT oWord ); // 指向一个字单元,用于保存读取的字数据
BOOL WINAPI CH365mReadIoDword( // 从I/O端口读取一个双字
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定I/O端口的地址
PULONG oDword ); // 指向一个双字单元,用于保存读取的双字数据
BOOL WINAPI CH365mWriteIoByte( // 向I/O端口写入一个字节
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定I/O端口的地址
UCHAR iByte ); // 待写入的字节数据
BOOL WINAPI CH365mWriteIoWord( // 向I/O端口写入一个字
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定I/O端口的地址
USHORT iWord ); // 待写入的字数据
BOOL WINAPI CH365mWriteIoDword( // 向I/O端口写入一个双字
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定I/O端口的地址
ULONG iDword ); // 待写入的双字数据
BOOL WINAPI CH365mReadMemByte( // 从存储器读取一个字节
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定存储器的地址,虚拟地址
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
BOOL WINAPI CH365mReadMemDword( // 从存储器读取一个双字
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定存储器的地址,虚拟地址
PULONG oDword ); // 指向一个双字单元,用于保存读取的双字数据
BOOL WINAPI CH365mWriteMemByte( // 向存储器写入一个字节
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定存储器的地址,虚拟地址
UCHAR iByte ); // 待写入的字节数据
BOOL WINAPI CH365mWriteMemDword( // 向存储器写入一个双字
ULONG iIndex, // 指定CH365设备序号
PVOID iAddr, // 指定存储器的地址,虚拟地址
ULONG iDword ); // 待写入的双字数据
BOOL WINAPI CH365mReadConfig( // 从配置空间读取一个字节数据
ULONG iIndex, // 指定CH365设备序号
PVOID iOffset, // 指定偏移地址
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
BOOL WINAPI CH365mWriteConfig( // 向配置空间写入一个字节数据
ULONG iIndex, // 指定CH365设备序号
PVOID iOffset, // 指定偏移地址
UCHAR iByte ); // 待写入的字节数据
BOOL WINAPI CH365mSetA15_A8( // 设置高地址,即设置A15-A8的输出
ULONG iIndex, // 指定CH365设备序号
UCHAR iA15_A8 ); // 位7-位0对应A15-A8的输出,1为高电平,0为低电平
BOOL WINAPI CH365mReadI2C( // 从I2C接口读取一个字节数据
ULONG iIndex, // 指定CH365设备序号
UCHAR iDevice, // 低7位指定I2C设备地址
UCHAR iAddr, // 指定数据单元的地址
PUCHAR oByte ); // 指向一个字节单元,用于保存读取的字节数据
BOOL WINAPI CH365mWriteI2C( // 向I2C接口写入一个字节数据
ULONG iIndex, // 指定CH365设备序号
UCHAR iDevice, // 低7位指定I2C设备地址
UCHAR iAddr, // 指定数据单元的地址
UCHAR iByte ); // 待写入的字节数据
BOOL WINAPI CH365DelayUS( // 延时指定微秒
ULONG iDelay ); // 指定要延时的微秒数,如果延时小于10则误差较大
BOOL WINAPI CH365mAccessBlock( // 读取或者写入数据块
ULONG iIndex, // 指定CH365设备序号
ULONG iAccessMode, // 参考下面的说明
PVOID iAddr, // 指定I/O端口或者存储器的地址
PVOID ioBuffer, // 指向输入或者输出的缓冲区
ULONG iLength ); // 数据块长度,也就是读取或者写入的字节数,长度不超过32KB
// iAccessMode 定义如下
// #define mFuncReadIoByte 0x00000010 // 读取输入输出端口,在同一个端口地址以字节为单位连续读取,最大长度32KB
// #define mFuncReadIoWord 0x00000011 // 读取输入输出端口,在同一个端口地址以字为单位连续读取,最大长度32KB
// #define mFuncReadIoDword 0x00000012 // 读取输入输出端口,在同一个端口地址以双字为单位连续读取,最大长度32KB
// #define mFuncReadIoBlock 0x00000013 // 读取输入输出端口,每读取一个字节,端口地址加一,最大长度240B(从偏移地址00H读到EFH)
// #define mFuncWriteIoByte 0x00000014 // 写入输入输出端口,在同一个端口地址以字节为单位连续写入,最大长度32KB
// #define mFuncWriteIoWord 0x00000015 // 写入输入输出端口,在同一个端口地址以字为单位连续写入,最大长度32KB
// #define mFuncWriteIoDword 0x00000016 // 写入输入输出端口,在同一个端口地址以双字为单位连续写入,最大长度32KB
// #define mFuncWriteIoBlock 0x00000017 // 写入输入输出端口,每写入一个字节,端口地址加一,最大长度240B(从偏移地址00H写到EFH)
// #define mFuncReadMemByte 0x00000018 // 读取存储器/寄存器,以字节为单位连续读,每读取一个字节,地址加一,最大长度32KB(从偏移地址0000H读到7FFFH)
// #define mFuncReadMemWord 0x00000019 // 读取存储器/寄存器,以字为单位连续读,每读取一个字,地址加二,最大长度32KB(从偏移地址0000H读到7FFFH)
// #define mFuncReadMemDword 0x0000001a // 读取存储器/寄存器,以双字为单位连续读,每读取一个字节,地址加四,最大长度32KB(从偏移地址0000H读到7FFFH)
// #define mFuncWriteMemByte 0x0000001c // 写入存储器/寄存器,以字节为单位连续写,每读取一个字节,地址加一,最大长度32KB(从偏移地址0000H写到7FFFH)
// #define mFuncWriteMemWord 0x0000001d // 写入存储器/寄存器,以字为单位连续写,每读取一个字,地址加二,最大长度32KB(从偏移地址0000H写到7FFFH)
// #define mFuncWriteMemDword 0x0000001e // 写入存储器/寄存器,以双字为单位连续写,每读取一个双字,地址加四,最大长度32KB(从偏移地址0000H写到7FFFH)
// 其它方式不支持,上述定义在文件CH365DLL.H中
BOOL WINAPI CH365mSetExclusive( // 设置独占使用当前CH365设备
ULONG iIndex, // 指定CH365设备序号
ULONG iExclusive ); // 为0则设备可以共享使用,非0则独占使用
#ifdef __cplusplus
}
#endif
#endif // _CH365_DLL_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -