Exemplo n.º 1
0
        /// <summary>
        /// 端口数据接收
        /// </summary>
        /// <param name="param"></param>
        private void SerialPortDataReceived(ParsingParameter param)
        {
            if (!PortHelper.IsConnection)
            {
                return;
            }
            if (PortHelper.CurrentForm != this)
            {
                return;
            }
            this.Invoke(new EventHandler(delegate
            {
                if (tb_OldPwd.TextLength == 0)
                {
                    return;
                }
                try
                {
                    if (param.FunctionAddress == 65)
                    {
                        DistanceParameter distanceparam = DataParsing.DistanceParsingContent(param.DataContent);
                        switch (distanceparam.Command)
                        {
                        case 13:    //卡密码
                            switch (distanceparam.AuxiliaryCommand)
                            {
                            case 0:
                                if (distanceparam.TypeParameter.CardType == CardTypes.PasswordMistake)
                                {
                                    DisplayContent("5 米定距卡:" + distanceparam.CardNumber + " 加载失败。", (int)distanceparam.TypeParameter.CardType, Color.Red);
                                }
                                else
                                {
                                    DisplayContent("5 米定距卡:" + distanceparam.CardNumber + " 加载成功。", (int)distanceparam.TypeParameter.CardType, Color.Black);
                                }
                                break;

                            case 8:
                                DisplayContent("5 米定距卡加载结束。", Color.Black);
                                p_Top.Enabled = true;
                                IsEnd         = true;
                                SetDevicedNewPwd();
                                break;

                            default:
                                DisplayContent("5 米定距卡加载失败,请将 5 米定距卡放置在读写区域内,请重新操作。");
                                p_Top.Enabled = true;
                                break;
                            }
                            break;

                        case 160:    //设备密码
                            if (!IsEnd)
                            {
                                if (distanceparam.AuxiliaryCommand == 0)    //成功
                                {
                                    DisplayContent("多功能操作平台初始化设置成功,进行 5 米定距卡口令加载。", Color.Black);

                                    PortHelper.SerialPortWrite(PortAgreement.GetDistanceCardEncryption(Dal_DevicePwd.DistanceSystemPassword.Pwd));
                                }
                                else    //失败
                                {
                                    DisplayContent("多功能操作平台初始化设置失败,请重新操作。");
                                    p_Top.Enabled = true;
                                }
                            }
                            else
                            {
                                if (distanceparam.AuxiliaryCommand != 0)
                                {
                                    SetDevicedNewPwd();
                                }
                            }
                            break;

                        default:
                            DisplayContent("未知数据内容。");
                            p_Top.Enabled = true;
                            break;
                        }
                    }
                    else
                    {
                        DisplayContent("未知数据内容。");
                        p_Top.Enabled = true;
                    }
                }
                catch (Exception ex)
                {
                    DisplayContent(ex.Message);
                    p_Top.Enabled = true;
                    CustomExceptionHandler.GetExceptionMessage(ex);
                }
            }));
        }