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