// 开始测试 public void StartTest() { ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object o) { if (IsGBTest) // 如果是国军标参数测试 { if (CheckGBParam()) // 检查参数合法性 { GBTestModel testModel = GetGBTestParam(); // 获取测试参数 if (testModel != null) { for (int i = testModel.GardnerXMin; i < testModel.GardnerXMax && IsStartOrStop; i++) { for (int j = testModel.GardnerYMin; j < testModel.GardnerYMax && IsStartOrStop; j++) { testModel = GetGBTestParam(); WriteMsgToForm("---新一轮测试, 当前比例参数:" + i + " 积分参数:" + j + " ---"); WriteMsgToForm("正在下发参数设置..."); String strRT = ClouReaderAPI.CLReader.RFID_OPTION.SetGBGardner(ConnID, i + "|" + j); if (strRT.StartsWith("0")) { WriteMsgToForm("下发参数成功..."); } else { WriteMsgToForm("下发参数失败..."); continue; } RunGardnerTest(testModel); WriteMsgToForm("--- 当前次测试结束,正在计算结果 ---"); WriteMsgToForm("当前参数是否有效:" + testModel.IsOK); if (testModel.IsOK) { listResults.Add(testModel); if (testModel.Rate > maxRate) { maxRate = testModel.Rate; } WriteMsgToForm("当前参数成功率为:" + testModel.Rate + "目前最优成功率为:" + maxRate.ToString("F2")); } } } if (testModel.NowTestCount >= testModel.TestCount) { btn_StartTest_Click(null, null); } } } } else// 普通测试 { RunTest(); } }), new object()); }
/// <summary> /// 获取国标测试 /// </summary> /// <returns></returns> public GBTestModel GetGBTestParam() { GBTestModel rt = new GBTestModel(); try { rt.GardnerXMin = Int32.Parse(tb_GBGardnerXMin.Text); rt.GardnerXMax = Int32.Parse(tb_GBGardnerXMax.Text); rt.GardnerYMin = Int32.Parse(tb_GBGardnerYMin.Text); rt.GardnerYMax = Int32.Parse(tb_GBGardnerYMax.Text); rt.SingleWhileTestCount = Int32.Parse(tb_TestMaxCount.Text); rt.ContinuousFailureMax = 10; rt.IsOK = false; } catch { rt = null; } return(rt); }
public void RunGardnerTest(GBTestModel testModel) { Int32 iTestCount = 1; String errorMsg = ""; ts_avg = 0f; ts_total = 0f; while (IsStartOrStop && iTestCount <= testModel.SingleWhileTestCount) { // Thread.Sleep(5000); Helper.Helper_Timers.Restart(); if (IsTestWrite) // 写 { tb_WriteData.Text = GetRandomToHex(Int32.Parse(tb_WriteLength.Text.Trim())); Boolean rtWrite = false; if (cmb_WriteType.SelectedIndex == 0) // 写EPC { rtWrite = WriteEPC(out errorMsg); } else if (cmb_WriteType.SelectedIndex > 0) // 写用户数据 { rtWrite = WriteUserData(out errorMsg); } if (rtWrite) { WriteMsgToForm("No." + iTestCount + "写入成功!"); WriteSuccessCount++; } else { WriteMsgToForm("No." + iTestCount + "写入失败!Msg:" + errorMsg); } } if (IsTestRead) // 读 { if (ReadSingle(out errorMsg)) { WriteMsgToForm("No." + iTestCount + "读成功!"); ReadSuccessCount++; testModel.SuccessCount++; // 成功次数累加 testModel.ContinuousFailureCount = 0; } else { testModel.ContinuousFailureCount++; // 失败次数累加及判断 if (testModel.ContinuousFailureCount >= testModel.ContinuousFailureMax) { testModel.IsOK = false; break; } testModel.FailureCount++; WriteMsgToForm("No." + iTestCount + "读失败!Msg:" + errorMsg); } } if (!CheckWriteRead()) // 检查读写一致性 { WriteMsgToForm("No." + iTestCount + "测试,读写数据不一致!"); } iTestCount++; WriteMsgToForm("No." + iTestCount + "Test!Time(ms):" + Helper.Helper_Timers.GetElapsed().TotalMilliseconds); ts_total = ts_total + Helper.Helper_Timers.GetElapsed().TotalMilliseconds; ts_avg = ts_total / iTestCount; FlushState(); } }