Exemplo n.º 1
0
        /// <summary>
        /// 为request提供默认处理方式
        /// </summary>
        /// <param name="request"></param>
        public void AddRequestWithDefaultOperation(RequestItem request)
        {
            // 对于respond进行检验
            request.ValidateResponseHandler += response =>
            {
                if (response[0] != 0x81)
                {
                    string s = new StringBuilder().AppendFormat(
                        "接收错误数据 {0} : {1}", DateTime.Now.ToString(TimePattern),
                        BytesToHexString(response)).ToString();

                    //App.Current.Dispatcher.Invoke((Action) delegate
                    //{

                    _runningStatus.Add(s);
                    //});

                    return(false);
                }

                byte[] CrcTmp = new byte[2];
                if (CalculateCRCHelper(response, response.Length - 2, ref CrcTmp))
                {
                    if (response[response.Length - 2] == CrcTmp[0] &&
                        response[response.Length - 1] == CrcTmp[1])
                    {
                        string s = new StringBuilder().AppendFormat(
                            "接收 {0} : {1}", DateTime.Now.ToString(TimePattern),
                            BytesToHexString(response)).ToString();
                        //App.Current.Dispatcher.Invoke((Action) delegate
                        //{
                        _runningStatus.Add(s);
                        //});
                        return(true);
                    }
                    else
                    {
                        Debug.WriteLine($"验证错误 传入的数组为: {BitConverter.ToString(response)}");
                        Debug.WriteLine($"验证错误 计算出的CRC为: {BitConverter.ToString(CrcTmp)}");
                        return(false);
                    }
                }
                Debug.WriteLine($"CRC验证错误");
                return(false);
            };

            // 对于验证有效的respond默认尝试发送下一条request(如果有的话)
            request.AfterResponseValidatedHandler += async(sender, args) =>
            {
                await Continue();
            };

            _requests.Add(request);
        }
Exemplo n.º 2
0
        public void AddRequest(RequestItem request)
        {
            // 对于验证有效的respond默认尝试发送下一条request(如果有的话)
            // 不应该提供默认选项,需要在判断有效后,再决定后面的处理方式
            //request.AfterResponseValidatedHandler += (sender, args) =>
            //{
            //    SendNextRequest();
            //};

            _requests.Add(request);
        }