Ejemplo n.º 1
0
 private void Save()
 {
     if (!string.IsNullOrEmpty(_UnqualifiedValue))
     {
         _AllNumber = TestResultConserve.ResultConserve(_CheckValue);
         if (_AllNumber > 0)
         {
             LabelInfo.Content = "成功保存 " + _AllNumber + " 条数据!";
             button3.IsEnabled = false;
             button1.IsEnabled = true;
         }
         else
         {
             LabelInfo.Content = "保存失败或是未检出!";
         }
     }
     else
     {
         MessageBox.Show("未检出");
     }
 }
 public MsgThread(TestResultConserve wnd)
 {
     this.wnd = wnd;
     uiHandleMessageDelegate = new UIHandleMessageDelegate(UIHandleMessage);
 }
Ejemplo n.º 3
0
 private void Save()
 {
     _AllNumber = TestResultConserve.ResultConserve(_CheckValue);
 }
        private void ShowResult()
        {
            int sampleNum = _item.SampleNum;
            // 画出灰度曲线
            List <Canvas>  canvases                = UIUtils.GetChildObjects <Canvas>(WrapPanelChannel, "canvas");
            List <TextBox> listTextBoxGray         = UIUtils.GetChildObjects <TextBox>(WrapPanelChannel, "textBoxGrayValue");
            List <TextBox> listTextBoxDetectResult = UIUtils.GetChildObjects <TextBox>(WrapPanelChannel, "textBoxDetectResult");
            List <TextBox> listJudgmentRes         = UIUtils.GetChildObjects <TextBox>(WrapPanelChannel, "textJugmentResult");
            List <TextBox> listStandValue          = UIUtils.GetChildObjects <TextBox>(WrapPanelChannel, "textStandValue");

            _listJudmentValue = listJudgmentRes;
            int    num = 0;
            double val = 0;

            for (int i = 0; i < Global.deviceHole.SxtCount; ++i)
            {
                if (_item.Hole[i].Use)
                {
                    int nLineWidth = 5;
                    int TOffset    = WeitiaoCT(_listGrayValues[i], _helpBoxes[i].TLineOffset, nLineWidth);
                    int COffset    = WeitiaoCT(_listGrayValues[i], _helpBoxes[i].CLineOffset, nLineWidth);

                    int TValue = 0;
                    // 向前数5格
                    for (int n = 0; n < nLineWidth; ++n)
                    {
                        TValue += _listGrayValues[i][TOffset - n];
                    }
                    TValue /= nLineWidth;
                    int CValue = 0;
                    for (int n = 0; n < nLineWidth; ++n)
                    {
                        CValue += _listGrayValues[i][COffset - n];
                    }
                    CValue /= nLineWidth;
                    DrawGrayCurve(canvases[i], _listGrayValues[i], COffset, TOffset);
                    if (cValues[i] > 0 || tValues[i] > 0)
                    {
                        CValue = cValues[i] / nLineWidth;
                        TValue = tValues[i] / nLineWidth;
                    }
                    JTJResult jtjResult = CalJTJFResult((byte)CValue, (byte)TValue, _item);
                    listTextBoxGray[i].Text = "C(" + CValue + ") T(" + TValue + ")";
                    string   str = string.Empty;
                    string[] UnqualifiedValue = new string[4];
                    str = JTJFResultStatToStr(jtjResult);
                    UnqualifiedValue = TestResultConserve.UnqualifiedOrQualified("0", _item.Hole[i].SampleName, _item.Name);

                    //定性消线
                    if (_item.Method == DYJTJItemPara.METHOD_DXXX)
                    {
                        val = 0;
                        if (str == "阳性")
                        {
                            _listJudmentValue[i].Text = "阳性";
                            listJudgmentRes[i].Text   = "不合格";
                            UnqualifiedValue[0]       = "不合格";
                        }
                        else if (str == "阴性")
                        {
                            _listJudmentValue[i].Text = "阴性";
                            listJudgmentRes[i].Text   = "合格";
                            UnqualifiedValue[0]       = "合格";
                        }
                        else
                        {
                            _listJudmentValue[i].Text = "无效";
                            listJudgmentRes[i].Text   = "无效";
                            UnqualifiedValue[0]       = "无效";
                        }
                    }
                    //2016年10月13日 wenj
                    //新版本判定方法:Abs(C-T)≥Abs_X时 C≥T阳性 C<T阴性;Abs(C-T)<Abs_X时 SexIdx=0阴性 =1阳性 =2可疑
                    //2017年10月12日 wenj 最新版比色法判定方法:C/T≤Abs_X 阴性
                    else if (_item.Method == DYJTJItemPara.METHOD_DXBS)
                    {
                        val = 0;
                        //综合C值<15则无效
                        //if (CValue > 15)
                        if (CValue > _item.InvalidC)
                        {
                            double ctAbs = (double)CValue / (double)TValue;
                            val = ctAbs;
                            if (ctAbs <= _item.dxbs.Abs_X)
                            {
                                _listJudmentValue[i].Text = str = "阴性";
                                listJudgmentRes[i].Text   = "合格";
                                UnqualifiedValue[0]       = "合格";
                            }
                            else
                            {
                                _listJudmentValue[i].Text = str = "阳性";
                                listJudgmentRes[i].Text   = "不合格";
                                UnqualifiedValue[0]       = "不合格";
                            }
                        }
                        else
                        {
                            _listJudmentValue[i].Text       = str = "无效";
                            _listJudmentValue[i].FontWeight = FontWeights.Bold;
                            _listJudmentValue[i].Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0));
                            listJudgmentRes[i].Text         = "无效";
                            listJudgmentRes[i].FontWeight   = FontWeights.Bold;
                            listJudgmentRes[i].Foreground   = new SolidColorBrush(Color.FromRgb(255, 0, 0));
                            UnqualifiedValue[0]             = "无效";
                        }
                    }
                    //2017年6月25日 wenj 新增 定性比色法(T/C) T/C≤Abs_X为阳性,T/C>Abs_X为阴性
                    else if (_item.Method == DYJTJItemPara.METHOD_DXBS_TC)
                    {
                        val = 0;
                        if (CValue > _item.InvalidC)
                        {
                            float ctAbs = (float)TValue / CValue;
                            val = ctAbs;
                            if (ctAbs <= _item.dxbs.Abs_X)
                            {
                                _listJudmentValue[i].Text = str = "阳性";
                                listJudgmentRes[i].Text   = "不合格";
                                UnqualifiedValue[0]       = "不合格";
                            }
                            else
                            {
                                _listJudmentValue[i].Text = str = "阴性";
                                listJudgmentRes[i].Text   = "合格";
                                UnqualifiedValue[0]       = "合格";
                            }
                        }
                        else
                        {
                            _listJudmentValue[i].Text = str = "无效";
                            listJudgmentRes[i].Text   = "无效";
                            UnqualifiedValue[0]       = "无效";
                        }
                    }
                    //else
                    //{
                    //    str = String.Format("{0:F3}", jtjResult.density);
                    //    //UnqualifiedValue = TestResultConserve.UnqualifiedOrQualified(str, _item.Hole[i].SampleName, _item.Name);
                    //    _listJudmentValue[i].Text = str;
                    //    listJudgmentRes[i].Text = str;
                    //    listStandValue[i].Text = Convert.ToString(UnqualifiedValue[2]);
                    //}

                    UnqualifiedValue = UnqualifiedOrQualified(str);

                    if (!_listJudmentValue[i].Text.Trim().Equals("合格"))
                    {
                        _listJudmentValue[i].Foreground = new SolidColorBrush(Colors.Red);
                    }

                    //判定合格不合格
                    listTextBoxDetectResult[i].Text = str;
                    _listDetectResult.Add(str); // 检测结果,要么是阴阳性,要么是浓度值。

                    _CheckValue[(num > 0 ? (i - num) : i), 0]  = String.Format("{0:D2}", (i + 1));
                    _CheckValue[(num > 0 ? (i - num) : i), 1]  = "胶体金";
                    _CheckValue[(num > 0 ? (i - num) : i), 2]  = _item.Name;
                    _CheckValue[(num > 0 ? (i - num) : i), 3]  = _methodToString[_item.Method];
                    _CheckValue[(num > 0 ? (i - num) : i), 4]  = str;
                    _CheckValue[(num > 0 ? (i - num) : i), 5]  = _item.Unit;
                    _CheckValue[(num > 0 ? (i - num) : i), 6]  = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    _CheckValue[(num > 0 ? (i - num) : i), 7]  = LoginWindow._userAccount.UserName;
                    _CheckValue[(num > 0 ? (i - num) : i), 8]  = string.IsNullOrEmpty(_item.Hole[i].SampleName) ? string.Empty : _item.Hole[i].SampleName;
                    _CheckValue[(num > 0 ? (i - num) : i), 9]  = UnqualifiedValue[0];
                    _CheckValue[(num > 0 ? (i - num) : i), 10] = Convert.ToString(UnqualifiedValue[2]);
                    _CheckValue[(num > 0 ? (i - num) : i), 11] = String.Format("{0:D5}", sampleNum++);
                    _CheckValue[(num > 0 ? (i - num) : i), 12] = Convert.ToString(UnqualifiedValue[1]);
                    _CheckValue[(num > 0 ? (i - num) : i), 13] = _item.Hole[i].TaskName ?? string.Empty;
                    _CheckValue[(num > 0 ? (i - num) : i), 14] = string.IsNullOrEmpty(_item.Hole[i].CompanyName) ? string.Empty : _item.Hole[i].CompanyName;
                    _CheckValue[(num > 0 ? (i - num) : i), 15] = string.IsNullOrEmpty(_item.Hole[i].SampleId) ? string.Empty : _item.Hole[i].SampleId;
                    _CheckValue[(num > 0 ? (i - num) : i), 16] = _item.Hole[i].ProduceCompany;

                    //经营户
                    //DataTable dtblB = opr.GetAsDataTable("Ks_Business", string.Format(" ID = '{0}'", _item.Hole[i].CompanyCode), out errMsg);
                    //if (dtblB != null && dtblB.Rows.Count > 0)
                    //{
                    //    _CheckValue[(num > 0 ? (i - num) : i), 17] = dtblB.Rows[0]["IdentityCard"].ToString();
                    //    _CheckValue[(num > 0 ? (i - num) : i), 18] = dtblB.Rows[0]["TWNum"].ToString();
                    //    _CheckValue[(num > 0 ? (i - num) : i), 19] = dtblB.Rows[0]["TWNume"].ToString();
                    //}
                    DataTable dtblB = opr.GetAsDataTable("Ks_Business", string.Format(" ID = '{0}'", _item.Hole[i].CompanyCode), out errMsg);
                    if (dtblB != null && dtblB.Rows.Count > 0)
                    {
                        _CheckValue[(num > 0 ? (i - num) : i), 17] = dtblB.Rows[0]["IdentityCard"].ToString();
                        _CheckValue[(num > 0 ? (i - num) : i), 18] = dtblB.Rows[0]["TWNum"].ToString();
                        _CheckValue[(num > 0 ? (i - num) : i), 19] = dtblB.Rows[0]["TWNume"].ToString();
                        dtblB = opr.GetAsDataTable("ks_AreaMarket", string.Format(" LicenseNo = '{0}'", dtblB.Rows[0]["LicenseNo"].ToString()), out errMsg);
                        if (dtblB != null && dtblB.Rows.Count > 0)
                        {
                            _CheckValue[(num > 0 ? (i - num) : i), 14] = dtblB.Rows[0]["MarketName"].ToString() + "|" +
                                                                         dtblB.Rows[0]["LicenseNo"].ToString() + "|" + GetMarketType(dtblB.Rows[0]["MarketRef"].ToString());
                        }
                    }
                    else
                    {
                        dtblB = opr.GetAsDataTable("ks_AreaMarket", string.Format(" LicenseNo = '{0}'", _item.Hole[i].CompanyCode), out errMsg);
                        if (dtblB != null && dtblB.Rows.Count > 0)
                        {
                            _CheckValue[(num > 0 ? (i - num) : i), 14] = dtblB.Rows[0]["MarketName"].ToString() + "|" +
                                                                         dtblB.Rows[0]["LicenseNo"].ToString() + "|" + GetMarketType(dtblB.Rows[0]["MarketRef"].ToString());
                        }
                    }
                    //样品品类
                    _CheckValue[(num > 0 ? (i - num) : i), 20] = _item.Hole[i].SampleCode;
                    _CheckValue[(num > 0 ? (i - num) : i), 21] = _item.Hole[i].SampleName;

                    //项目
                    DataTable dtblC = opr.GetAsDataTable("Ks_CheckItem", string.Format(" ItemName = '{0}'", _item.Name), out errMsg);
                    if (dtblC != null && dtblC.Rows.Count > 0)
                    {
                        _CheckValue[(num > 0 ? (i - num) : i), 22] = dtblC.Rows[0]["ParentCode"].ToString();
                        _CheckValue[(num > 0 ? (i - num) : i), 23] = dtblC.Rows[0]["ItemCode"].ToString();
                    }
                    else
                    {
                        dtblC = opr.GetAsDataTable("Ks_CheckItem", string.Format(" ParentName = '{0}'", _item.Name), out errMsg);
                        if (dtblC != null && dtblC.Rows.Count > 0)
                        {
                            _CheckValue[(num > 0 ? (i - num) : i), 22] = dtblC.Rows[0]["ParentCode"].ToString();
                            _CheckValue[(num > 0 ? (i - num) : i), 23] = dtblC.Rows[0]["ItemCode"].ToString();
                        }
                    }
                }
                else
                {
                    num += 1;
                    _listStrRecord.Add(null);
                    _listDetectResult.Add(null);
                }
            }
        }
Ejemplo n.º 5
0
        private void UpdateStatus(byte[] data)
        {
            string[] types = { "数据测试中", "测试完成", "未检出", "加标测试" };
            int      count = _canvases.Count;

            for (int i = 0; i < count; i++)
            {
                int offset  = i * 16;
                int type    = (data[offset + 8] << 8) | (data[offset + 9]);
                int time    = (data[offset + 10] << 8) | (data[offset + 11]);
                int v       = (data[offset + 12] << 8) | (data[offset + 13]);
                int a       = (data[offset + 14] << 24 | data[offset + 15] << 16 | data[offset + 16] << 8 | data[offset + 17]);
                int density = (data[offset + 18] << 24 | data[offset + 19] << 16 | data[offset + 20] << 8 | data[offset + 21]);
                _listTime[i].Content = "时间:" + time * 0.1 + "S";
                _listMV[i].Content   = "电位:" + v + "mV";
                _listUA[i].Content   = "电流:" + a * (0.0001) + "uA";
                //取最大电流
                if (maxA < a * (0.0001))
                {
                    maxA = a * (0.0001);
                }

                if (time > 0 && time < 2200 && v > 64436)
                {
                    if (_cruveWindow == null)
                    {
                        _cruveWindow = new CurveWindow();
                        _cruveWindow.Show();
                        Global.timeValue = time * 0.1;
                        Global.xValue    = v;
                        Global.yValue    = a * (0.0001);
                    }
                    else
                    {
                        Global.timeValue = time * 0.1;
                        Global.xValue    = v;
                        Global.yValue    = a * (0.0001);
                    }
                    dobv[index] = v;
                    doba[index] = a * 0.0001;
                    index++;
                }
                else
                {
                    _cruveWindow = null;
                }
                _listDensity[i].Content = "浓度:" + density * 0.0001 + "ug/l";
                _Value = Convert.ToString(density * 0.0001);
                if (type < 4)
                {
                    _listStage[i].Content = types[type];
                }
                else
                {
                    _listStage[i].Content = "检测到未知数据";
                }

                if (type != 0)
                {
                    //计算浓度
                    //x=(b*b-4*a(c-y)-b)/2a
                    //a=A2,b=A1,c=A0,y为电流(取最高值)
                    double xV = Math.Pow(((_item.a1 * _item.a1) - (4 * _item.a2) * (_item.a0 - maxA)), 1f / 2);
                    double x  = (xV - _item.a1) / (2 * _item.a2);
                    _listJudgmentReult[i].Text = (x * _item.DilutionRatio > _item.Requirements) ? "不合格" : "合格";
                    _listtextNongdu[i].Text    = (x * _item.DilutionRatio).ToString("F4") + "ug/l";
                    btn_result.IsEnabled       = true;
                }

                if (type == 1)
                {
                    _StandardValue             = TestResultConserve.UnqualifiedOrQualified((density * 0.0001).ToString(), _item.Hole[i].SampleName, _item.Name);
                    _UnqualifiedValue          = Convert.ToString(_StandardValue[0]);
                    _listStandardValue[i].Text = Convert.ToString(_StandardValue[2]);
                    _listJudgmentReult[i].Text = Convert.ToString(_StandardValue[1]);

                    _CheckValue[i, 0]  = String.Format("{0:D2}", (i + 1));
                    _CheckValue[i, 1]  = "重金属";
                    _CheckValue[i, 2]  = _item.Name;
                    _CheckValue[i, 3]  = string.Empty;// methodToString[item.Method];
                    _CheckValue[i, 4]  = _Value;
                    _CheckValue[i, 5]  = _item.Unit;
                    _CheckValue[i, 6]  = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    _CheckValue[i, 7]  = LoginWindow._userAccount.UserName;
                    _CheckValue[i, 8]  = string.IsNullOrEmpty(_item.Hole[i].SampleName) ? string.Empty : _item.Hole[i].SampleName;
                    _CheckValue[i, 9]  = Convert.ToString(_StandardValue[0]);
                    _CheckValue[i, 10] = Convert.ToString(_StandardValue[2]);
                    _CheckValue[i, 11] = String.Format("{0:D5}", _item.SampleNum);
                    _CheckValue[i, 12] = Convert.ToString(_StandardValue[1]);
                    _CheckValue[i, 13] = _item.Hole[i].TaskName ?? string.Empty;
                    _CheckValue[i, 14] = string.IsNullOrEmpty(_item.Hole[i].CompanyName) ? string.Empty : _item.Hole[i].CompanyName;
                    _CheckValue[i, 15] = string.IsNullOrEmpty(_item.Hole[i].SampleId) ? string.Empty : _item.Hole[i].SampleId;
                    _CheckValue[i, 16] = _item.Hole[i].ProduceCompany;
                    _AllNumber         = TestResultConserve.ResultConserve(_CheckValue);
                    if (LoginWindow._userAccount.UpDateNowing)
                    {
                        ButtonUpdate_Click(null, null);
                    }
                }
            }
        }