コード例 #1
0
        /// <summary>
        /// 发卡器初始化
        /// </summary>
        /// <param name="add">机器地址 0——15</param>
        /// <returns>返回串口句柄</returns>
        public IntPtr Init()
        {
            string port = Settings.Default.发卡器端口;

            port = "com" + port;
            IntPtr hadler = K101_DLL.K101_CommOpenWithBaud(port, 9600);

            return(hadler);
        }
コード例 #2
0
        /// <summary>
        /// 发卡器初始化
        /// </summary>
        /// <param name="add">机器地址 0——15</param>
        /// <returns>返回串口句柄</returns>
        public IntPtr Init()
        {
            string port = SkyComm.getvalue("发卡器Port");

            port = "com" + port;
            IntPtr hadler = K101_DLL.K101_CommOpenWithBaud(port, 9600);

            return(hadler);
        }
コード例 #3
0
        public string ReadCard()
        {
            IntPtr hadler = Init();
            int    rs     = 0;

            if (hadler.ToInt32() == 0)
            {
                MyMsg.MsgInfo("端口打开失败!");
                return(string.Empty);
            }

            try
            {
                string        cardNo     = string.Empty;
                StringBuilder sb         = new StringBuilder(1024);
                StringBuilder ByteArray2 = new StringBuilder(1024);
                byte          _track     = Convert.ToByte(0x31);
                byte[]        _DataLen   = new byte[1];
                int           i          = K101_DLL.K101_ReadMagcardDecode(hadler, false, Convert.ToByte(0), _track, _DataLen, ByteArray2, sb);
                if (i != 0)
                {
                    MyMsg.MsgInfo("卡机读卡失败!");
                    return(cardNo);
                }

                if (Convert.ToInt32(_DataLen[0]) > 0)
                {
                    cardNo = ByteArray2.ToString().Trim().Substring(2, Convert.ToInt32(_DataLen[0]) - 2);
                }
                else
                {
                    MyMsg.MsgInfo("磁卡数据错误!或是空卡");
                }

                return(cardNo);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                ClosePort(hadler);
            }
        }
コード例 #4
0
        /// <summary>
        /// 检查卡机状态
        /// </summary>
        /// <returns></returns>
        public bool CheckCardPosition()
        {
            IntPtr hadler = Init();
            int    rs     = 0;

            if (hadler.ToInt32() == 0)
            {
                MyMsg.MsgInfo("端口打开失败!");
                return(false);
            }
            try
            {
                StringBuilder sb         = new StringBuilder(1024);
                byte[]        ByteArray2 = new byte[2];
                int           i          = K101_DLL.K101_CheckCardPosition(hadler, false, Convert.ToByte(0), ByteArray2, sb);
                if (i != 0)
                {
                    MyMsg.MsgInfo("读取卡片在机器里的位置失败!");
                    return(false);
                }

                string state = string.Empty;
                switch (ByteArray2[0])
                {
                //case 0x30:
                //    state = "通道无卡";
                //    break;
                case 0x31:
                    state = "读磁卡位置有卡";
                    break;

                case 0x32:
                    state = "IC卡位置有卡";
                    break;

                case 0x33:
                    state = "前端夹卡位置有卡";
                    break;

                case 0x34:
                    state = "前端不夹卡位置有卡";
                    break;

                case 0x35:
                    state = "卡不在标准位置";
                    break;

                case 0x36:
                    state = "卡片正在传动过程中";
                    break;
                }

                if (state != string.Empty)
                {
                    MyMsg.MsgInfo(state);
                    return(false);
                }

                switch (ByteArray2[1])
                {
                case 0x30:
                    state = "卡箱无卡";
                    break;
                    //case 0x31:
                    //    state = "卡箱卡片不足, 提醒需要加卡";
                    //    break;
                    //case 0x32:
                    //    state = "IC卡箱卡片足够";
                    //    break;
                }

                if (state != string.Empty)
                {
                    MyMsg.MsgInfo(state);
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                ClosePort(hadler);
            }
        }
コード例 #5
0
 /// <summary>
 /// 关闭端口
 /// </summary>
 /// <param name="hadler">打开的串口句柄</param>
 public void ClosePort(IntPtr hadler)
 {
     int i = K101_DLL.K101_CommClose(hadler);
 }
コード例 #6
0
        public int WriteCard(string cardData)
        {
            IntPtr hadler = Init();
            int    rs     = 0;

            if (hadler.ToInt32() == 0)
            {
                MyMsg.MsgInfo("端口打开失败!");
                return(-1);
            }

            try
            {
                StringBuilder sb       = new StringBuilder(1024);
                byte          _Voltage = Convert.ToByte(0x30);
                int           i        = K101_DLL.K101_IcCardPowerOn(hadler, false, Convert.ToByte(0), _Voltage, sb);
                if (i != 0)
                {
                    MyMsg.MsgInfo("IC卡上电失败");
                    return(-1);
                }


                byte[] _PWData = new byte[3];
                _PWData[0] = Convert.ToByte("FF", 16);
                _PWData[1] = Convert.ToByte("FF", 16);
                _PWData[2] = Convert.ToByte("FF", 16);
                i          = K101_DLL.K101_SLE4442VerifyPWD(hadler, false, Convert.ToByte(0), _PWData, sb);
                if (i != 0)
                {
                    MyMsg.MsgInfo("SLE4442卡片验证密码失败");
                    return(-1);
                }


                string msg   = Pub.Encrypt(cardData, "SOFT-HIS");
                byte[] _data = Encoding.ASCII.GetBytes(msg);

                i = K101_DLL.K101_SLE4442Write(hadler, false, Convert.ToByte(0), 27, 88, _data, sb);
                if (i != 0)
                {
                    MyMsg.MsgInfo("写入SLE4442卡片数据失败");
                    return(-1);
                }


                i = K101_DLL.K101_IcCardPowerOff(hadler, false, Convert.ToByte(0), sb);
                if (i != 0)
                {
                    MyMsg.MsgInfo("IC卡下电失败");
                    return(-1);
                }

                return(0);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                ClosePort(hadler);
            }
        }
コード例 #7
0
        /// <summary>
        /// 传动卡片
        /// </summary>
        /// <param name="cmd"></param>
        /// <returns></returns>
        public bool MoveCard(string cmd)
        {
            IntPtr hadler = Init();
            int    rs     = 0;

            if (hadler.ToInt32() == 0)
            {
                MyMsg.MsgInfo("端口打开失败!");
                return(false);
            }
            try
            {
                StringBuilder sb = new StringBuilder(1024);

                if (cmd != string.Empty)
                {
                    byte bt = new byte();
                    switch (cmd)
                    {
                    case "移动到读磁卡位":
                        bt = 0x30;
                        break;

                    case "传动到IC卡位":
                        bt = 0x31;
                        break;

                    case "传动到前端夹卡位":
                        bt = 0x32;
                        break;

                    case "弹出卡片":
                        bt = 0x33;
                        break;

                    case "回收卡片":
                        bt = 0x34;
                        break;

                    case "传动到射频卡位":
                        bt = 0x35;
                        break;

                    case "抖动弹出":
                        bt = 0x36;
                        break;
                    }



                    int i = K101_DLL.K101_MoveCard(hadler, false, Convert.ToByte(0), bt, sb);
                    if (i != 0)
                    {
                        MyMsg.MsgInfo("卡片传动失败");
                        return(false);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                ClosePort(hadler);
            }
        }