zoukankan      html  css  js  c++  java
  • 动态调用链接库(dll) 续

    20141118

    最近一周做了一个关于仓库管理,拣货任务分配的模块,其中涉及到刷卡自动打印领取任务的功能点。

    技术点:

    C#调用C++、delphi的动态链接库。动态链接库的调用方法不同。效果也不相同。

    DLL位置:执行程序根目录下面

    例:

    第一种:

    [DllImport("shuipiao1.dll", EntryPoint = "checkticket", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]

    第二种:

    [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]

    第三种:
    [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi, EntryPoint = "mifs_anticoll", CallingConvention = CallingConvention.Cdecl)]

    实际案例:

      #region 调用dll接口方法
            // 打开串口 OpenComm(char *commPort,DWORD baud)
    
            [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
    
            //        [DllImport("MifsDLL.dll", EntryPoint = "OpenComm", SetLastError = true,
            //CharSet = CharSet.Auto, ExactSpelling = false,
            //CallingConvention = CallingConvention.StdCall)]
    
            //打开串口
            public static extern Int16 OpenComm(string port, long baud);
    
            //装载密钥 WINAPI mifs_load_key(uchar _Mode, uchar _SecNr, uchar *Key)
            [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
            //打开串口
            public static extern Int16 mifs_load_key(uint Mode, uint SecNr, byte[] Key);
    
    
    
            [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
            //mifs_request_2 寻卡
            public static extern Int16 mifs_request_2(long mode);
    
    
    
            [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi, EntryPoint = "mifs_anticoll", CallingConvention = CallingConvention.Cdecl)]
            public static extern Int16 mifs_anticoll(uint Bcnt, byte[] port);
    
    
    
            //mifs_select(uchar *_Snr)
    
            [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi, EntryPoint = "mifs_select", CallingConvention = CallingConvention.Cdecl)]
            //选卡
            public static extern Int16 mifs_select(byte[] port);
    
            //mifs_authentication(uchar auth_mode,uchar *snr,uchar key_sector)
            [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
            //认证秘钥
            public static extern Int16 mifs_authentication(uint mode, byte[] Snr, uint Key);
    
            //读卡数据 mifs_read(uchar _Adr, uchar *_Data)  出口函数16byte
    
            [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi, EntryPoint = "mifs_read", CallingConvention = CallingConvention.Cdecl)]
            public static extern Int16 mifs_read(uint Adr, byte[] Data);
    
            //int WINAPI mifs_write(uchar _Adr, uchar *_Data) 写员工号
            [DllImport("MifsDLL.dll", CharSet = CharSet.Ansi)]
            public static extern Int16 mifs_write(uint Adr, byte[] Data);
    
            // 蜂鸣 mifs_Buzzer(uchar bb)
            [DllImport("MifsDLL.dll", EntryPoint = "mifs_Buzzer", SetLastError = true,
             CharSet = CharSet.Auto, ExactSpelling = false,
             CallingConvention = CallingConvention.StdCall)]
            public static extern void mifs_Buzzer(int bb);
            #endregion
    
  • 相关阅读:
    CentOS 7 安装MySQL 5.6遇到的疑难杂症小结
    ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'
    MS SQL巡检系列——检查外键字段是否缺少索引
    Linix登录报"/etc/profile: line 11: syntax error near unexpected token `$'{ ''"
    MS SQL巡检系列——检查重复索引
    [转载】——故障排除:Shared Pool优化和Library Cache Latch冲突优化 (文档 ID 1523934.1)
    SQL Server 2014 Database Mail重复发送邮件特殊案例
    ORACLE推导参数Derived Parameter介绍
    SQL SERVER 数据库各版本功能对比
    SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析
  • 原文地址:https://www.cnblogs.com/cwgyn/p/dll.html
Copyright © 2011-2022 走看看