private void UpdateViewControls(ref CSearchTaskResponse cSearchTaskResponse) { ListViewItem listItem = new ListViewItem(); listViewDataDisplay.BeginUpdate(); int iItemCount = listViewDataDisplay.Items.Count; listItem.Text = (iItemCount + 1).ToString(); listItem.SubItems.Add(cSearchTaskResponse.SearchTaskResponse.DataCollections[0].captureNo.ToString()); listItem.SubItems.Add(cSearchTaskResponse.SearchTaskResponse.DataCollections[0].lastCaptureNo.ToString()); listItem.SubItems.Add(cSearchTaskResponse.SearchTaskResponse.DataCollections[0].name); listItem.SubItems.Add(cSearchTaskResponse.SearchTaskResponse.DataCollections[0].employeeNo); listItem.SubItems.Add(cSearchTaskResponse.SearchTaskResponse.DataCollections[0].IDCardNo); string CardNos = null; string FpIDs = null; if (cSearchTaskResponse.SearchTaskResponse.DataCollections[0].CardNoList != null) { foreach (string cardNo in cSearchTaskResponse.SearchTaskResponse.DataCollections[0].CardNoList) { string tmp = string.Format("{0};", cardNo); CardNos += tmp; } listItem.SubItems.Add(CardNos); } else { listItem.SubItems.Add(CardNos); } if (cSearchTaskResponse.SearchTaskResponse.DataCollections[0].FingerprintList != null) { foreach (CFingerprintList fp in cSearchTaskResponse.SearchTaskResponse.DataCollections[0].FingerprintList) { string tmp = string.Format("{0};", fp.fingerprintID); FpIDs += tmp; } listItem.SubItems.Add(FpIDs); } else { listItem.SubItems.Add(FpIDs); } listItem.SubItems.Add(cSearchTaskResponse.SearchTaskResponse.DataCollections[0].dataType); listItem.SubItems.Add(cSearchTaskResponse.SearchTaskResponse.DataCollections[0].riskDataMark.ToString()); this.listViewDataDisplay.Items.Add(listItem); listViewDataDisplay.EndUpdate(); }
private void SavePcituresAndFP(ref CSearchTaskResponse cSearchTaskResponse, ref MessageData m) { foreach (CDataCollections data in cSearchTaskResponse.SearchTaskResponse.DataCollections) { if (data.FingerprintList != null) { foreach (CFingerprintList fp in data.FingerprintList) { byte[] bytes = Convert.FromBase64String(fp.fingerprint); string strPath = string.Format("{0}\\{1}_{2}_{3} fingerprint{4}.dat", Environment.CurrentDirectory, data.captureNo, data.name, data.employeeNo, fp.fingerprintID); AcsDemoPublic.WriteBytesToFile(bytes, bytes.Length, strPath); } } if (m.pictureLen > 0) { string strPicPath = string.Format("{0}\\{1}_{2}_{3} facePicture.jpg", Environment.CurrentDirectory, data.captureNo, data.name, data.employeeNo); AcsDemoPublic.WriteBytesToFile(m.picture, m.pictureLen, strPicPath); if (!picDic.ContainsKey(data.captureNo)) { picDic.Add(data.captureNo, strPicPath); } } if (m.infraredPicLen > 0) { string strInfraedPicPath = string.Format("{0}\\{1}_{2}_{3} infraredFacePicture.jpg", Environment.CurrentDirectory, data.captureNo, data.name, data.employeeNo); AcsDemoPublic.WriteBytesToFile(m.infraredPic, m.infraredPicLen, strInfraedPicPath); if (!infraredPicDic.ContainsKey(data.captureNo)) { infraredPicDic.Add(data.captureNo, strInfraedPicPath); } } if (data.FaceFeature != null) { CFaceFeatureSingle cSingle = new CFaceFeatureSingle(); cSingle.FaceFeature = data.FaceFeature; string strSigle = JsonConvert.SerializeObject(cSingle); if (!featureDic.ContainsKey(data.captureNo)) { featureDic.Add(data.captureNo, strSigle); } } } }
public void ProcessResult(MessageData m) { if (m.searchMsg == SearchMsgType.RECV_DATA) { Debug.Assert(m.data != null); // 包含节点\"errorCode\",则按照responsestatus状态解析 if (m.data.Contains("\"errorCode\"")) { CResponseStatus status = JsonConvert.DeserializeObject <CResponseStatus>(m.data); string strTemp = string.Format("Search data device return failure status.errorcode[{0}] errormsg[{1}]", status.errorCode, status.errorMsg); addLog(false, strTemp); rConfig.stop(); return; } // 按照查询结果解析 CSearchTaskResponse cSearchTaskResponse = null; try { cSearchTaskResponse = JsonConvert.DeserializeObject <CSearchTaskResponse>(m.data); } catch (Exception e) { addLog(false, "Data DeserializeObject failed " + e.Message); } if (cSearchTaskResponse == null) { addLog(false, "Data return invalid"); // 查询下一条数据 SearchNextData(); return; } if (cSearchTaskResponse.SearchTaskResponse.responseStatusStrg.Equals("NO MATCH")) { addLog(true, "Response NO MATCH data, search over"); rConfig.stop(); return; } if (cSearchTaskResponse.SearchTaskResponse.numOfMatches != 1) { addLog(true, "Warning: numOfMatches!=1!!! carptureNo: " + cSearchTaskResponse.SearchTaskResponse.DataCollections[0].captureNo); } if (bFirst) { totalMaches = cSearchTaskResponse.SearchTaskResponse.totalMatches; bFirst = false; } // 保存数据并且在UI上展现 UpdateViewControls(ref cSearchTaskResponse); SavePcituresAndFP(ref cSearchTaskResponse, ref m); if (cSearchTaskResponse.SearchTaskResponse.responseStatusStrg.Equals("OK")) { addLog(true, "Response OK data, search over"); rConfig.stop(); return; } if (iSearchPos >= totalMaches - 1) { addLog(true, "search over"); rConfig.stop(); return; } // 查询下一条数据 SearchNextData(); } else if (m.searchMsg == SearchMsgType.RECV_FAILIURE) { addLog(false, "Receive failed status runtime error: " + m.errorcode); // 查询下一条数据 SearchNextData(); } else if (m.searchMsg == SearchMsgType.RECV_FINISH) { addLog(true, "Receive with long config status: " + m.status + " " + m.searchMsg); rConfig.stop(); } return; }