VB声明:
    Public Declare Function del_allc Lib "ACIC03.DLL" (cCOm As Com_data_Master) As Integer在Delphi中如何用
    这样行吗?
     interface
      public
           Fenction      gDel_Alloc (cCom  As Com_data_Master)  As       
                           Smallint:stacall;external'acic03.dll';
      这样行吗???
接下来,封装有关的API函数,和调用函数来实现和下位机通信就可以了吗?希望对串口通信和一卡通有经验的大哥多多帮忙!!谢谢!!在线等!小弟求救了!!谢谢!!

解决方案 »

  1.   

    Com_data_Master是什么格式?
    需要自己定义的吧。
      

  2.   

    Com_data_Master是VB中固有的对象类型吗?还是自己定义的?
    找到定义的地方,再delphi中也定义类似的对象类型。然后照你上面写就可以了。
      

  3.   

    看你的是过程还是函数
      procedure IO_Close();stdcall;external '.\IOCard.dll'; 
      function IO_Init(const wid:hWnd):UINT;stdcall;external '.\IOCard.dll';
    参数如果是变量,则应该用var cCom:Com_data_Master这样声明。
      

  4.   

    整体情况是这样的:
    del_allc删除所有的正常卡
    适用控制器:除卡钟外所有控制器
    命令: 0xceVC声明:
        unsigned short del_allc(Com_data_Master &)VB声明:
        Public Declare Function del_allc Lib "ACIC03.DLL" (cCOm As Com_data_Master) As Integer输入参数:
        Com_data_Master结构:
            com_port    通信串口号    "001" - "255"
            chl_id      通道编号      "000" - "127"
            cntl_id     控制器ID      "000" - "127"
            re_value    函数输出值 
        VC声明
        typedef struct COMM_STRUCTURE_MARSTER
        {
            unsigned char com_port[3];
            unsigned char chl_id[3];
            unsigned char cntl_id[3];
            unsigned char re_value[MAXRETURNVALUE];
         }Com_data_Master;    VB声明
        Public Type Com_data_Master
            Com_Port As String * 3
            chl_id As String * 3
            cntl_id As String * 3
            re_value As String * MAXRETURNVALUE
        End Type    const MAXRETURNVALUE = 34函数返回值:
        83:  通信成功。
        87:  通信失败。
        82:  控制器没有响应。
        86:  输入参数无效。函数描述:
        删除控制器中的所有正常卡。输出值格式(函数执行成功):
        "FA" 控制器接受了无效命令(控制器不支持该命令)。
        "FB" 删除成功。例子:     Dim cCom as Com_data_Master
        dim nRet as long     cCom.com_port = "001"
        cCom.chl_id = "127"
        cCom.cntl_id = "001"
        nRet = del_allc( cCom )
      

  5.   

    在举一个情况相似的:enab_alarmic设置警报状态
    适用控制器: 中文版、56、D5N
    命令: 0xc6
    VC声明:
        unsigned short enab_alarm(Com_data_Master &, Flag2 &, Flag2 &, Flag2 &, Flag2 &, Flag2 &, Flag2 &, Flag2 &)
    VB声明:
        Public Declare Function enab_alarm Lib "ACIC03.DLL" (cCOm As Com_data_Master, u_Flag1 As Flag2, u_flag2 As Flag2, u_flag3 As Flag2, u_flag4 As Flag2, u_flag5 As Flag2, u_flag6 As Flag2, u_flag7 As Flag2) As Integer
    输入参数:
        Com_data_Master结构:
            com_port    通信串口号    "001" - "255"
            chl_id      通道编号      "000" - "127"
            cntl_id     控制器ID      "000" - "127"
            re_value    函数输出值 
        VC声明
        typedef struct COMM_STRUCTURE_MARSTER
        {
            unsigned char com_port[3];
            unsigned char chl_id[3];
            unsigned char cntl_id[3];
            unsigned char re_value[MAXRETURNVALUE];
         }Com_data_Master;    VB声明
        Public Type Com_data_Master
            Com_Port As String * 3
            chl_id As String * 3
            cntl_id As String * 3
            re_value As String * MAXRETURNVALUE
        End Type    const MAXRETURNVALUE = 34    FLAG2结构:
            STATUS  使能标志"0","1"
    1st flag2 强行闯入警报使能标志  ("0", "1")
    2nd flag2 门警报使能标志  ("0", "1")
    3rd flag2 手动开门时区使能标志 ("0" , "1")
    4th flag2 警报时区使能标志  ("0", "1")
    5th flag2 开门过长时区使能标志  ("0" , "1")
    6th flag2 开门过长触发警报使能标志  ("0" , "1")
    7th flag2 电锁时区使能标志  ("0" , "1")
        VC:
        typedef struct FLAG2_TYPE
        {
            unsigned char status[1];
        }Flag2;
        VB:
        Public Type Flag2
            Status As String * 1
        End Type函数返回值:
        83:  通信成功。
        87:  通信失败。
        82:  控制器没有响应。
        86:  输入参数无效。函数描述:
        设置控制器的警报状态。输出值格式(函数执行成功):
        "FA" 控制器接受了无效命令(控制器不支持该命令)。
        "FB" 设置成功。例子:     Dim cCom as Com_data_Master
        Dim f1 as Flag2
        Dim f2 as Flag2
        Dim f3 as Flag2
        Dim f4 as Flag2
        Dim f5 as Flag2
        Dim f6 as Flag2
        Dim f7 as Flag2
        dim nRet as long     f1.Status = "1"
        f2.Status = "1"
        f3.Status = "1"
        f4.Status = "1"
        f5.Status = "1"
        f6.Status = "1"
        f7.Status = "1"
        cCom.com_port = "001"
        cCom.chl_id = "127"
        cCom.cntl_id = "001"
        nRet = enab_alarmic( cCom, f1,f2,f3,f4,f5,f6,f7 )变量和常量的定义在
    interface
          public
               Fenction      gDel_Alloc (cCom  As Com_data_Master)  As       
                               Smallint:stacall;external'acic03.dll';
    下定义吗?
    请救救小弟!!谢谢!!