📄 icandll.~pas
字号:
unit icandll;
interface
uses
WinTypes;
const
DLL_NAME = 'icandll.dll';//动态库名称
//接口卡类型定义
VCI_PCI5121=1;
VCI_PCI9810=2;
VCI_USBCAN1=3;
VCI_USBCAN2=4;
VCI_PCI9820=5;
VCI_CAN232=6;
VCI_PCI5110=7;
VCI_CANLITE=8;
VCI_ISA9620=9;
VCI_ISA5420=10;
VCI_PC104CAN=11;
VCI_CANETE=12;
VCI_DNP9810=13;
VCI_PCI9840=14;
VCI_PC104CAN2=15;
ICANOK=0;
ICANERR_FUNCNOTEXIST=$01;
ICANERR_SRCNOTEXIST=$02;//资源不存在
ICANERR_CMDNOTSUPPORT=$03;
ICANERR_CMDILLEGAL=$04;
ICANERR_CONNECTNOTEXIST=$05;
ICANERR=$f1;
ICANERR_USING=$f3;//资源被占用
ICANERR_SETCAN=$f4;//打开设备失败或初始化CAN失败
ICANERR_SRVSTARTED=$f5;//服务已启动,无法进行此项操作
ICANERR_TIMEOUT=$f6;
ICANERR_ITEMEXIST=$f7;//目标已经存在
MASTER_CYCLEUNIT=10;
type
//声明数据结构
ROUTECFG = Record
iCardType: Integer;//CAN接口卡类型
iCardInd: Integer;//CAN接口卡序号
iCANInd: Integer;//CAN路数
wCANBaud: WORD;//0x311c - 10K,0x041c - 100K,0x001c - 500K
wMasterID: WORD;//PCAN网络主站ID
iMasterCycle: Integer;//PCAN网络主站定时循环参数
END;
PROUTECFG=^ROUTECFG;
PDWORD=^DWORD;
PBYTE=^BYTE;
PInteger=^Integer;
//添加一个PCAN网络,并设定PCAN网络参数
function Mgr_AddRoute ( pcfg : PROUTECFG;
phRoute : PDWORD) : DWORD;
stdcall;
external DLL_NAME;
//删除一个PCAN网络
function Mgr_DelRoute (phRoute : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//删除所有PCAN网络
function Mgr_DelAllRoute () : DWORD;
stdcall;
external DLL_NAME;
//启动系统
function Mgr_StartSys () : DWORD;
stdcall;
external DLL_NAME;
//停止系统
function Mgr_StopSys () : DWORD;
stdcall;
external DLL_NAME;
//系统是否已启动
function Mgr_IsStarted () : DWORD;
stdcall;
external DLL_NAME;
//往指定PCAN网络中添加从站
function Route_AddSlave ( hRoute : DWORD;
SlaveID : DWORD;
phSlave : PDWORD) : DWORD;
stdcall;
external DLL_NAME;
//删除指定PCAN网络中的从站
function Route_DelSlave ( hRoute : DWORD;
hSlave : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//删除指定PCAN网络中所有从站
function Route_DelAllSlave ( hRoute : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//设置指定PCAN网络配置参数
function Route_SetConfig ( hRoute : DWORD;
pcfg : PROUTECFG) : DWORD;
stdcall;
external DLL_NAME;
//获取指定PCAN网络配置参数
function Route_GetConfig ( hRoute : DWORD;
pcfg : PROUTECFG) : DWORD;
stdcall;
external DLL_NAME;
//通过从站ID在指定PCAN网络中获取该从站句柄
function Route_GetSlavebyID ( hRoute : DWORD;
SlaveID : DWORD;
phSlave : PDWORD) : DWORD;
stdcall;
external DLL_NAME;
//异步连接所有从站
function Route_ConnectAllSlaveAsync ( hRoute : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//发送控制命令
function Route_IOCtl ( hRoute : DWORD;
code : DWORD;
pinbuf : PBYTE;
inlen : DWORD;
poutbuf : PBYTE;
outlen : DWORD) : DWORD;
//连接指定从站
function Slave_Connect ( hSlave : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//断开指定从站
function Slave_Disconnect ( hSlave : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//从站是否已连接
function Slave_IsConnected ( hSlave : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//获取指定从站ID
function Slave_GetID ( hSlave : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//获取指定从站IO数据长度
function Slave_GetIODataLen ( hSlave : DWORD;
pDI : PDWORD;
pDO : PDWORD;
pAI : PDWORD;
pAO : PDWORD) : DWORD;
stdcall;
external DLL_NAME;
//获取指定从站AI数据
function Slave_GetAIData ( hSlave : DWORD;
pRecbuf : PBYTE;
pReclen : PDWORD) : DWORD;
stdcall;
external DLL_NAME;
//获取指定从站DI数据
function Slave_GetDIData ( hSlave : DWORD;
pRecbuf : PBYTE;
pReclen : PDWORD) : DWORD;
stdcall;
external DLL_NAME;
//从指定从站接收AI/DI数据
function Slave_GetData ( hSlave : DWORD;
SourceID : DWORD;
pRecbuf : PBYTE;
PReclen : PDWORD) : DWORD;
stdcall;
external DLL_NAME;
//往指定从站发送AO/DO数据
function Slave_SendData ( hSlave : DWORD;
SourceID : DWORD;
pSendbuf : PBYTE;
Sendlen : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//设置指定从站配置参数
function Slave_SetConfig ( hSlave : DWORD;
SourceID : DWORD;
pSubsourceID : PDWORD;
pSendbuf : PBYTE;
Sendlen : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//获取指定从站配置参数
function Slave_GetConfig ( hSlave : DWORD;
SourceID : DWORD;
pSubsourceID : PDWORD;
pRecbuf : PBYTE;
Reclen : DWORD) : DWORD;
stdcall;
external DLL_NAME;
//设置从站的数据刷新周期,默认为ROUTECFG.iMasterCycle,单位10ms
function Slave_SetCycle ( hSlave : DWORD;
dwCycle : DWORD) : DWORD;
stdcall;
external DLL_NAME;
function Slave_GetCycle ( hSlave : DWORD) : DWORD;
stdcall;
external DLL_NAME;
implementation
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -