我在实习中,公司要我勇Delphi完成对PCI7501进行控制。
 一: PCI7501特点:独立64路开关量TTL电平数字输入、64路TTL电平开关量数字输出板,3路定时计数。PC-7501是128路通用数字TTL电平输入/输出板,具有8个8位数字输入口及8个8位数字输出锁存口,共有64路输入及64路输出,输出口具有上电清零的功能,特别适合控制继电器板等需要上电初始化状态为0的应用场合。
 二:动态连接库函数如下:
  1.Declare Function pci7501check Lib "pci7501.dll" (ByVal dwVendorID%, ByVal dwDeviceID%, ByVal fUseInt As Boolean,Byval Cardno%) As Long
此函数用于查找板卡,返回值为板卡句柄,对板卡调用开入开出函数前必须先调用此函数。单块板卡当不使用中断功能时,应用程序默认调用hplx=PCI7501check(0,0,false,1)即可,否则调用hplx=pci7501check(0,0,true,1)。最后一个参数为板卡标识号。如只有一块则该参数为1;如使用多块板卡,其值为小于或等于板卡个数的整数。例如一台机器上插了三块宏拓PCI系列的板卡,则参数分别为1,2,3中的任意一个数。  2.Declare Function pci7501di Lib "pci7501.dll" (ByVal hplx As Long, ByVal addr As Boolean, ByVal ch%) As Integer
此函数返回值为板卡某组8通道此时输入的开关量(00-FF),hplx为 句柄,addr默认为false, ch为组号(0-7)对应板上8组(每组八路)共64路通道。
应用程序调用DATA=pci7501di(hplx,false,ch)。  3.Declare Sub pci7501do Lib "pci7501.dll" (ByVal hplx As Long, ByVal addr As Boolean, ByVal ch%, ByVal data%)hplx为 句柄,addr默认为false, ch为组号(0-7)对应板上8组(每组八路)共64路通道,data为某组将要输出的开关量值(00-FF)。例如想让第一组0-3路为低电平,4-7路为高电平则调用pci7501do(hplx,false,0,f0)。  4.Declare Sub pci7501jsset Lib "pci7501.dll" (ByVal hplx As Long, ByVal addr As Boolean, ByRef sd As Byte)
本函数用于对板上的计数器的所有通道进行控制模式设置。 hplx为 句柄,addr默认为false, sd为存放控制字的三维数组。如想将计数器三个通道都设置为计数模式,先将0x34,0x74,0xb4分别赋与sd(0),sd(1),sd(2),然后调用pci7501jsset(hplx,false ,sd(0))。  三:要求
   可以自己输入可开的板卡和对应板卡的哪一位,也可进行多卡和多路的控制设置。请给个思路!!谢谢!!!!

解决方案 »

  1.   

    引入dll中的函数或过程的声明到一个新的单元.在另外新建一个控制界面中调用这些函数或过程就行了吧.把你那高低电平组合一下就可以控制
      

  2.   

    把这几个函数导入不就行了,在delphi中导入DLL函数,网上一找一大把。
      

  3.   

    在delphi中导入DLL函数,网上一找一大把????????????????????
    哪里有啊?推荐一下啊!!!!!!!!!!!!!!
      

  4.   

    新建一个unit.把dll中的函数或过程申明一下.然后把dll放在执行文件目录下.即可调用.unit pci7501;interfacepci7501DLL = 'pci7501.dll'; function pci7501check(dwVendorID:integer;dwDeviceID:integer; fUseInt:boolean;Cardno:integer): Integer; stdcall; external pci7501DLL;
    implementation
    {implementation}end.