void FillEntity(BaseChannel <IRfid> channel, Entity entity, delegate_speakLocation func_speakLocation) { var info = entity.Tag as ProcessInfo; // 是否强迫获取标签内容 bool force = info.GetTagInfoError == "errorGetTagInfo" || StringUtil.IsInList("verifyEAS", ActionMode); // bool force = info.GetTagInfoError == "errorGetTagInfo"; // testing // 2020/10/7 // 尝试获取 PII if (string.IsNullOrEmpty(entity.PII) || force) { if (InventoryData.UidExsits(entity.UID, out string pii) && force == false) { entity.PII = pii; var set_result = SetTargetCurrentLocation(info); if (set_result.Value == -1 && set_result.ErrorCode == "noCurrentShelfNo") { // 删除这个事项,以便后面可以重新处理 RemoveEntity(entity); } } else { string error = null; if (channel.Started == false) { error = "22 RFID 通道尚未启动"; } else { var get_result = channel.Object.GetTagInfo(entity.ReaderName, entity.UID, Convert.ToUInt32(entity.Antenna), "quick"); /* * // testing * get_result.Value = -1; * get_result.ErrorInfo = "GetTagInfo() error error 1234 error 1345"; */ if (get_result.Value == -1) { SoundMaker.ErrorSound(); // 朗读出错 entity 数量 var count = InventoryData.AddErrorEntity(entity, out bool changed); if (changed == true) { App.CurrentApp.SpeakSequence(count.ToString()); } info.GetTagInfoError = "errorGetTagInfo"; info.ErrorCount++; error = get_result.ErrorInfo; // TODO: 当有一行以上 GetTagInfo() 出错时,要不断发出响声警告。 entity.Error = error; if (info.ErrorCount > 5) { if (func_speakLocation?.Invoke(entity) == true) { info.ErrorCount = 0; } } } else { entity.Error = null; // 把 PII 显示出来 InventoryData.UpdateEntity(entity, get_result.TagInfo, out string type); info.GetTagInfoError = ""; // 层架标 if (type == "location") { info.IsLocation = true; if (string.IsNullOrEmpty(entity.PII) == false) { // 设置当前层架标 SwitchCurrentShelfNo(entity); } } else { var set_result = SetTargetCurrentLocation(info); if (set_result.Value == -1 && set_result.ErrorCode == "noCurrentShelfNo") { // 删除这个事项,以便后面可以重新处理 RemoveEntity(entity); } } // 朗读出错 entity 数量 var count = InventoryData.RemoveErrorEntity(entity, out bool changed); if (changed == true) { App.CurrentApp.SpeakSequence(count.ToString()); } if (StringUtil.IsInList("blankTag", entity.ErrorCode)) { App.CurrentApp.SpeakSequence(entity.Error); } } } } } }
void FillEntity(BaseChannel <IRfid> channel, Entity entity, delegate_speakLocation func_speakLocation) { var info = entity.Tag as ProcessInfo; // 2020/10/7 // 尝试获取 PII if (string.IsNullOrEmpty(entity.PII)) { if (InventoryData.UidExsits(entity.UID, out string pii)) { entity.PII = pii; } else { string error = null; if (channel.Started == false) { error = "RFID 通道尚未启动"; } else { var get_result = channel.Object.GetTagInfo(entity.ReaderName, entity.UID, Convert.ToUInt32(entity.Antenna), "quick"); /* * // testing * get_result.Value = -1; * get_result.ErrorInfo = "GetTagInfo() error error 1234 error 1345"; */ if (get_result.Value == -1) { SoundMaker.ErrorSound(); // 朗读出错 entity 数量 var count = InventoryData.AddErrorEntity(entity, out bool changed); if (changed == true) { App.CurrentApp.SpeakSequence(count.ToString()); } info.State = "errorGetTagInfo"; info.ErrorCount++; error = get_result.ErrorInfo; // TODO: 当有一行以上 GetTagInfo() 出错时,要不断发出响声警告。 entity.Error = error; if (info.ErrorCount > 5) { if (func_speakLocation?.Invoke(entity) == true) { info.ErrorCount = 0; } } } else { entity.Error = null; // 把 PII 显示出来 InventoryData.UpdateEntity(entity, get_result.TagInfo); info.State = ""; // 朗读出错 entity 数量 var count = InventoryData.RemoveErrorEntity(entity, out bool changed); if (changed == true) { App.CurrentApp.SpeakSequence(count.ToString()); } if (StringUtil.IsInList("blankTag", entity.ErrorCode)) { App.CurrentApp.SpeakSequence(entity.Error); } } } } } if (string.IsNullOrEmpty(entity.PII) == false && string.IsNullOrEmpty(info.State)) { info.State = "processing"; // 正在获取册信息 InventoryData.AppendList(entity); InventoryData.ActivateInventory(); } }