Esempio n. 1
0
        //读卡
        public CardInfo ReadCard()
        {
            Log.Debug("ReadCard start");
            CardInfo ret = new CardInfo();

            try
            {
                //检查卡的初始状态
                int result = MingHua.CheckCard(Port, Baud);
                //有错误,显示错误内容,不是新卡不当做错误
                if (result != 0 && result != -15)
                {
                    //获取错误代码
                    ret.Err = Errors[-result - 1];
                    return(ret);
                }

                if (Cards == null)
                {
                    throw new Exception("Cards is null");
                }
                //循环调用所有厂家的
                foreach (CardConfig info in Cards)
                {
                    ICard card = info.Card;
                    //如果不是本厂家的,看下一个
                    int r = card.CheckGasCard(Port, Baud);
                    Log.Debug("check " + info.Name + " is " + r);
                    if (r != 0)
                    {
                        continue;
                    }
                    //读卡
                    string  kh    = "";
                    Int32   ql    = 0;
                    decimal money = 0;
                    Int16   cs    = 0;
                    Int16   bkcs  = 0;
                    r = card.ReadGasCard(Port, Baud, ref kh, ref ql, ref money, ref cs, ref bkcs);
                    if (r < 0)
                    {
                        //获取错误代码
                        ret.Err = Errors[-r - 1];
                    }
                    else
                    {
                        //返回读取结果
                        ret.Factory    = info.Name;
                        ret.CardID     = kh;
                        ret.Gas        = ql;
                        ret.Money      = money;
                        ret.Times      = cs;
                        ret.RenewTimes = bkcs;
                    }
                    return(ret);
                }
                //一个都没有找到
                ret.Err = "未知厂家";
                return(ret);
            }
            catch (Exception e)
            {
                Log.Debug("ReadCard exception");
                ret.Exception = e.Message;
                return(ret);
            }
        }
Esempio n. 2
0
        private int TestCard()
        {
            MessageBox.Show("请先把卡片拔出,再插入。");
            //获取本地端口号,波特率
            short Port   = short.Parse(Config.GetConfig("Port"));
            int   Baud   = int.Parse(Config.GetConfig("Baud"));
            int   handle = MingHua.ic_init(Port, Baud);

            if (handle < 0)
            {
                HintList.Items.Add("错误:打开串口错误!");
                return(-1);
            }
            else
            {
                HintList.Items.Add("打开串口正常!");
            }

            try
            {
                if (MingHua.chk_102(handle) != 0)
                {
                    HintList.Items.Add("错误:不是102卡!");
                    return(-1);
                }
                //读代码保护区(从0E开始)
                byte[] buf = new byte[4];
                if (MingHua.srd_102(handle, 0, 0x0E, 4, buf) != 0)
                {
                    HintList.Items.Add("错误:读卡错误。");
                    return(-1);
                }
                else
                {
                    HintList.Items.Add("读卡正常。");
                }
                //擦卡
                if (MingHua.ser_102(handle, 0, 0x0E, 4) == 0)
                {
                    if (MingHua.swr_102(handle, 0, 0x0E, 4, buf) == 0)
                    {
                        HintList.Items.Add("写卡正常。");
                        return(0);
                    }
                    else
                    {
                        HintList.Items.Add("错误:写卡错误。");
                        return(-1);
                    }
                }
                else
                {
                    HintList.Items.Add("错误:写卡错误。");
                    return(-1);
                }
            }
            finally
            {
                MingHua.ic_exit(handle);
            }
        }