zoukankan      html  css  js  c++  java
  • dll 中含有unsigned char数组,被C#调用

      public class OPVcDll
        {
            #region 对USB接口的使用(PHILIPH卡)
            [DllImport("dcrf32.dll")]
            public static extern int dc_init(Int16 port, long baud);  //初试化
            [DllImport("dcrf32.dll")]
            public static extern short dc_exit(int icdev);
            [DllImport("dcrf32.dll")]
            public static extern short dc_reset(int icdev, uint sec);
            [DllImport("dcrf32.dll")]
            public static extern short dc_request(int icdev, char _Mode, ref uint TagType);
            [DllImport("dcrf32.dll")]
            public static extern short dc_card(int icdev, char _Mode, ref ulong Snr);
            [DllImport("dcrf32.dll")]
            public static extern short dc_halt(int icdev);
            [DllImport("dcrf32.dll")]
            public static extern short dc_anticoll(int icdev, char _Bcnt, ref ulong IcCardNo);
            [DllImport("dcrf32.dll")]
            public static extern short dc_beep(int icdev, uint _Msec);////蜂鸣
            [DllImport("dcrf32.dll")]
            public static extern short dc_authentication(int icdev, int _Mode, int _SecNr);

            [DllImport("dcrf32.dll")]
            public static extern short dc_load_key(int icdev, int mode, int secnr, [In] byte[] nkey);  //密码装载到读写模块中
            [DllImport("dcrf32.dll")]
            public static extern short dc_load_key_hex(int icdev, int mode, int secnr, string nkey);  //密码装载到读写模块中

            [DllImport("dcrf32.dll")]
            public static extern short dc_write(int icdev, int adr, [In] byte[] sdata);  //向卡中写入数据
            [DllImport("dcrf32.dll")]
            public static extern short dc_write(int icdev, int adr, [In] string sdata);  //向卡中写入数据
            [DllImport("dcrf32.dll")]
            public static extern short dc_write_hex(int icdev, int adr, [In] string sdata);  //向卡中写入数据(转换为16进制)

            [DllImport("dcrf32.dll")]
            public static extern short dc_read(int icdev, int adr, [Out] byte[] sdata);

            [DllImport("dcrf32.dll")]
            public static extern short dc_read(int icdev, int adr, [MarshalAs(UnmanagedType.LPStr)] StringBuilder sdata);  //从卡中读数据
            [DllImport("dcrf32.dll")]
            public static extern short dc_read_hex(int icdev, int adr, [MarshalAs(UnmanagedType.LPStr)] StringBuilder sdata);  //从卡中读数据(转换为16进制)
            [DllImport("dcrf32.dll")]
            public static extern int a_hex(string oldValue, ref string newValue, Int16 len);  //普通字符转换成十六进制字符
            [DllImport("dcrf32.dll")]
            public static extern void hex_a(ref string oldValue, ref string newValue, int len);  //十六进制字符转换成普通字符
            /// <summary>
            /// 读取卡信息  (unsigned char * )
            /// </summary>
            /// <param name="icdev"></param>
            /// <param name="_Snrlen"></param>
            /// <returns></returns>
            [DllImport("PdocMACDll.dll")]
            public static extern int mif_CPU_Card(int icdev, [MarshalAs(UnmanagedType.LPArray)]byte[] _Snrlen);
            public static  int mif_CPU_Card(int icdev, ref byte[] _Snrlen)
            {
                return mif_CPU_Card(icdev, _Snrlen);
            }
            #endregion

            /// <summary>
            /// 初始化设备
            /// </summary>
            public static int Icdev
            {
                get
                {
                    int dc_init = OPVcDll.dc_init(100, 115200);
                    if (dc_init > 0)
                    {
                        return dc_init;
                    }
                    else
                    {
                        throw new Exception("初始化失败!");
                    }

                }

            }

            /// <summary>
            /// 获取卡信息 
            /// </summary>
            /// <returns></returns>
            public static string ReadIc()
            {
                string cardId = "";
                int st;
                byte[] icCardNo = new byte[16];
                char tt = (char)1;
                uint ss = 0;
                int dc_init = Icdev;
                dc_beep((Int16)dc_init, 50);
                st =dc_request(dc_init, tt, ref ss); //检测卡
                if (st!=0)
                {
                     dc_exit(dc_init); //退出
                    throw new Exception("获取卡信息出错!");
                }
                //是否为CPU卡
                if (ss != 8)
                {
                    dc_exit(dc_init); //退出
                    throw new Exception("该卡为非CPU卡不可以在本功能中发行!");
                }
                     
                mif_CPU_Card(dc_init, ref icCardNo);
                string str = Encoding.Default.GetString(icCardNo);
                if (str != null)
                {
                    cardId = str;
                }
                else
                {
                    dc_exit(dc_init); //退出
                    throw new Exception("寻卡失败!");
                }
               
                return cardId;
            }

  • 相关阅读:
    [算法说明]SAP HANA PAL 指数平滑算法说明 沧海
    [Step By Step]SAP HANA PAL演绎推理算法Lite Aprior实现LITEAPRIORIRULE 沧海
    [PAL规范]SAP HANA PAL K分值硬聚类算法KMeans编程规范KMEANS 沧海
    [Step By Step]SAP HANA PAL K分值硬聚类算法KMeans Validated实现案例VALIDATEKMEANS 沧海
    SAP HANA AFL插件库升级后之前生成的存储过程升级方法(PAL升级方法) 沧海
    [PAL规范]SAP HANA PAL单指数平滑编程规范 沧海
    [PAL规范]SAP HANA PAL演绎推理算法Lite Apriori编程规范LITEAPRIORIRULE 沧海
    [Step By Step]SAP HANA PAL K分值硬聚类算法KMeans实现KMEANS 沧海
    [Step By Step]SAP HANA PAL Time Series单指数平滑算法SINGLESMOOTH(Single Exponential Smoothing) 沧海
    [PAL规范]SAP HANA PAL K分值硬聚类算法KMeans Validated编程规范VALIDATEKMEANS 沧海
  • 原文地址:https://www.cnblogs.com/520cc/p/3080022.html
Copyright © 2011-2022 走看看