Exemple #1
0
    void Update()
    {
        if (!isQuit)
        {
            try {
                if (LastResult != "http://www.google.com")
                {
                    QRMessage message = QRMessage.CreateFromJSON(LastResult);
                    isQuit = true;
                    // camTexture.Stop();
                    // qrThread.Abort();

                    // CustomNodeDssSignaler signalerScript = signaler.GetComponent(typeof(CustomNodeDssSignaler)) as CustomNodeDssSignaler;

                    signaler.PeerConnection    = PC;
                    signaler.Base64Key         = message.key;
                    signaler.Base64IV          = message.iv;
                    signaler.HttpServerAddress = message.ip;
                    signaler.RemotePeerId      = message.id;
                    signaler.LocalPeerId       = "HoloLens";
                    // if there is a signaler attached, it should grab the signaller now
                    LocalMedia.SetActive(true);
                    signaler.gameObject.SetActive(true);
                    signaler.PeerConnection.StartConnection();
                    gameObject.SetActive(false);
                }
            } catch (System.ArgumentException e) {
                print(e);
            }

            if (c == null)
            {
                c = camTexture.GetPixels32();
            }

            // encode the last found
            var textForEncoding = LastResult;
            if (shouldEncodeNow &&
                textForEncoding != null)
            {
                var color32 = Encode(textForEncoding, encoded.width, encoded.height);
                encoded.SetPixels32(color32);
                encoded.Apply();
                shouldEncodeNow = false;
            }
        }
    }
        public void MessageReceiveAndSend()//监听线程
        {
            try
            {
                bool result = false;
                while (ListenFlag)
                {
                    HttpListenerContext context = newlistener.GetContext();            //等待请求连接,没有请求则GetContext处于阻塞状态
                                        HttpListenerRequest request = context.Request; //客户端发送过来的消息
                    Parameters.MessageEncode.encValue = Encoding.GetEncoding(Field.Encoding);
                    var reader  = new StreamReader(request.InputStream, Parameters.MessageEncode.encValue);
                    var req_msg = reader.ReadToEnd();
                    Dictionary <string, string> req_Dic = UP_SDK.SDKUtil.CoverStringToDictionary(req_msg, Parameters.MessageEncode.encValue);
                    CaseTransNo++;
                    string     errorMessage = "";
                    MainWindow mw           = this;
                    QRMessage  ms           = new QRMessage(req_Dic);
                    if (Project.ProjectPath.Trim() != "" && SelectCaseName.Trim() != "" && CaseState == 0)
                    {
                        CaseState = 1;
                        StreamWriter sw = new StreamWriter(Project.ProjectPath.Trim() + "\\" + Project.ProjectName.Trim() + "\\" + SelectCaseName.Trim() + ".txt", false);
                        sw.Write("");
                        sw.Close();
                    }

                    else
                    {
                        Trace.SaveDefaultTrace("", 0, ms.GetMessageName());
                    }


                    string selectCaseType = "";
                    if (!SelectCaseName.Equals(""))
                    {
                        selectCaseType = SelectCaseName.Substring(0, 3);
                    }
                    switch (selectCaseType)
                    {
                        #region 联机非POS设备案例
                    case "OLD":
                        string munualMessage = "";
                        if (CaseTransNo == 1)
                        {
                            result = true;
                        }
                        if (!OnlineDeviceTestCase.RunTestCase(ms, context.Response, ref CaseTransNo, ref mw, ref errorMessage, SelectCaseName, ref munualMessage))
                        {
                            result = false;
                            SetCaseFlag(2);
                            continue;
                        }
                        if (CaseTransNo == 0 && result)
                        {
                            if (!munualMessage.Equals(""))
                            {
                                string errorMunualResult = CaseResult(munualMessage);
                                if (errorMunualResult.Equals(""))
                                {
                                    SetCaseFlag(1);
                                }
                                else
                                {
                                    SetErrorText(errorMunualResult, Color.Red);
                                    SetCaseFlag(2);
                                }
                            }
                            else
                            {
                                SetCaseFlag(1);
                            }
                        }
                        break;
                        #endregion


                    default:
                        CaseTransNo = 0;
                        //接收检测,接收显示,参数处理,应答显示,应答
                        ms.ShowRequestMessage(ref errorMessage, ref mw, CaseTransNo);

                        string   MessageName = ms.GetMessageName();
                        Encoding req_encode  = ms.GetMessageEncoding();



                        //应答初始化
                        string ResponseMessage = null;
                        Dictionary <string, string> res_Dic = new Dictionary <string, string>();
                        if (IsResponse)    //判断是否应答
                        {
                            bool isCorrect = true;
                            switch (MessageName)
                            {
                            case "申请二维码":
                                res_Dic = ms.PackageResponseMessage_Apply_BarCode("https://qr.95516.com/00010001/62203343506412524330099992411134", ARCset.Text, Tools.GetRespMsg(ARCset.Text), "未完成", null, "", ref isCorrect, ref errorMessage);
                                ms.ShowResponseMessage(ref mw, CaseTransNo, res_Dic, ref errorMessage);
                                ResponseMessage = UP_SDK.SDKUtil.CreateLinkString(res_Dic, true, false, req_encode);
                                break;

                            case "APP消费":
                                res_Dic = ms.PackageResponseMessage_ReAPP_Sale("00", null, ref isCorrect, ref errorMessage);
                                ms.ShowResponseMessage(ref mw, CaseTransNo, res_Dic, ref errorMessage);
                                ResponseMessage = UP_SDK.SDKUtil.CreateLinkString(res_Dic, true, false, req_encode);
                                break;

                            case "交易状态查询":
                                res_Dic = ms.PackageResponseMessage_Transaction_Status_Query(ARCset.Text, Tools.GetRespMsg(ARCset.Text), "05", Tools.GetRespMsg("05"), null, "", ref isCorrect, ref errorMessage);
                                ms.ShowResponseMessage(ref mw, CaseTransNo, res_Dic, ref errorMessage);
                                ResponseMessage = UP_SDK.SDKUtil.CreateLinkString(res_Dic, true, false, req_encode);
                                break;

                            case "消费撤销":
                                res_Dic = ms.PackageResponseMessage_Consumption_Revocation(ARCset.Text, Tools.GetRespMsg(ARCset.Text), "完成", null, "", ref isCorrect, ref errorMessage);
                                ms.ShowResponseMessage(ref mw, CaseTransNo, res_Dic, ref errorMessage);
                                ResponseMessage = UP_SDK.SDKUtil.CreateLinkString(res_Dic, true, false, req_encode);
                                break;

                            case "退货":
                                res_Dic = ms.PackageResponseMessage_Refund(ARCset.Text, Tools.GetRespMsg(ARCset.Text), "完成", null, "", ref isCorrect, ref errorMessage);
                                ms.ShowResponseMessage(ref mw, CaseTransNo, res_Dic, ref errorMessage);
                                ResponseMessage = UP_SDK.SDKUtil.CreateLinkString(res_Dic, true, false, req_encode);
                                break;
                            }
                            if (errorMessage.Trim() != "")
                            {
                                errorMessage = MessageName + "错误信息:\r\n" + errorMessage;
                            }
                            if (ResponseMessage != null)
                            {
                                bool sendFlag = ms.SendMessage(ref mw, ResponseMessage, context.Response, 200, Parameters.MessageEncode.encValue);
                                if (!sendFlag)
                                {
                                    SetErrorText(MessageName + "报文未能正确发送", Color.Red);
                                }
                            }
                            else
                            {
                                SetErrorText(MessageName + "不响应,原因:未能组成正确响应报文。", Color.Red);
                            }
                        }
                        else
                        {
                            SetErrorText(MessageName + "报文不响应,原因:人工关闭了响应报文开关。", Color.Red);
                        }



                        if (errorMessage.Trim() != "")
                        {
                            SetErrorText(errorMessage, Color.Red);
                        }

                        break;
                    }
                }

                //案例测试end

                if (!ListenFlag)
                {
                    SetConnectStatue("停止监听");
                }
            }
            catch (Exception e)
            {
                SetConnectStatue("停止监听");
                ListenFlag = false;

                if (newlistener != null)
                {
                    if (newlistener.IsListening)
                    {
                        newlistener.Stop();
                    }
                    newlistener.Close();
                }
                Trace.WriteWrongTrace(e.Message);//获取错误信息
                return;
            }
        }