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; } }