public string Parse(List <byte> data) { byte disk = data[2]; for (int i = 3; i < data.Count - 3; i = i + 4) { int p = MachineControlProtocol.HexConverToDec(data[i], data[i + 1]); p = p > 90 ? (p - 90) : p; int v = MachineControlProtocol.HexConverToDec(data[i + 2], data[i + 3]); if (p != 0) { switch (disk) { case 0x30: UpdateLatestRgtVol(1, p, v); break; case 0x31: UpdateLatestRgtVol(2, p, v); break; } } } for (int i = 0; i < data.Count; i++) { if (data[i] == 0x1C) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleCode = string.Format("{0}{1}{2}{3}", (char)data[i + 1], (char)data[i + 2], (char)data[i + 3], (char)data[i + 4]); trouble.TroubleInfo = null; myBatis.TroubleLogSave("TroubleLogSave", trouble); } } return(null); }
public string Parse(List <byte> data) { int n = MachineControlProtocol.HexConverToDec(data[2], data[3], data[4]); TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "比色杯"; trouble.TroubleCode = string.Format("CUV001"); trouble.TroubleInfo = n + "号比色杯有污垢,测试无法在此号比色杯中进行"; myBatis.TroubleLogSave("TroubleLogSave", trouble); return(n + "号比色杯有污垢"); }
public string Parse(List <byte> data) { TroubleLogService TroubleLogSer = new TroubleLogService(); int n = MachineControlProtocol.HexConverToDec(data[2], data[3]); TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = MyResources.Instance.FindResource("Parse1101").ToString(); trouble.TroubleCode = "CUV001"; trouble.TroubleInfo = n + MyResources.Instance.FindResource("Parse1102").ToString();//string.Format("{0}号比色杯有污垢,测试无法在此号比色杯中进行. ", n); ; TroubleLogSer.Save(trouble); return(n + MyResources.Instance.FindResource("Parse1103").ToString());//string.Format("{0}号比色杯有污垢. ", n); }
public string Parse(List <byte> data) { if (data.Count < (5 + 7)) { return(null); } TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleCode = string.Format("{0}{1}{2}{3}{4}{5}{6}", (char)data[2], (char)data[3], (char)data[4], (char)data[5], (char)data[6], (char)data[7], (char)data[8]); trouble.TroubleInfo = MachineControlProtocol.BytelistToHexString(data);; myBatis.TroubleLogSave("TroubleLogSave", trouble); return(trouble.TroubleCode); }
public string Parse(List <byte> Data) { try { //RunService RunSer = new RunService(); //RGTPOSManager RGTPOSMgr = new RGTPOSManager(); //TroubleLogService TroubleLogSer = new TroubleLogService(); //RealTimeCUVDataService RealTimeCUVDataSer = new RealTimeCUVDataService(); int i = 2; //温度 for (int j = 0; j < Data.Count; j++) { if (Data[j] == 0x0E) { i = j; break; } } float tcv = MachineControlProtocol.HexConverToFloat(Data[i + 2], Data[i + 3], Data[i + 4], Data[i + 5]); myBatis.UpdateLatestCUVPanelTemperature(tcv * 10); //LogService.Log(string.Format("React Panel Temp.:{0};", tcv * 10), LogType.Debug); //试剂余量 for (int j = 0; j < Data.Count; j++) { if (Data[j] == 0x2B) { i = j; break; } } int R1P = MachineControlProtocol.HexConverToDec(Data[i + 1], Data[i + 2]); int R1V = MachineControlProtocol.HexConverToDec(Data[i + 3], Data[i + 4]); R1P = R1P > 90 ? (R1P - 90) : R1P; UpdateLatestRgtVol(1, R1P, R1V); RgtWarning(1, R1P); int R2P = MachineControlProtocol.HexConverToDec(Data[i + 5], Data[i + 6]); int R2V = MachineControlProtocol.HexConverToDec(Data[i + 7], Data[i + 8]); UpdateLatestRgtVol(2, R2P, R2V); RgtWarning(2, R2P); //LogService.Log(string.Format("R1 Pos.:{0} R1 Vol:{1} R2 Pos.:{2} R2 Vol:{3}", R1P, R1V, R2P, R2V), LogType.Debug); //查找错误报头 int erindex = 0; for (int j = 0; j < Data.Count(); j++) { if (Data[j] == 0x1C) { erindex = j; break; } } int errcount = Data[erindex + 2] - 0x30; if (errcount > 0) { for (int j = 0; j < errcount; j++) { int index = (erindex + 6) + j * 7; TroubleLog t = new TroubleLog(); t.TroubleCode = string.Format("{0}{1}{2}{3}{4}{5}{6}", (char)Data[index], (char)Data[index + 1], (char)Data[index + 2], (char)Data[index + 3], (char)Data[index + 4], (char)Data[index + 5], (char)Data[index + 6]); if (t.TroubleCode == "E000415" || t.TroubleCode == "E000615") { } else { t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = "设备"; t.TroubleInfo = null; myBatis.TroubleLogSave("TroubleLogSave", t); } //LogService.Log("Err code:" + t.TroubleCode, LogType.Debug); } } } catch { TroubleLog t = new TroubleLog(); t.TroubleCode = @"0X25001"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = "设备"; t.TroubleInfo = null; myBatis.TroubleLogSave("TroubleLogSave", t); } return(null); }
void RgtWarning(int d, int p) { float rgtwarncount = myBatis.GetRgtWarnCount(); float rgtleastcount = myBatis.GetRgtLeastCount(); ReagentStateInfoR1R2 rgp = myBatis.GetReagentStateInfoByPos(d, p); ReagentSettingsInfo rsi = myBatis.GetReagentSettingsInfoByPos(d, p); if (rgp != null) { AssayProjectParamInfo arp = myBatis.GetAssayProjectParamInfoByNameAndType("GetAssayProjectParamInfoByNameAndType", new AssayProjectInfo() { ProjectName = rsi.ProjectName, SampleType = rsi.ReagentType }); int c = 0; int v = System.Convert.ToInt32(rsi.ReagentContainer.Substring(0, rsi.ReagentContainer.IndexOf("ml"))) * (rgp.ValidPercent - 2) / 100 * 1000; switch (d) { case 1: c = arp.Reagent1VolSettings == 0 ? 0 : v / arp.Reagent1VolSettings; if (c < rgtleastcount) { //if (RunSer.IsMutiRgtEnable() == true)//多试剂位开关标志 //{ // RGTPosition mrgt = RGTPOSMgr.GetEnableMutiRgtPosition(rgp); // if (mrgt != null) // { // RGTPOSMgr.BetweenMutiRgtPositionAndRgtPositionChange(mrgt, rgp); // TroubleLog trouble = new TroubleLog(); // trouble.TroubleCode = @"0000773"; // trouble.TroubleType = TROUBLETYPE.WARN; // trouble.TroubleUnit = "试剂"; // trouble.TroubleInfo = "试剂位" + p + "项目" + rgp.Assay + "试剂1由于余量不足开始启用其多试剂位" + mrgt.Position;//string.Format("试剂位{0}项目{1}试剂1由于余量不足开始启用其多试剂位{2}. ", p, rgp.Assay, mrgt.Position); // TroubleLogSer.Save(trouble); // } // else // { // if (RunSer.IsLockRgtEnable() == true) // { // rgp.IsLocked = true; // RGTPOSMgr.UpdateLockState(rgp); // TroubleLog trouble = new TroubleLog(); // trouble.TroubleCode = @"0000773"; // trouble.TroubleType = TROUBLETYPE.WARN; // trouble.TroubleUnit = "试剂"; // trouble.TroubleInfo = MyResources.Instance.FindResource("Parse0839").ToString() + p + MyResources.Instance.FindResource("Parse0832").ToString() + rgp.Assay + MyResources.Instance.FindResource("Parse08312").ToString();//string.Format("试剂位{0}项目{1}试剂1由于余量不足将锁定其对应的工作表. ", p, rgp.Assay); // TroubleLogSer.Save(trouble); // } // else // { // TroubleLog trouble = new TroubleLog(); // trouble.TroubleCode = @"0000773"; // trouble.TroubleType = TROUBLETYPE.ERR; // trouble.TroubleUnit = "试剂"; // trouble.TroubleInfo = MyResources.Instance.FindResource("Parse0839").ToString() + p + MyResources.Instance.FindResource("Parse0832").ToString() + rgp.Assay + MyResources.Instance.FindResource("Parse08313").ToString();// string.Format("试剂位{0}项目{1}试剂1由于余量不足. ", p, rgp.Assay); // TroubleLogSer.Save(trouble); // } // } //} //else //{ //if (RunSer.IsLockRgtEnable() == true) //{ rsi.Locked = true; myBatis.UpdateLockState("R1", rsi); TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = "试剂"; trouble.TroubleInfo = "试剂位" + p + "项目" + rgp.ProjectName + "余量不足将锁定其对应的工作表"; //string.Format("试剂位{0}项目{1}试剂1由于余量不足将锁定其对应的工作表. ", p, rgp.Assay); myBatis.TroubleLogSave("TroubleLogSave", trouble); //} //else //{ // TroubleLog trouble = new TroubleLog(); // trouble.TroubleCode = @"0000773"; // trouble.TroubleType = TROUBLETYPE.ERR; // trouble.TroubleUnit = "试剂"; // trouble.TroubleInfo = MyResources.Instance.FindResource("Parse0839").ToString() + p + MyResources.Instance.FindResource("Parse0832").ToString() + rgp.Assay + MyResources.Instance.FindResource("Parse08315").ToString();// string.Format("试剂位{0}项目{1}试剂1由于余量不足. ", p, rgp.Assay); // TroubleLogSer.Save(trouble); //} //} } if (c < rgtwarncount && c > rgtleastcount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = "试剂"; trouble.TroubleInfo = "试剂位" + p + "项目" + rgp.ProjectName + "试剂1即将耗尽"; // string.Format("试剂位{0}项目{1}:试剂1余量即将耗尽. ", p, rgp.Assay); myBatis.TroubleLogSave("TroubleLogSave", trouble); return; } break; case 2: c = arp.Reagent2VolSettings == 0 ? 0 : v / arp.Reagent2VolSettings; if (c < rgtleastcount) { //if (RunSer.IsMutiRgtEnable() == true)//多试剂位开关标志 //{ // RGTPosition mrgt = RGTPOSMgr.GetEnableMutiRgtPosition(rgp); // if (mrgt != null) // { // RGTPOSMgr.BetweenMutiRgtPositionAndRgtPositionChange(mrgt, rgp); // TroubleLog trouble = new TroubleLog(); // trouble.TroubleCode = @"0000773"; // trouble.TroubleType = TROUBLETYPE.WARN; // trouble.TroubleUnit = "试剂"; // trouble.TroubleInfo = MyResources.Instance.FindResource("Parse0839").ToString() + p + MyResources.Instance.FindResource("Parse0832").ToString() + rgp.Assay + MyResources.Instance.FindResource("Parse08317").ToString() + mrgt.Position;// string.Format("试剂位{0}项目{1}试剂2由于余量不足开始启用其多试剂位{2}. ", p, rgp.Assay, mrgt.Position); // TroubleLogSer.Save(trouble); // } // else // { // if (RunSer.IsLockRgtEnable() == true) // { // rgp.IsLocked = true; // RGTPOSMgr.UpdateLockState(rgp); // TroubleLog trouble = new TroubleLog(); // trouble.TroubleCode = @"0000773"; // trouble.TroubleType = TROUBLETYPE.WARN; // trouble.TroubleUnit = "试剂"; // trouble.TroubleInfo = MyResources.Instance.FindResource("Parse0839").ToString() + p + MyResources.Instance.FindResource("Parse0832").ToString() + rgp.Assay + MyResources.Instance.FindResource("Parse08318").ToString();// string.Format("试剂位{0}项目{1}试剂2由于余量不足将锁定其对应的工作表. ", p, rgp.Assay); // TroubleLogSer.Save(trouble); // } // else // { // TroubleLog trouble = new TroubleLog(); // trouble.TroubleCode = @"0000773"; // trouble.TroubleType = TROUBLETYPE.ERR; // trouble.TroubleUnit = "试剂"; // trouble.TroubleInfo = MyResources.Instance.FindResource("Parse0839").ToString() + p + MyResources.Instance.FindResource("Parse0832").ToString() + rgp.Assay + MyResources.Instance.FindResource("Parse08319").ToString();// string.Format("试剂位{0}项目{1}试剂2余量不足. ", p, rgp.Assay); // TroubleLogSer.Save(trouble); // } // } //} //else //{ //if (RunSer.IsLockRgtEnable() == true) //{ rsi.Locked = true; myBatis.UpdateLockState("R2", rsi); TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = "试剂"; trouble.TroubleInfo = "试剂位" + p + "项目" + rgp.ProjectName + "试剂2余量不足将锁定其对应的工作表"; //string.Format("试剂位{0}项目{1}试剂2余量不足将锁定其对应的工作表. ", p, rgp.Assay); myBatis.TroubleLogSave("TroubleLogSave", trouble); //} //else //{ // TroubleLog trouble = new TroubleLog(); // trouble.TroubleCode = @"0000773"; // trouble.TroubleType = TROUBLETYPE.ERR; // trouble.TroubleUnit = "试剂"; // trouble.TroubleInfo = MyResources.Instance.FindResource("Parse0839").ToString() + p + MyResources.Instance.FindResource("Parse0832").ToString() + rgp.Assay + MyResources.Instance.FindResource("Parse08321").ToString();// string.Format("试剂位{0}项目{1}试剂2余量不足. ", p, rgp.Assay); // TroubleLogSer.Save(trouble); //} //} } if (c < rgtwarncount && c > rgtleastcount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000775"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = "试剂"; trouble.TroubleInfo = "试剂位" + p + "项目" + rgp.ProjectName + "试剂2余量即将耗尽"; // string.Format("试剂位{0}项目{1}:试剂2余量即将耗尽. ", p, rgp.Assay); myBatis.TroubleLogSave("TroubleLogSave", trouble); return; } break; } } }
/// <summary> /// 根据条码解析数据 /// </summary> /// <param name="barcode"></param> /// <param name="b1"></param> /// <returns></returns> ReagentSettingsInfo AnanlyeBarcode(string barcode, string b1) { string code = barcode.Substring(0, 3); ReagentItem reagentItem = mybatis.getReagentItemInfo(code); if (reagentItem == null) { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777772"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "与封闭项目不匹配"; mybatis.TroubleLogSave("TroubleLogSave", t); return(null); } ReagentSettingsInfo reagentSettingsInfo = new ReagentSettingsInfo(); reagentSettingsInfo.ProjectName = reagentItem.ItemName; //1:S10ml 2:M 20ml 3:L 70ml 4:XL100m string RGTContainerType = null; string containertype = barcode.Substring(3, 1); switch (containertype) { case "1": reagentSettingsInfo.ReagentContainer = "20ml"; break; case "2": reagentSettingsInfo.ReagentContainer = "40ml"; break; case "3": reagentSettingsInfo.ReagentContainer = "70ml"; break; case "4": reagentSettingsInfo.ReagentContainer = "100ml"; break; } if (string.IsNullOrEmpty(reagentSettingsInfo.ReagentContainer)) { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777773"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "容器类型系统不识别"; mybatis.TroubleLogSave("TroubleLogSave", t); return(null); } //1:R1 2:R2 3:R3 4:R4 5:稀释液 6:清洗剂 string reagenttype = barcode.Substring(4, 1); switch (reagenttype) { case "1": reagentSettingsInfo.AssayParamType = "R1"; break; case "2": reagentSettingsInfo.AssayParamType = "R2"; break; case "3": reagentSettingsInfo.AssayParamType = "R3"; break; case "4": reagentSettingsInfo.AssayParamType = "R4"; break; case "5": reagentSettingsInfo.AssayParamType = "Diluent"; break; //case "6": ReagentPosition.AssayPara = "R4"; break; } switch (this.Disk) { case 1: if (reagentSettingsInfo.AssayParamType == "R1" || reagentSettingsInfo.AssayParamType == "Diluent") { reagentSettingsInfo.ReagentName = reagentItem.ItemName + "R1"; reagentSettingsInfo.ReagentVol = reagentItem.R1Vol; } else { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777774"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "试剂类型R1识别失败"; mybatis.TroubleLogSave("TroubleLogSave", t); return(null); } break; case 2: if (reagentSettingsInfo.AssayParamType == "R2") { reagentSettingsInfo.ReagentName = reagentItem.ItemName + "R2"; reagentSettingsInfo.ReagentVol = reagentItem.R2Vol; } else { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777775"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "试剂类型R2识别失败"; mybatis.TroubleLogSave("TroubleLogSave", t); return(null); } break; } string batchnum = barcode.Substring(5, 6); //项目试剂类型 string projectReagenttype = barcode.Substring(12, 1); switch (projectReagenttype) { case "1": reagentSettingsInfo.ReagentType = "血清"; break; case "2": reagentSettingsInfo.ReagentType = "尿液"; break; case "3": reagentSettingsInfo.ReagentType = "稀释液"; break; case "4": reagentSettingsInfo.ReagentType = "清洗剂"; break; } reagentSettingsInfo.BatchNum = batchnum; string str1 = batchnum.Substring(0, 2); int str1int = 0; try { str1int = int.Parse(str1); } catch { return(null); } str1 = "20" + (str1int + 1).ToString() + batchnum.Substring(2); try { reagentSettingsInfo.ValidDate = DateTime.ParseExact(str1, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); } catch { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777776"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "识别失败"; mybatis.TroubleLogSave("TroubleLogSave", t); return(null); } reagentSettingsInfo.Barcode = b1; mybatis.DeleteAssayProject(reagentItem.ItemName, reagentSettingsInfo.ReagentType); DoSaveAssayPorjectPara(reagentItem, reagentSettingsInfo.ReagentType); DoSaveAssayProjectInfo(reagentItem, reagentSettingsInfo.ReagentType); mybatis.SaveResultSets(reagentItem, reagentSettingsInfo.ReagentType); //测试序列 mybatis.SaveProRunSequence(reagentItem.ItemName, reagentSettingsInfo.ReagentType); return(reagentSettingsInfo); }
public string Parse(List <byte> Data) { int i = 0; //温度 for (int j = 0; j < Data.Count; j++) { if (Data[j] == 0x0E) { i = j; break; } } myBatis.UpdateLatestWaterState(Data[i + 1], Data[i + 2]); int inttemp = MachineControlProtocol.HexConverToDec(Data[i + 3], Data[i + 4], Data[i + 5]); myBatis.UpdateLatestCUVPanelTemperature(inttemp * 0.1f); //LogService.Log(string.Format("反应盘温度:{0};", tcv * 10), LogType.Debug); //试剂余量 for (int j = 0; j < Data.Count; j++) { if (Data[j] == 0x2B) { i = j; break; } } int R1P = MachineControlProtocol.HexConverToDec(Data[i + 1], Data[i + 2]); int R1V = MachineControlProtocol.HexConverToDec(Data[i + 3], Data[i + 4]); UpdateLatestRgtVol(1, R1P, R1V); RgtWarning(1, R1P); int R2P = MachineControlProtocol.HexConverToDec(Data[i + 5], Data[i + 6]); int R2V = MachineControlProtocol.HexConverToDec(Data[i + 7], Data[i + 8]); UpdateLatestRgtVol(2, R2P, R2V); RgtWarning(2, R2P); //LogService.Log(string.Format("R1位置:{0} R1体积:{1} R2位置:{2} R2体积:{3}", R1P, R1V, R2P, R2V), LogType.Debug); //查找错误报头 int erindex = -1; for (int j = 0; j < Data.Count(); j++) { if (Data[j] == 0x1C) { erindex = j; break; } } if (erindex > 0)//发生设备故障 { int errcount = Data[erindex + 2] - 0x30; for (int j = 0; j < errcount; j++) { int index = (erindex + 3) + j * 10; int erwn = MachineControlProtocol.HexConverToDec(Data[index], Data[index + 1], Data[index + 2]); string ercode = string.Format("{0}{1}{2}{3}{4}{5}{6}", (char)Data[index + 3], (char)Data[index + 4], (char)Data[index + 5], (char)Data[index + 6], (char)Data[index + 7], (char)Data[index + 8], (char)Data[index + 9]); if (ercode == "E000415" || ercode == "E000615") { } else { TroubleLog t = new TroubleLog(); t.TroubleCode = ercode; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = "设备"; t.TroubleInfo = null; myBatis.TroubleLogSave("TroubleLogSave", t); } string cmdname = string.Format("{0}{1}", (char)Data[index + 3], (char)Data[index + 4]); if (cmdname == "77" && Data[index + 5] == 0x30)//R1 { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000770"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = string.Format("试剂仓1清洗剂添加失败. "); myBatis.TroubleLogSave("TroubleLogSave", trouble); } if (cmdname == "77" && Data[index + 5] == 0x31)//R2 { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000771"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = string.Format("试剂仓2清洗剂添加失败. "); myBatis.TroubleLogSave("TroubleLogSave", trouble); } if (cmdname == "57" && Data[index + 5] == 0x30)//SMP { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000570"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = string.Format("样本位清洗剂添加失败. "); myBatis.TroubleLogSave("TroubleLogSave", trouble); } } } return(null); }
void RgtWarning(int d, int p) { RGTPOSManager RGTPOSMgr = new RGTPOSManager(); AssayRunParaService AssayRunParaSer = new AssayRunParaService(); RunService RunSer = new RunService(); TroubleLogService TroubleLogSer = new TroubleLogService(); int rgtwarncount = RunSer.GetRgtWarnCount(); int rgtleastcount = RunSer.GetRgtLeastCount(); RGTPosition rgp = RGTPOSMgr.Get(1, p.ToString()); if (rgp != null) { AssayRunPara arp = AssayRunParaSer.Get(rgp.Assay) as AssayRunPara; int c = 0; int v = rgp.CType.Volume * rgp.ValidPercent / 100 * 1000; switch (rgp.AssayPara) { case "R1": c = arp.R1Vol == 0 ? 0 : v / arp.R1Vol; if (c < rgtleastcount) { if (RunSer.IsMutiRgtEnable() == true) //多试剂位开关标志 { RGTPosition mrgt = RGTPOSMgr.GetEnableMutiRgtPosition(rgp); if (mrgt != null) { RGTPOSMgr.BetweenMutiRgtPositionAndRgtPositionChange(mrgt, rgp); TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂1由于余量不足开始启用其多试剂位{2}. ", p, rgp.Assay, mrgt.Position); TroubleLogSer.Save(trouble); } else { if (RunSer.IsLockRgtEnable() == true) { rgp.IsLocked = true; RGTPOSMgr.UpdateLockState(rgp); TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂1由于余量不足将锁定其对应的工作表. ", p, rgp.Assay); TroubleLogSer.Save(trouble); } else { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂1由于余量不足. ", p, rgp.Assay); TroubleLogSer.Save(trouble); } } } else { if (RunSer.IsLockRgtEnable() == true) { rgp.IsLocked = true; RGTPOSMgr.UpdateLockState(rgp); TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂1由于余量不足将锁定其对应的工作表. ", p, rgp.Assay); TroubleLogSer.Save(trouble); } else { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂1由于余量不足. ", p, rgp.Assay); TroubleLogSer.Save(trouble); } } } if (c < rgtwarncount && c > rgtleastcount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}:试剂1余量即将耗尽. ", p, rgp.Assay); TroubleLogSer.Save(trouble); return; } break; case "R2": c = arp.R2Vol == 0 ? 0 : v / arp.R2Vol; if (c < rgtleastcount) { if (RunSer.IsMutiRgtEnable() == true) //多试剂位开关标志 { RGTPosition mrgt = RGTPOSMgr.GetEnableMutiRgtPosition(rgp); if (mrgt != null) { RGTPOSMgr.BetweenMutiRgtPositionAndRgtPositionChange(mrgt, rgp); TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂2由于余量不足开始启用其多试剂位{2}. ", p, rgp.Assay, mrgt.Position); TroubleLogSer.Save(trouble); } else { if (RunSer.IsLockRgtEnable() == true) { rgp.IsLocked = true; RGTPOSMgr.UpdateLockState(rgp); TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂2由于余量不足将锁定其对应的工作表. ", p, rgp.Assay); TroubleLogSer.Save(trouble); } else { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂2余量不足. ", p, rgp.Assay); TroubleLogSer.Save(trouble); } } } else { if (RunSer.IsLockRgtEnable() == true) { rgp.IsLocked = true; RGTPOSMgr.UpdateLockState(rgp); TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂2余量不足将锁定其对应的工作表. ", p, rgp.Assay); TroubleLogSer.Save(trouble); } else { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"试剂"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}试剂2余量不足. ", p, rgp.Assay); TroubleLogSer.Save(trouble); } } } if (c < rgtwarncount && c > rgtleastcount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000775"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("试剂位{0}项目{1}:试剂2余量即将耗尽. ", p, rgp.Assay); TroubleLogSer.Save(trouble); return; } break; } } }
public void ProcessWaterStateA(int state1, int state2) { //高位状态码 int s1 = state1 - 0x30; //纯水槽低位浮球 if ((s1 & 0x01) == 0x01) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = MachineReturnState.TroubleUnit1; trouble.TroubleCode = @"10001"; trouble.TroubleInfo = MachineReturnState.RunService1; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //反应槽液位 if ((s1 & 0x02) == 0x02) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = MachineReturnState.TroubleUnit1; trouble.TroubleCode = @"10002"; trouble.TroubleInfo = MachineReturnState.RunService2; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //溢流罐液位报警 if ((s1 & 0x04) == 0x04) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = MachineReturnState.TroubleUnit1; trouble.TroubleCode = @"10003"; trouble.TroubleInfo = MachineReturnState.RunService3; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //真空罐液位报警 if ((s1 & 0x08) == 0x08) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = MachineReturnState.TroubleUnit1; trouble.TroubleCode = @"10004"; trouble.TroubleInfo = MachineReturnState.RunService4; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //低位状态码 int s2 = state2 - 0x30; //恒温值有问题 OK if ((s2 & 0x01) == 0x01) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = MachineReturnState.TroubleUnit1; trouble.TroubleCode = @"10005"; trouble.TroubleInfo = MachineReturnState.RunService5; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //恒温槽浮球错误 if ((s2 & 0x04) == 0x04) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = MachineReturnState.TroubleUnit1; trouble.TroubleCode = @"10007"; trouble.TroubleInfo = MachineReturnState.RunService6; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //纯水槽高位浮球 if ((s2 & 0x08) == 0x08) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = MachineReturnState.TroubleUnit1; trouble.TroubleCode = @"10008"; trouble.TroubleInfo = MachineReturnState.RunService7; myBatis.TroubleLogSave("TroubleLogSave", trouble); } }
public string Parse(List <byte> data) { ISEItemSDTTable ISEItemSDTTable = new ISEItemSDTTableService().GetNewISEItemSDTTable(); if (ISEItemSDTTable == null) { return(null); } int index = 5; ISEItemSDTTable.NaHighSampleValue = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.NaHighSampleBase = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.NaLowSampleValue = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.NaLowSampleBase = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.NaSlope = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.NaDilRate = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.KHighSampleValue = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.KHighSampleBase = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.KLowSampleValue = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.KLowSampleBase = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.KSlope = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.KDilRate = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.ClHighSampleValue = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.ClHighSampleBase = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.ClLowSampleValue = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.ClLowSampleBase = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.ClSlope = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.ClDilRate = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.HighThValue = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.HighThBase = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.LowThValue = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); index += 9; ISEItemSDTTable.LowThBase = MachineControlProtocol.HexConverToFloat(GetData(data, index, 9)); int s = MachineControlProtocol.HexConverToDec(data[2], data[3]); switch (s) { case 01: ISEItemSDTTable.RunLog = MyResources.Instance.FindResource("ParseA901").ToString(); break; case 97: ISEItemSDTTable.RunLog = MyResources.Instance.FindResource("ParseA902").ToString(); break; case 94: ISEItemSDTTable.RunLog = MyResources.Instance.FindResource("ParseA903").ToString(); break; case 79: ISEItemSDTTable.RunLog = MyResources.Instance.FindResource("ParseA904").ToString(); break; case 78: ISEItemSDTTable.RunLog = MyResources.Instance.FindResource("ParseA905").ToString(); break; case 77: ISEItemSDTTable.RunLog = MyResources.Instance.FindResource("ParseA905").ToString(); break; case 76: ISEItemSDTTable.RunLog = MyResources.Instance.FindResource("ParseA905").ToString(); break; } new ISEItemSDTTableService().DeleteNewISEItemSDTTable(); if (s == 1) { ISEItemSDTTable.State = "success"; new ISEItemSDTTableService().Save(ISEItemSDTTable); new ISEItemSDTTableService().SetISEItemSDTTableUsing(ISEItemSDTTable); } TroubleLog isestatetrouble = new TroubleLog(); isestatetrouble.TroubleCode = @"ISE00" + s.ToString("#00"); isestatetrouble.TroubleUnit = @"ISE"; if (s <= 50) { isestatetrouble.TroubleType = TROUBLETYPE.WARN; } else { isestatetrouble.TroubleType = TROUBLETYPE.ERR; } new TroubleLogService().Save(isestatetrouble); if (Math.Abs(ISEItemSDTTable.ClSlope) < 38 || Math.Abs(ISEItemSDTTable.ClSlope) > 65) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"ISE0000"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"ISE"; trouble.TroubleInfo = MyResources.Instance.FindResource("ParseA906").ToString(); new TroubleLogService().Save(trouble); } return(null); }
public string Parse(List <byte> Data) { ISECalibratedResult ISECalibratedResult = new ISECalibratedResult(); int sate = MachineControlProtocol.HexConverToDec(Data[2], Data[3]); TroubleLog isestatetrouble = new TroubleLog(); isestatetrouble.TroubleCode = @"ISE00" + sate.ToString("#00"); isestatetrouble.TroubleUnit = @"ISE"; if (sate <= 50) { isestatetrouble.TroubleType = TROUBLETYPE.WARN; } else { isestatetrouble.TroubleType = TROUBLETYPE.ERR; } new TroubleLogService().Save(isestatetrouble); if (sate == 73) { ISEItemSDTTable ISEItemSDTTable = new ISEItemSDTTableService().GetNewISEItemSDTTable(); if (ISEItemSDTTable != null) { ISEItemSDTTable.RunLog = MyResources.Instance.FindResource("ParseA905").ToString(); ISEItemSDTTable.State = "failed"; ISEItemSDTTable.IsUsed = false; new ISEItemSDTTableService().DeleteNewISEItemSDTTable(); new ISEItemSDTTableService().Save(ISEItemSDTTable); } } ISECalibratedResult.ResultState = sate.ToString(); int isecode = MachineControlProtocol.HexConverToDec(Data[4], Data[5], Data[6]); ISECalibratedResult.CalibratePosition = isecode.ToString(); int index = 7; ISECalibratedResult.NaE = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.NaF = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.NaG = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.KE = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.KF = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.KG = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.ClE = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.ClF = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.ClG = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.Th1H = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.Th1I = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.Th2H = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); index += 9; ISECalibratedResult.Th2I = MachineControlProtocol.ConvertArrayToString(GetData(Data, index, 9)); ISECalibratedResult.CalibrateCode = new RunService().GetISECalibrateCode() - 1; new ISECalibratedResultService().Save(ISECalibratedResult); return(null); }
public string Parse(List <byte> Data) { RunService RunSer = new RunService(); RGTPOSManager RGTPOSMgr = new RGTPOSManager(); TroubleLogService TroubleLogSer = new TroubleLogService(); int Pt1stWn = 0; int Pt2ndWn = 0; int Pt12thWn = 0; for (int i = 2; i < 886; i = i + 17) { int WN = MachineControlProtocol.HexConverToDec(Data[i], Data[i + 1], Data[i + 2]); int PT = MachineControlProtocol.HexConverToDec(Data[i + 3], Data[i + 4]); float PWL = MachineControlProtocol.HexConverToFloat(Data[i + 5], Data[i + 6], Data[i + 7], Data[i + 8], Data[i + 9], Data[i + 10]); float SWL = MachineControlProtocol.HexConverToFloat(Data[i + 11], Data[i + 12], Data[i + 13], Data[i + 14], Data[i + 15], Data[i + 16]); if (PWL > -0.000001 && PWL < 0.000001) { PWL = 6.8f; } else { PWL = (float)Math.Log10(10 / PWL) * MachineInfo.LightSpan; } if (SWL > -0.000001 && SWL < 0.000001) { SWL = 6.8f; } else { SWL = (float)Math.Log10(10 / SWL) * MachineInfo.LightSpan; } //Console.WriteLine(string.Format("WN:{0}PT:{1}PWL:{2}SWL:{3}", WN, PT, PWL, SWL)); if (WN != 0 && PT != 0) { RealTimeCUVDataService.SaveABS(WN, PT, PWL, SWL); } if (PT == 2) { Pt2ndWn = WN; } if (PT == 12) { Pt12thWn = WN; } } //温度 float tcv = MachineControlProtocol.HexConverToFloat(Data[887], Data[888], Data[889], Data[890]); RunSer.UpdateLatestCUVPanelTemperature(tcv); float tr1 = MachineControlProtocol.HexConverToFloat(Data[891], Data[892], Data[893], Data[894]); RunSer.UpdateLatestR1PanelTemperature(tr1); //Console.WriteLine(string.Format("the CUV-Panel temperature:{0};the R1-Panel temperature :{1}", tcv * 10, tr1 * 10)); //试剂余量 int R1P = MachineControlProtocol.HexConverToDec(Data[896], Data[897]); int R1V = MachineControlProtocol.HexConverToDec(Data[898], Data[899]); RGTPOSMgr.UpdateLatestRgtVol(1, R1P, R1V); int R2P = MachineControlProtocol.HexConverToDec(Data[900], Data[901]); int R2V = MachineControlProtocol.HexConverToDec(Data[902], Data[903]); RGTPOSMgr.UpdateLatestRgtVol(1, R2P, R2V); //Console.WriteLine(string.Format("R1P:{0} R1V:{1} R2P:{2} R2V:{3}", R1P, R1V, R2P, R2V)); //错误信息 if (Data[904] == 0x1C) { int errcount = Data[906] - 0x30; //Console.WriteLine(string.Format("there is {0} errors!", errcount)); for (int i = 0; i < errcount; i++) { int index = 907 + i * 7; switch (Data[index] - 0x30) { case 0x02: if (Pt2ndWn != 0) { RealTimeCUVDataService.RunningErrors(Pt2ndWn, "SMP"); } break; //SMP case 0x03: if (Pt1stWn != 0) { RealTimeCUVDataService.RunningErrors(Pt1stWn, "R1"); } break; //R1 case 0x04: if (Pt12thWn != 0) { RealTimeCUVDataService.RunningErrors(Pt12thWn, "R2"); } break; //R2 } TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = MyResources.Instance.FindResource("TroubleUnit1").ToString(); trouble.TroubleCode = string.Format("{0}{1}{2}{3}", (char)Data[index + 1], (char)Data[index + 2], (char)Data[index + 3], (char)Data[index + 4]); trouble.TroubleInfo = null; TroubleLogSer.Save(trouble); } } return(null); }
public void ProcessWaterState(int state1, int state2) { //高位状态码 int s1 = state1 - 0x30; //纯水槽低位浮球 if ((s1 & 0x01) == 0x01) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleCode = @"10001"; trouble.TroubleInfo = "纯水槽低位浮球状态异常"; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //反应槽液位 if ((s1 & 0x02) == 0x02) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleCode = @"10002"; trouble.TroubleInfo = "反应槽液位状态异常"; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //溢流罐液位报警 if ((s1 & 0x04) == 0x04) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleCode = @"10003"; trouble.TroubleInfo = "溢流罐液位状态异常"; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //真空罐液位报警 if ((s1 & 0x08) == 0x08) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleCode = @"10004"; trouble.TroubleInfo = "真空罐液位状态异常"; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //低位状态码 int s2 = state2 - 0x30; //恒温值有问题 OK if ((s2 & 0x01) == 0x01) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = "设备"; trouble.TroubleCode = @"10005"; trouble.TroubleInfo = "恒温槽水温不在理想状态下"; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //压力传感器有 OK if ((s2 & 0x02) == 0x02) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = "设备"; trouble.TroubleCode = @"10006"; trouble.TroubleInfo = "样本吸量器压力传感器状态异常"; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //恒温槽浮球错误 if ((s2 & 0x04) == 0x04) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleCode = @"10007"; trouble.TroubleInfo = "恒温槽浮球状态异常"; myBatis.TroubleLogSave("TroubleLogSave", trouble); } //纯水槽高位浮球 if ((s2 & 0x08) == 0x08) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleCode = @"10008"; trouble.TroubleInfo = "纯水槽高位浮球状态异常"; myBatis.TroubleLogSave("TroubleLogSave", trouble); } }
public string Parse(List <byte> Data) { //LogService.Log("开始解析测试数据包--------------", LogType.Trace,"log083.lg"); string machinestate = null; //int Pt1stWn = 0; //int Pt3ndWn = 0; //int Pt26thWn = 0; //空白值比色杯 int blki = 0; for (int j = 0; j < Data.Count(); j++) { if (Data[j] == 0x2B) { blki = j; blki += 8; break; } } //比色表编号 int BlkCUVNO = MachineControlProtocol.HexConverToDec(Data[blki + 1], Data[blki + 2], Data[blki + 3]); //测试编号 int BlkWN = MachineControlProtocol.HexConverToDec(Data[2], Data[3], Data[4]); myBatis.SaveCuvNumber(BlkWN, BlkCUVNO); //LogService.Log(string.Format("比色杯:{0}空白值:{1}", BlkCUVNO, BlkWN), LogType.Debug); //生化数据包 int i = 2; int count = 1; int PressErrorWn = 0; while (count <= 44) { //测试编号 int WN = MachineControlProtocol.HexConverToDec(Data[i], Data[i + 1], Data[i + 2]); //比色杯测光点 int PT = MachineControlProtocol.HexConverToDec(Data[i + 3], Data[i + 4]); //主波长比色杯值 float PWL = MachineControlProtocol.HexConverToFloat(Data[i + 5], Data[i + 6], Data[i + 7], Data[i + 8], Data[i + 9], Data[i + 10]); //次波长比色杯值 float SWL = MachineControlProtocol.HexConverToFloat(Data[i + 11], Data[i + 12], Data[i + 13], Data[i + 14], Data[i + 15], Data[i + 16]); if (PWL > -0.000001 && PWL < 0.000001) { PWL = 3.5f; } else { PWL = (float)Math.Log10(10 / PWL) * RunConfigureUtility.LightSpan; } if (SWL > -0.000001 && SWL < 0.000001) { SWL = 3.5f; } else { SWL = (float)Math.Log10(10 / SWL) * RunConfigureUtility.LightSpan; } if (WN != 0 && PT != 0) { SaveABS(WN, PT, PWL, SWL); } if (PT == 2) { PressErrorWn = WN; } //R1,R2,SMP错误日志对照 //if (PT == 1)1.10797185 //{ // Pt1stWn = WN; //} //if (PT == 3) //{ // Pt3ndWn = WN; //} //if (PT == 26) //{ // Pt26thWn = WN; //} i = i + 17; //Console.WriteLine(string.Format("WN:{0}PT:{1}PWL:{2}SWL:{3}", WN, PT, PWL, SWL)); //LogService.Log(string.Format("WN:{0}PT:{1}PWL:{2}SWL:{3}", WN, PT, PWL, SWL), LogType.Debug); count++; } //温度 for (int j = 0; j < Data.Count; j++) { if (Data[j] == 0x0E) { i = j; break; } } myBatis.UpdateLatestWaterState(Data[i + 1], Data[i + 2]); ProcessWaterState(Data[i + 1], Data[i + 2]); //压力传感器有 int s2 = Data[i + 2] - 0x30; if ((s2 & 0x02) == 0x02) { RunningErrors(PressErrorWn, "PE"); RealTimeCUVDataInfo rt = new RealTimeCUVDataInfo(); bool bExistRes = new ResultService().GetResultBeExistFromRealTimeWorkNum(PressErrorWn, out rt); if (bExistRes) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000571"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = "样本" + rt.SmpNo + "项目" + rt.Assay + "测试时检测到堵针" + "反应进程:" + rt.TC.ToString();// string.Format("样本{0}项目{1}测试时检测到堵针,反应进程{2}。", r.SMPNO, r.ItemName, r.TCNO); myBatis.TroubleLogSave("TroubleLogSave", trouble); } } if (IsWaterExchangeEnable(Data[i + 1], Data[i + 2]) == false) { //标示设备液路有异常 machinestate = "ME"; } int inttemp = MachineControlProtocol.HexConverToDec(Data[i + 3], Data[i + 4], Data[i + 5]); myBatis.UpdateLatestCUVPanelTemperature(inttemp * 0.1f); //LogService.Log(string.Format("反应盘温度:{0};", tcv * 10), LogType.Debug); //试剂余量 for (int j = 0; j < Data.Count; j++) { if (Data[j] == 0x2B) { i = j; break; } } int R1P = MachineControlProtocol.HexConverToDec(Data[i + 1], Data[i + 2]); int R1V = MachineControlProtocol.HexConverToDec(Data[i + 3], Data[i + 4]); //R1P = R1P > 45 ? (R1P - 45) : R1P; //UpdateLatestRgtVol(1, R1P, R1V); //修改试剂1余量和可测数量 myBatis.UpdateReagentValidPercent(R1V, 1, R1P); RgtWarning(1, R1P); //LogService.Log(string.Format("R1位置:{0} R1体积:{1}", R1P, R1V), LogType.Trace, "log083.lg"); int R2P = MachineControlProtocol.HexConverToDec(Data[i + 5], Data[i + 6]); int R2V = MachineControlProtocol.HexConverToDec(Data[i + 7], Data[i + 8]); //UpdateLatestRgtVol(2, R2P, R2V); //修改试剂2余量和可测数量 myBatis.UpdateReagentValidPercent(R2V, 2, R2P); RgtWarning(2, R2P); //LogService.Log(string.Format("R2位置:{0} R2体积:{1}", R2P, R2V), LogType.Trace, "log083.lg"); //查找错误报头 int erindex = -1; for (int j = 0; j < Data.Count(); j++) { if (Data[j] == 0x1C) { erindex = j; break; } } if (erindex > 0)//发生设备故障 { int errcount = Data[erindex + 2] - 0x30; for (int j = 0; j < errcount; j++) { int index = (erindex + 3) + j * 10; int erwn = MachineControlProtocol.HexConverToDec(Data[index], Data[index + 1], Data[index + 2]); string ercode = string.Format("{0}{1}{2}{3}{4}{5}{6}", (char)Data[index + 3], (char)Data[index + 4], (char)Data[index + 5], (char)Data[index + 6], (char)Data[index + 7], (char)Data[index + 8], (char)Data[index + 9]); if (ercode == "E000415" || ercode == "E000615" || ercode == "E000515") { } else { TroubleLog t = new TroubleLog(); t.TroubleCode = ercode; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = "设备"; t.TroubleInfo = null; myBatis.TroubleLogSave("TroubleLogSave", t); } RealTimeCUVDataInfo rt = new RealTimeCUVDataInfo(); bool bExistRes = new ResultService().GetResultBeExistFromRealTimeWorkNum(PressErrorWn, out rt); string cmdname = string.Format("{0}{1}", (char)Data[index + 3], (char)Data[index + 4]); if (cmdname == "77" && Data[index + 5] == 0x30)//R1 { RunningErrors(erwn, "R1"); if (bExistRes) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000770"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = "样本" + rt.SmpNo + "项目" + rt.Assay + "添加试剂1失败" + "反应进程:" + rt.TC.ToString();//string.Format("样本{0}项目{1}反应进程{2},添加试剂1失败. ", r.SMPNO, r.ItemName, r.TCNO); myBatis.TroubleLogSave("TroubleLogSave", trouble); } } if (cmdname == "77" && Data[index + 5] == 0x31)//R2 { RunningErrors(erwn, "R2"); if (bExistRes) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000771"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = "样本" + rt.SmpNo + "项目" + rt.Assay + "添加试剂2失败" + "反应进程:" + rt.TC.ToString(); //string.Format("样本{0}项目{1}反应进程{2},添加试剂2失败. ", r.SMPNO, r.ItemName, r.TCNO); myBatis.TroubleLogSave("TroubleLogSave", trouble); } } if (cmdname == "57" && Data[index + 5] == 0x30)//SMP { RunningErrors(erwn, "SMP"); if (bExistRes) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000570"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = "样本" + rt.SmpNo + "项目" + rt.Assay + "添加样本失败" + "反应进程:" + rt.TC.ToString(); //string.Format("样本{0}项目{1}反应进程{2},添加样本失败. ", r.SMPNO, r.ItemName, r.TCNO); myBatis.TroubleLogSave("TroubleLogSave", trouble); } } } } return(machinestate); }
void RgtWarning(int d, int p) { RGTPOSManager RGTPOSMgr = new RGTPOSManager(); RunService RunSer = new RunService(); TroubleLogService TroubleLogSer = new TroubleLogService(); int rgtwarncount = RunSer.GetRgtWarnCount(); int rgtleastcount = RunSer.GetRgtLeastCount(); RGTPosition rgp = RGTPOSMgr.Get(1, p.ToString()); if (rgp != null) { int c = 0; int v = rgp.CType.Volume * rgp.ValidPercent / 100 * 1000; switch (rgp.AssayPara) { case "R1": c = v / 250; if (c < rgtleastcount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000772"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("试剂位{0}清洗剂耗尽. ", p); TroubleLogSer.Save(trouble); return; } if (c < rgtwarncount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("试剂位{0}清洗剂即将耗尽. ", p); TroubleLogSer.Save(trouble); return; } break; case "R2": c = v / 150; if (c < rgtleastcount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000774"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("试剂位{0}清洗剂耗尽. ", p); TroubleLogSer.Save(trouble); return; } if (c < rgtwarncount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000775"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("试剂位{0}清洗剂即将耗尽. ", p); TroubleLogSer.Save(trouble); return; } break; } } }
public string Parse(List <byte> Data) { if (Data.Count < 904) { LogService.Log("非法数据包:" + MachineControlProtocol.BytelistToHexString(Data), LogType.Debug); return(null); } RunService RunSer = new RunService(); RGTPOSManager RGTPOSMgr = new RGTPOSManager(); TroubleLogService TroubleLogSer = new TroubleLogService(); int Pt1stWn = 0; int Pt3ndWn = 0; int Pt14thWn = 0; int BlkCUVNO = MachineControlProtocol.HexConverToDec(Data[904], Data[905], Data[906]); int BlkWN = MachineControlProtocol.HexConverToDec(Data[2], Data[3], Data[4]); for (int i = 2; i < 886; i = i + 17) { int WN = MachineControlProtocol.HexConverToDec(Data[i], Data[i + 1], Data[i + 2]); int PT = MachineControlProtocol.HexConverToDec(Data[i + 3], Data[i + 4]); if (PT == 1) { Pt1stWn = WN; } if (PT == 3) { Pt3ndWn = WN; } if (PT == 14) { Pt14thWn = WN; } } //温度 float tcv = MachineControlProtocol.HexConverToFloat(Data[887], Data[888], Data[889], Data[890]); RunSer.UpdateLatestCUVPanelTemperature(tcv * 10); float tr1 = MachineControlProtocol.HexConverToFloat(Data[891], Data[892], Data[893], Data[894]); RunSer.UpdateLatestR1PanelTemperature(tr1 * 10); LogService.Log(string.Format("反应盘温度:{0};试剂盘温度 :{1}", tcv * 10, tr1 * 10), LogType.Debug); //试剂余量 int R1P = MachineControlProtocol.HexConverToDec(Data[896], Data[897]); int R1V = MachineControlProtocol.HexConverToDec(Data[898], Data[899]); RGTPOSMgr.UpdateLatestRgtVol(1, R1P, R1V); RgtWarning(1, R1P); int R2P = MachineControlProtocol.HexConverToDec(Data[900], Data[901]); int R2V = MachineControlProtocol.HexConverToDec(Data[902], Data[903]); RGTPOSMgr.UpdateLatestRgtVol(1, R2P, R2V); RgtWarning(1, R2P); LogService.Log(string.Format("R1位置:{0} R1体积:{1} R2位置:{2} R2体积:{3}", R1P, R1V, R2P, R2V), LogType.Debug); //查找错误报头 int erindex = 0; for (int i = 0; i < Data.Count(); i++) { if (Data[i] == 0x1C) { erindex = i; break; } } //错误信息 if (Data[erindex] == 0x1C) { LogService.Log(MachineControlProtocol.BytelistToHexString(Data), LogType.Debug); int errcount = Data[erindex + 2] - 0x30; //Console.WriteLine(string.Format("there is {0} errors!", errcount)); for (int i = 0; i < errcount; i++) { int index = (erindex + 3) + i * 7; string cmdname = string.Format("{0}{1}", (char)Data[index], (char)Data[index + 1]); if (cmdname == "77" && Data[index + 2] == 0x30)//R1 { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000770"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("试剂位清洗液添加失败. "); TroubleLogSer.Save(trouble); } if (cmdname == "77" && Data[index + 2] == 0x31)//R2 { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000771"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("试剂位清洗液添加失败. "); TroubleLogSer.Save(trouble); } if (cmdname == "57" && Data[index + 2] == 0x30)//SMP { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000570"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("样本位清洗液添加失败. "); TroubleLogSer.Save(trouble); } TroubleLog t = new TroubleLog(); t.TroubleCode = string.Format("{0}{1}{2}{3}{4}{5}{6}", (char)Data[index], (char)Data[index + 1], (char)Data[index + 2], (char)Data[index + 3], (char)Data[index + 4], (char)Data[index + 5], (char)Data[index + 6]); t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"设备"; t.TroubleInfo = null; TroubleLogSer.Save(t); LogService.Log("测试运行设备发生错误:" + t.TroubleCode, LogType.Debug); } } return(null); }
public object Process(string barcode, int disk, string position) { string b = Decode(barcode); if (b == null) { string erinfo = "条码:" + barcode + "解码失败"; TroubleLog t = new TroubleLog(); t.TroubleCode = "7777771"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = erinfo; new TroubleLogService().Save(t); return("条码:" + barcode + "不识别"); } this.Disk = disk; this.Position = position; RGTPosition newreagentPosition = AnanlyeBarcode(b, barcode); if (newreagentPosition == null) { return("条码:" + barcode + "不识别"); } AssayRunPara a = new AssayRunParaService().Get(newreagentPosition.Assay) as AssayRunPara; if (a != null) { if (a.R2Vol == 0 && newreagentPosition.AssayPara == "R2") { string erinfo = "条码:" + barcode + "不能装填。原因:参数试剂2体积为0,不能在该位置装填试剂2"; TroubleLog t = new TroubleLog(); t.TroubleCode = "7777771"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = erinfo; new TroubleLogService().Save(t); return("条码:" + barcode + "装填失败"); } } //检查该条码在试剂盘中是否存在 RGTPosition barrgtpos = new RGTPOSManager().GetAssayALLReagentByBarcode(newreagentPosition.BarCode); if (barrgtpos == null) { //newreagentPosition.AssayPara = "MR1"; } else { ReagentBarcode r = new ReagentBarcode(); r.Barcode = barrgtpos.BarCode; r.ValidPercent = barrgtpos.ValidPercent; r.ExchangeDatetime = DateTime.Now; new ReagentBarcodeService().InsertReagentBarcode(r); new RGTPOSManager().Delete(barrgtpos); //newreagentPosition.AssayPara = barrgtpos.AssayPara; } RGTPosition rgtpos = new RGTPOSManager().Get(disk, position); if (rgtpos == null) { } else { ReagentBarcode r = new ReagentBarcode(); r.Barcode = rgtpos.BarCode; r.ValidPercent = rgtpos.ValidPercent; r.ExchangeDatetime = DateTime.Now; new ReagentBarcodeService().InsertReagentBarcode(r); new RGTPOSManager().Delete(rgtpos); } List <CLItem> reagents = new RGTPOSManager().GetAssayALLReagent(newreagentPosition.Assay); if (newreagentPosition.AssayPara == "R1") { bool f1 = false; foreach (RGTPosition e in reagents) { if (e.AssayPara == "R1") { f1 = true; break; } } if (f1 == true) { newreagentPosition.AssayPara = "MR1"; } else { newreagentPosition.AssayPara = "R1"; } } if (newreagentPosition.AssayPara == "R2") { bool f1 = false; foreach (RGTPosition e in reagents) { if (e.AssayPara == "R2") { f1 = true; break; } } if (f1 == true) { newreagentPosition.AssayPara = "MR2"; } else { newreagentPosition.AssayPara = "R2"; } } newreagentPosition.Disk = disk; newreagentPosition.Position = position; RGTPosition oldreagentPosition = new RGTPOSManager().Get(disk, position); if (oldreagentPosition != null) { ReagentBarcode r = new ReagentBarcode(); r.Barcode = oldreagentPosition.BarCode; r.ValidPercent = oldreagentPosition.ValidPercent; r.ExchangeDatetime = DateTime.Now; new ReagentBarcodeService().InsertReagentBarcode(r); } ReagentBarcode ReagentBarcode = new ReagentBarcodeService().GetLastestReagentBarcode(barcode); if (ReagentBarcode == null) { newreagentPosition.ValidPercent = 99; } else { newreagentPosition.ValidPercent = ReagentBarcode.ValidPercent; } new RGTPOSManager().Delete(newreagentPosition); new RGTPOSManager().Save(newreagentPosition); TroubleLog t1 = new TroubleLog(); t1.TroubleCode = "7777772"; t1.TroubleType = TROUBLETYPE.WARN; t1.TroubleUnit = @"试剂条码"; t1.TroubleInfo = "条码:" + barcode + "加载成功";; new TroubleLogService().Save(t1); return(null); }
public string Parse(List <byte> Data) { if (Data.Count < 904) { LogService.Log("非法数据包:" + MachineControlProtocol.BytelistToHexString(Data), LogType.Debug); return(null); } RunService RunSer = new RunService(); RGTPOSManager RGTPOSMgr = new RGTPOSManager(); TroubleLogService TroubleLogSer = new TroubleLogService(); RealTimeCUVDataService RealTimeCUVDataSer = new RealTimeCUVDataService(); int Pt1stWn = 0; int Pt3ndWn = 0; int Pt26thWn = 0; int BlkCUVNO = MachineControlProtocol.HexConverToDec(Data[904], Data[905], Data[906]); int BlkWN = MachineControlProtocol.HexConverToDec(Data[2], Data[3], Data[4]); RealTimeCUVDataSer.SaveCuvNumber(BlkWN, BlkCUVNO); for (int i = 2; i < 886; i = i + 17) { int WN = MachineControlProtocol.HexConverToDec(Data[i], Data[i + 1], Data[i + 2]); int PT = MachineControlProtocol.HexConverToDec(Data[i + 3], Data[i + 4]); float PWL = MachineControlProtocol.HexConverToFloat(Data[i + 5], Data[i + 6], Data[i + 7], Data[i + 8], Data[i + 9], Data[i + 10]); float SWL = MachineControlProtocol.HexConverToFloat(Data[i + 11], Data[i + 12], Data[i + 13], Data[i + 14], Data[i + 15], Data[i + 16]); if (PWL > -0.000001 && PWL < 0.000001) { PWL = 3.5f; } else { PWL = (float)Math.Log10(10 / PWL) * MachineInfo.LightSpan; } if (SWL > -0.000001 && SWL < 0.000001) { SWL = 3.5f; } else { SWL = (float)Math.Log10(10 / SWL) * MachineInfo.LightSpan; } if (WN != 0 && PT != 0) { RealTimeCUVDataService.SaveABS(WN, PT, PWL, SWL); } if (PT == 1) { Pt1stWn = WN; } if (PT == 3) { Pt3ndWn = WN; } if (PT == 26) { Pt26thWn = WN; } //Console.WriteLine(string.Format("WN:{0}PT:{1}PWL:{2}SWL:{3}", WN, PT, PWL, SWL)); } //温度 float tcv = MachineControlProtocol.HexConverToFloat(Data[887], Data[888], Data[889], Data[890]); RunSer.UpdateLatestCUVPanelTemperature(tcv * 10); float tr1 = MachineControlProtocol.HexConverToFloat(Data[891], Data[892], Data[893], Data[894]); RunSer.UpdateLatestR1PanelTemperature(tr1 * 10); LogService.Log(string.Format("反应盘温度:{0};试剂盘温度 :{1}", tcv * 10, tr1 * 10), LogType.Debug); //试剂余量 int R1P = MachineControlProtocol.HexConverToDec(Data[896], Data[897]); int R1V = MachineControlProtocol.HexConverToDec(Data[898], Data[899]); RGTPOSMgr.UpdateLatestRgtVol(1, R1P, R1V); RgtWarning(1, R1P); int R2P = MachineControlProtocol.HexConverToDec(Data[900], Data[901]); int R2V = MachineControlProtocol.HexConverToDec(Data[902], Data[903]); RGTPOSMgr.UpdateLatestRgtVol(1, R2P, R2V); RgtWarning(1, R2P); LogService.Log(string.Format("R1位置:{0} R1体积:{1} R2位置:{2} R2体积:{3}", R1P, R1V, R2P, R2V), LogType.Debug); //查找错误报头 int erindex = 0; for (int i = 0; i < Data.Count(); i++) { if (Data[i] == 0x1C) { erindex = i; break; } } //错误信息 if (Data[erindex] == 0x1C) { LogService.Log(MachineControlProtocol.BytelistToHexString(Data), LogType.Debug); int errcount = Data[erindex + 2] - 0x30; //Console.WriteLine(string.Format("there is {0} errors!", errcount)); for (int i = 0; i < errcount; i++) { int index = (erindex + 3) + i * 7; string cmdname = string.Format("{0}{1}", (char)Data[index], (char)Data[index + 1]); if (cmdname == "77" && Data[index + 2] == 0x30)//R1 { RealTimeCUVDataService.RunningErrors(Pt1stWn, "R1"); Result r = new RealTimeCUVDataService().GetResultFromRealTimeWorkNum(Pt1stWn); if (r != null) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000770"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("样本{0}项目{1}反应进程{2}:添加试剂1失败. ", r.SMPNO, r.ItemName, r.TCNO); TroubleLogSer.Save(trouble); } } if (cmdname == "77" && Data[index + 2] == 0x31)//R2 { RealTimeCUVDataService.RunningErrors(Pt26thWn, "R2"); Result r = new RealTimeCUVDataService().GetResultFromRealTimeWorkNum(Pt26thWn); if (r != null) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000771"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("样本{0}项目{1}反应进程{2}:添加试剂2失败. ", r.SMPNO, r.ItemName, r.TCNO); TroubleLogSer.Save(trouble); } } if (cmdname == "57" && Data[index + 2] == 0x30)//SMP { RealTimeCUVDataService.RunningErrors(Pt3ndWn, "SMP"); Result r = new RealTimeCUVDataService().GetResultFromRealTimeWorkNum(Pt3ndWn); if (r != null) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000570"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"设备"; trouble.TroubleInfo = string.Format("样本{0}项目{1}反应进程{2}:添加样本失败. ", r.SMPNO, r.ItemName, r.TCNO); TroubleLogSer.Save(trouble); } } TroubleLog t = new TroubleLog(); t.TroubleCode = string.Format("{0}{1}{2}{3}{4}{5}{6}", (char)Data[index], (char)Data[index + 1], (char)Data[index + 2], (char)Data[index + 3], (char)Data[index + 4], (char)Data[index + 5], (char)Data[index + 6]); t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"设备"; t.TroubleInfo = null; TroubleLogSer.Save(t); LogService.Log("测试运行设备发生错误:" + t.TroubleCode, LogType.Debug); } } return(null); }
RGTPosition AnanlyeBarcode(string barcode, string b1) { string code = barcode.Substring(0, 3); ReagentItem reagentItem = new ReagentItemService().GetReagentItem(code); if (reagentItem == null) { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777772"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "与封闭项目不匹配"; new TroubleLogService().Save(t); return(null); } RGTPosition reagentPosition = new RGTPosition(); reagentPosition.Assay = reagentItem.ItemName; //1:S10ml 2:M 20ml 3:L 70ml 4:XL100m RGTContainerType RGTContainerType = null; string containertype = barcode.Substring(3, 1); switch (containertype) { case "1": RGTContainerType = this.GetRGTContainerType(20); break; case "2": RGTContainerType = this.GetRGTContainerType(40); break; case "3": RGTContainerType = this.GetRGTContainerType(70); break; case "4": RGTContainerType = this.GetRGTContainerType(100); break; } if (RGTContainerType == null) { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777773"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "容器类型系统不识别"; new TroubleLogService().Save(t); return(null); } else { reagentPosition.CType.Name = RGTContainerType.Name; } //1:R1 2:R2 3:R3 4:R4 5:稀释液 6:清洗剂 string reagenttype = barcode.Substring(4, 1); switch (reagenttype) { case "1": reagentPosition.AssayPara = "R1"; break; case "2": reagentPosition.AssayPara = "R2"; break; case "3": reagentPosition.AssayPara = "R3"; break; case "4": reagentPosition.AssayPara = "R4"; break; case "5": reagentPosition.AssayPara = "Diluent"; break; //case "6": ReagentPosition.AssayPara = "R4"; break; } switch (this.Disk) { case 1: if (reagentPosition.AssayPara == "R1" || reagentPosition.AssayPara == "Diluent") { } else { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777774"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "试剂类型R1识别失败"; new TroubleLogService().Save(t); return(null); } break; case 2: if (reagentPosition.AssayPara == "R2") { } else { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777775"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "试剂类型R2识别失败"; new TroubleLogService().Save(t); return(null); } break; } string batchnum = barcode.Substring(5, 6); reagentPosition.RGTProductor.FactoryName = "上海华臣生物试剂有限公司"; reagentPosition.RGTProductor.BatchNO = batchnum; string str1 = batchnum.Substring(0, 2); int str1int = 0; try { str1int = int.Parse(str1); } catch { return(null); } str1 = "20" + (str1int + 1).ToString() + batchnum.Substring(2); try { reagentPosition.RGTProductor.ExpireDay = DateTime.ParseExact(str1, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); } catch { TroubleLog t = new TroubleLog(); t.TroubleCode = "7777776"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = "条码:" + b1 + "识别失败"; new TroubleLogService().Save(t); return(null); } reagentPosition.BarCode = b1; DoSaveAssayRunPara(reagentItem); DoSaveAssayValuePara(reagentItem); DoSaveResultSets(reagentItem); //测试序列 DoSaveRunSQ(reagentItem); return(reagentPosition); }
void RgtWarning(int d, int p) { float rgtwarncount = myBatis.GetRgtWarnCount(); float rgtleastcount = myBatis.GetRgtLeastCount(); ReagentStateInfoR1R2 rgp = myBatis.GetReagentStateInfoByPos(d, p); ReagentSettingsInfo rsi = myBatis.GetReagentSettingsInfoByPos(d, p); if (rgp != null) { int c = 0; int v = System.Convert.ToInt32(rsi.ReagentContainer.Substring(0, rsi.ReagentContainer.IndexOf("ml"))) * rgp.ValidPercent / 100 * 1000; switch (d) { case 1: c = v / 250; if (c < rgtleastcount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000772"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = string.Format("试剂位{0}清洗剂耗尽. ", p); myBatis.TroubleLogSave("TroubleLogSave", trouble); return; } if (c < rgtwarncount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000773"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = string.Format("试剂位{0}清洗剂即将耗尽. ", p); myBatis.TroubleLogSave("TroubleLogSave", trouble); return; } break; case 2: c = v / 150; if (c < rgtleastcount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000774"; trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = string.Format("试剂位{0}清洗剂耗尽. ", p); myBatis.TroubleLogSave("TroubleLogSave", trouble); return; } if (c < rgtwarncount) { TroubleLog trouble = new TroubleLog(); trouble.TroubleCode = @"0000775"; trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = "设备"; trouble.TroubleInfo = string.Format("试剂位{0}清洗剂即将耗尽. ", p); myBatis.TroubleLogSave("TroubleLogSave", trouble); return; } break; } } }
public void AnalyzeResult(SampleResultInfo r) { AssayProjectParamInfo A = myBatis.GetAssayProjectParamInfoByNameAndType("GetAssayProjectParamInfoByNameAndType", new AssayProjectInfo() { ProjectName = r.ProjectName, SampleType = r.SampleType }); if (A == null) { return; } TimeCourseInfo T = myBatis.GetTimeCourse(r.TCNO, r.SampleCreateTime); if (T == null) { return; } SampleInfo S = myBatis.GetSample(r.SampleNum, r.SampleCreateTime); if (S == null) { return; } AssayProjectRangeParamInfo ARP = myBatis.GetRangeParamInfo(r.ProjectName, r.SampleType); if (ARP == null) { return; } ProjectRunSequenceInfo proRunSequence = myBatis.QueryProjectRunSequenceByProject(new AssayProjectInfo() { ProjectName = r.ProjectName, SampleType = r.SampleType }); if (proRunSequence == null) { return; } //试剂吸光度判读,检测试剂是否正常 string RgtAbsFlag = null; float RgtAbs = ABSProcess.GetReangentAbs(T, A); if (A.ReagentBlankMaximum > 0.000001 && A.ReagentBlankMaximum < RgtAbs) { RgtAbsFlag = "RgtAbsMax"; } if (A.ReagentBlankMaximum > 0.000001 && A.ReagentBlankMinimum > RgtAbs) { RgtAbsFlag = "RgtAbsMin"; } if (RgtAbsFlag != null) { if (string.IsNullOrEmpty(r.Remarks) || string.IsNullOrWhiteSpace(r.Remarks)) { r.Remarks = RgtAbsFlag; } else { r.Remarks += "|" + RgtAbsFlag; } myBatis.UpdateNORResultRunLog(r); TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = @"试剂"; trouble.TroubleCode = "000002"; trouble.TroubleInfo = string.Format(@"{0}:{1}发生试剂吸光度越界,其反应进程:{2}。请检测试剂是否过期. ", r.SampleNum, r.ProjectName, r.TCNO); myBatis.TroubleLogSave("TroubleLogSave", trouble); } //底物耗尽判断处理, string AbsLimFlag = null; float AbsLimRef = A.LimitValue; //(0--3.5) float AbsLim = ABSProcess.GetAbsLimAbs(T, A); //M2E abs if (A.AnalysisMethod == "速率A法" || A.AnalysisMethod == "速率B法") { if (A.ReactionDirection == "正反应")//正反应 { if (AbsLimRef > 0.000001 && AbsLimRef < AbsLim) { AbsLimFlag = "AbsLim"; } } if (A.ReactionDirection == "负反应")//负反应 { if (AbsLimRef > 0.000001 && AbsLimRef > AbsLim) { AbsLimFlag = "AbsLim"; } } } if (AbsLimFlag != null) { if (string.IsNullOrEmpty(r.Remarks) || string.IsNullOrWhiteSpace(r.Remarks)) { r.Remarks = AbsLimFlag; } else { r.Remarks += "|" + AbsLimFlag; } myBatis.UpdateNORResultRunLog(r); TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"样本"; trouble.TroubleCode = "000003"; trouble.TroubleInfo = string.Format(@"{0}:{1}发生底物耗尽,其反应进程:{2}", r.SampleNum, r.ProjectName, r.TCNO); myBatis.TroubleLogSave("TroubleLogSave", trouble); if (ARP.AutoRerun == true) { //Schedule Schedule = new ScheduleService().GetSMPSchedule(r.SMPNO, r.ItemName) as Schedule; TaskInfo task = myBatis.GetTask(r.ProjectName, r.SampleNum); if (task == null) { task = new TaskInfo(); task.SampleNum = r.SampleNum; task.ProjectName = r.ProjectName; task.SampleType = r.SampleType; //Schedule.WorkType = S.IsEmergency == true ? WORKTYPE.E : WORKTYPE.N; task.SampleDilute = "减量体积"; task.SendTimes = 0; task.FinishTimes = 0; task.InspectTimes = 1; task.TaskState = 0; task.IsReRun = true; //Schedule.ReRun = "AbsLim"; if (r.ResultVolType != task.SampleDilute)//结果体积参数和计划体积参数不同才可以提交工作计划 { //new ScheduleService().Save(Schedule); myBatis.SaveTske(task); } } } } //技术 血清/尿液范围即线性范围判读 float LineRefMin = 0.0f; //线性参考值 float LineRefMax = 0.0f; //线性参考值 switch (S.SampleType) { case "尿液": case "血清": LineRefMin = A.FirstSlope; LineRefMax = A.FirstSlopeHigh; break; } string LinFlag = null; try { float v = r.ConcResult; if (LineRefMax > 0.00001 && v > LineRefMax) { LinFlag = "Lin.H"; } if (LineRefMax > 0.00001 && v < LineRefMin) { LinFlag = "Lin.L"; } } catch { } if (LinFlag != null) { if (string.IsNullOrEmpty(r.Remarks) || string.IsNullOrWhiteSpace(r.Remarks)) { r.Remarks = LinFlag; } else { r.Remarks += "|" + LinFlag; } myBatis.UpdateNORResultRunLog(r); TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"样本"; trouble.TroubleCode = "00001"; trouble.TroubleInfo = string.Format(@"{0}:{1}线性范围违规,其反应进程:{2}", r.SampleNum, r.ProjectName, r.TCNO); myBatis.TroubleLogSave("TroubleLogSave", trouble); if (ARP.AutoRerun == true) { //Schedule Schedule = new ScheduleService().GetSMPSchedule(r.SMPNO, r.ItemName) as Schedule; TaskInfo task = myBatis.GetTask(r.ProjectName, r.SampleNum); if (task == null) { task = new TaskInfo(); task.SampleNum = r.SampleNum; task.ProjectName = r.ProjectName; task.SampleType = r.SampleType; //Schedule.WorkType = S.IsEmergency == true ? WORKTYPE.E : WORKTYPE.N; switch (LinFlag) { case "Lin.L": task.SampleDilute = "增量体积"; break; case "Lin.H": task.SampleDilute = "减量体积"; break; } task.SendTimes = 0; task.FinishTimes = 0; task.InspectTimes = 1; task.TaskState = 0; task.IsReRun = true; //Schedule.ReRun = "AbsLim"; if (r.ResultVolType != task.SampleDilute)//结果体积参数和计划体积参数不同才可以提交工作计划 { //new ScheduleService().Save(Schedule); myBatis.SaveTske(task); } } } } //血清结果浓度临界判读,只对血清样本起作用。 if (S.SampleType == "血清") { string PanicFlag = null; try { float v = r.ConcResult; if (A.SerumCriticalMaximum > 0.00001 && A.SerumCriticalMaximum < v) { PanicFlag = "Panic.H"; } if (A.SerumCriticalMaximum > 0.00001 && A.SerumCriticalMinimum > v) { PanicFlag = "Panic.L"; } } catch { } if (PanicFlag != null) { if (string.IsNullOrEmpty(r.Remarks) || string.IsNullOrWhiteSpace(r.Remarks)) { r.Remarks = PanicFlag; } else { r.Remarks += "|" + PanicFlag; } myBatis.UpdateNORResultRunLog(r); TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"样本"; trouble.TroubleCode = "00001"; trouble.TroubleInfo = string.Format(@"{0}:{1}发生血清临界值违规,其反应进程:{2}", r.SampleNum, r.ProjectName, r.TCNO); myBatis.TroubleLogSave("TroubleLogSave", trouble); if (ARP.AutoRerun == true) { //Schedule Schedule = new ScheduleService().GetSMPSchedule(r.SMPNO, r.ItemName) as Schedule; TaskInfo task = myBatis.GetTask(r.ProjectName, r.SampleNum); if (task == null) { task = new TaskInfo(); task.SampleNum = r.SampleNum; task.ProjectName = r.ProjectName; task.SampleType = r.SampleType; //Schedule.WorkType = S.IsEmergency == true ? WORKTYPE.E : WORKTYPE.N; switch (r.ResultVolType) { case VOLTYPE.IV: task.SampleDilute = "增量体积"; break; case VOLTYPE.DV: task.SampleDilute = "减量体积"; break; case VOLTYPE.NA: task.SampleDilute = "常规体积"; break; } task.SendTimes = 0; task.FinishTimes = 0; task.InspectTimes = 1; task.TaskState = 0; task.IsReRun = true; //Schedule.ReRun = "AbsLim"; if (r.ResultVolType != task.SampleDilute)//结果体积参数和计划体积参数不同才可以提交工作计划 { //new ScheduleService().Save(Schedule); myBatis.SaveTske(task); } } } } } //前驱界限,该值是个比例 string ProzontLimitPanicFlag = null; float ProzontLimit = ABSProcess.GetProzontLimitValue(T, A, r.ResultVolType, S.SampleType); if (A.ProLowestBound > 0.000001) { if (ProzontLimit > A.ProLowestBound / 100) { ProzontLimitPanicFlag = "P*"; } } if (ProzontLimitPanicFlag != null) { if (string.IsNullOrEmpty(r.Remarks) || string.IsNullOrWhiteSpace(r.Remarks)) { r.Remarks = ProzontLimitPanicFlag; } else { r.Remarks += "|" + ProzontLimitPanicFlag; } myBatis.UpdateNORResultRunLog(r); TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = @"样本"; trouble.TroubleCode = "00001"; trouble.TroubleInfo = string.Format(@"{0}:{1}前驱界限违规!反应进程:{2}", r.SampleNum, r.ProjectName, r.TCNO); myBatis.TroubleLogSave("TroubleLogSave", trouble); if (ARP.AutoRerun == true) { //Schedule Schedule = new ScheduleService().GetSMPSchedule(r.SMPNO, r.ItemName) as Schedule; TaskInfo task = myBatis.GetTask(r.ProjectName, r.SampleNum); if (task == null) { task = new TaskInfo(); task.SampleNum = r.SampleNum; task.ProjectName = r.ProjectName; task.SampleType = r.SampleType; //Schedule.WorkType = S.IsEmergency == true ? WORKTYPE.E : WORKTYPE.N; task.SampleDilute = "减量体积"; task.SendTimes = 0; task.FinishTimes = 0; task.InspectTimes = 1; task.TaskState = 0; task.IsReRun = true; //Schedule.ReRun = "AbsLim"; if (r.ResultVolType != task.SampleDilute)//结果体积参数和计划体积参数不同才可以提交工作计划 { //new ScheduleService().Save(Schedule); myBatis.SaveTske(task); } } } } }
public string Parse(List <byte> data) { bool HasError = false; bool HasWarn = false; for (int i = 2; i < 86; i = i + 7) { int WaveIndex = System.Convert.ToInt32(RunConfigureUtility.WaveLengthList[data[i] - '0']); int OffSet = MachineControlProtocol.HexConverToDec(data[i + 1], data[i + 2], data[i + 3]); int Gain = MachineControlProtocol.HexConverToDec(data[i + 4], data[i + 5], data[i + 6]); if (Gain < 60) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.ERR; trouble.TroubleUnit = "光度计"; trouble.TroubleInfo = "波长" + WaveIndex + "增益" + Gain + "低于60,光度计不能正常工作";// string.Format(@"波长{0}增益值{1}低于60,光度计不能正常工作。", WaveIndex, Gain); trouble.TroubleCode = "00001"; myBatis.TroubleLogSave("TroubleLogSave", trouble); HasError = true; } OffSetGain offgain = myBatis.GetLatestOffSetGain(WaveIndex); if (offgain == null) { offgain = new OffSetGain(); offgain.WaveLength = WaveIndex; offgain.OffSet = OffSet; offgain.Gain = Gain; offgain.InspectTime = DateTime.Now; if (WaveIndex == 795) { offgain.InspectTime = DateTime.Now; } myBatis.AddLatestOffSetGain(offgain); } else { if (Math.Abs(Gain - offgain.Gain) >= 30) { TroubleLog trouble = new TroubleLog(); trouble.TroubleType = TROUBLETYPE.WARN; trouble.TroubleUnit = "光度计"; trouble.TroubleInfo = "波长" + WaveIndex + "增益值波动幅度大于30";// string.Format(@"波长{0}增益值波动幅度{1},影响结果的准确性。", WaveIndex, Math.Abs(Gain - offgain.Gain)); trouble.TroubleCode = "00003"; myBatis.TroubleLogSave("TroubleLogSave", trouble); HasWarn = true; } myBatis.DeleteOldOffSetGain(WaveIndex); myBatis.AddOldOffSetGain(offgain); offgain.OffSet = OffSet; offgain.Gain = Gain; if (WaveIndex == 795) { offgain.InspectTime = DateTime.Now; } myBatis.DeleteNewOffSetGain(WaveIndex); myBatis.AddLatestOffSetGain(offgain); } } if (HasError == true) { return("PhotometerWrong"); } if (HasWarn == true) { return("PhotometerWarn"); } return("PhotometerRight"); }
/// <summary> /// 根据试剂条码信息获取对应的项目参数信息 /// </summary> /// <param name="disk"></param> /// <param name="pos"></param> /// <param name="reagentBracode"></param> /// <returns></returns> public object GetRgBracodePara(int disk, string pos, string reagentBracode) { string b = Decode(reagentBracode); if (b == null) { string erinfo = "条码:" + reagentBracode + "解码失败"; TroubleLog t = new TroubleLog(); t.TroubleCode = "7777771"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = erinfo; //new ReagentState().TroubleLogSave().Save(t); mybatis.TroubleLogSave("TroubleLogSave", t); return("条码:" + reagentBracode + "不识别"); } this.Disk = disk; this.Position = pos; ReagentSettingsInfo newReagentSet = AnanlyeBarcode(b, reagentBracode); if (newReagentSet == null) { return("条码:" + reagentBracode + "不识别"); } AssayProjectParamInfo a = mybatis.GetAssayProjectParamInfo(newReagentSet.ProjectName, newReagentSet.ReagentType) as AssayProjectParamInfo; if (a != null) { if (a.Reagent2VolSettings == 0 && newReagentSet.AssayParamType == "R2") { string erinfo = "条码:" + reagentBracode + "不能装填。原因:参数试剂2体积为0,不能在该位置装填试剂2"; TroubleLog t = new TroubleLog(); t.TroubleCode = "7777771"; t.TroubleType = TROUBLETYPE.ERR; t.TroubleUnit = @"试剂条码"; t.TroubleInfo = erinfo; mybatis.TroubleLogSave("TroubleLogSave", t); return("条码:" + reagentBracode + "装填失败"); } } //检查该条码在试剂盘中是否存在 ReagentSettingsInfo barrgtpos = mybatis.GetAssayALLReagentByBarcode(newReagentSet.Barcode); if (barrgtpos == null) { //newreagentPosition.AssayPara = "MR1"; } else { this.RemoveOccupiedReagentInfo(barrgtpos); //newreagentPosition.AssayPara = barrgtpos.AssayPara; } ReagentSettingsInfo rgtpos = mybatis.GetAssayReagentByDisk(Disk, Position); if (rgtpos == null) { } else { this.RemoveOccupiedReagentInfo(rgtpos); } //List<CLItem> reagents = new RGTPOSManager().GetAssayALLReagent(newReagentSetInfo.Assay); //if (newReagentSetInfo.AssayPara == "R1") //{ // bool f1 = false; // foreach (RGTPosition e in reagents) // { // if (e.AssayPara == "R1") // { // f1 = true; // break; // } // } // if (f1 == true) // { // newReagentSetInfo.AssayPara = "MR1"; // } // else // { // newReagentSetInfo.AssayPara = "R1"; // } //} //if (newReagentSetInfo.AssayPara == "R2") //{ // bool f1 = false; // foreach (RGTPosition e in reagents) // { // if (e.AssayPara == "R2") // { // f1 = true; // break; // } // } // if (f1 == true) // { // newReagentSetInfo.AssayPara = "MR2"; // } // else // { // newReagentSetInfo.AssayPara = "R2"; // } //} //newReagentSetInfo.Disk = disk; newReagentSet.Pos = pos; //RGTPosition oldreagentPosition = new RGTPOSManager().Get(disk, pos); //if (oldreagentPosition != null) //{ // ReagentBarcode r = new ReagentBarcode(); // r.Barcode = oldreagentPosition.BarCode; // r.ValidPercent = oldreagentPosition.ValidPercent; // r.ExchangeDatetime = DateTime.Now; // new ReagentBarcodeService().InsertReagentBarcode(r); //} ReagentBarcodeParam ReagentBarcode = mybatis.GetAllReagentBarParam(reagentBracode); if (ReagentBarcode == null) { if (disk == 1) { newReagentSet.ValidPercent = 99; } else if (disk == 2) { newReagentSet.ValidPercent2 = 99; } } else { if (disk == 1) { newReagentSet.ValidPercent = ReagentBarcode.ValidPercent; } else if (disk == 2) { newReagentSet.ValidPercent2 = ReagentBarcode.ValidPercent; } } mybatis.SaveReagentSettingInfo(disk, newReagentSet); new Task(new Action(() => { this.SaveOrUpReagentStateR1R2Info(newReagentSet); })).Start(); TroubleLog t1 = new TroubleLog(); t1.TroubleCode = "7777772"; t1.TroubleType = TROUBLETYPE.WARN; t1.TroubleUnit = @"试剂条码"; t1.TroubleInfo = "条码:" + reagentBracode + "加载成功";; mybatis.TroubleLogSave("TroubleLogSave", t1); return(null); }