private void button12_Click(object sender, EventArgs e) { for (int i = 0; i < dgvCalcDc.Rows.Count; i++) { /* * if (WriteReg(2, (byte)i, (UInt16)UInt16.Parse(dgvCalcDc.Rows[i].Cells[3].Value.ToString(), System.Globalization.NumberStyles.HexNumber)) == false) * { * MessageBox.Show("写入失败"); * return; * } * if (WriteReg(2, (byte)(i + 0x10), (UInt16)UInt16.Parse(dgvCalcDc.Rows[i].Cells[4].Value.ToString(), System.Globalization.NumberStyles.HexNumber)) == false) * { * MessageBox.Show("写入失败"); * return; * } * */ UInt16 val = 0; byte board = (byte)UInt16.Parse(textBoxBoardAddr.Text); val = UInt16.Parse(dgvCalcDc.Rows[i].Cells[3].Value.ToString(), System.Globalization.NumberStyles.HexNumber); if (Funs485.WriteDebugReg(board, (byte)i, val) == false) { MessageBox.Show("写入失败"); return; } val = UInt16.Parse(dgvCalcDc.Rows[i].Cells[4].Value.ToString(), System.Globalization.NumberStyles.HexNumber); if (Funs485.WriteDebugReg(board, (byte)(i + 0x10), val) == false) { MessageBox.Show("写入失败"); return; } } MessageBox.Show("写入完成"); }
private void ProcCalc() { CalcFullValues(); Int16[] coefValues; if (!Funs485.RdScaleList(cardAddr, out coefValues)) { AppendText(this.txtMessage, "读取系数失败"); ShowText(this.btnStartCalc, "自动校准"); return; } for (int i = 0; i < coefValues.Length; i++) { if (coefValues[i] < 0 || coefValues[i] == 0x0) { coefValues[i] = 1024; } } coefValues.CopyTo(CoeffValues, 0); InvalidateCtrl(this.gridValueView); for (int i = 0; i < 4; i++) { DoCalcStep(i, CoeffValues); } if (!Funs485.WriteCoeff(cardAddr, CoeffValues)) { ShowText(this.txtMessage, "系数写入失败"); } WriteFactoryMessage(cardAddr); ShowText(this.btnStartCalc, "自动校准"); }
private void GetFullSendAmpli(int freqStep) { sendFullValue = 1; sigSource.SetFreq(freqList[freqStep]); sigSource.SetAmpli(sendFullValue); AppendText(this.txtMessage, "等待幅度稳定(8S),按任意键退出"); Int16[] refValues = new Int16[100]; DateTime startTime = DateTime.Now; while ((DateTime.Now - startTime).TotalSeconds < 8) { if (!Funs485.RdAllCh(refCardNo, out refValues)) { AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败\r\n", cardAddr)); return; } //if (waitKey.WaitOne(0,true)) //{ // break; //} } try { sendFullValue = (float)firstChFullVal / refValues[0]; freqFullValues[freqStep] = sendFullValue; } catch { } }
private void ProcCalc() { Int16[] coefValues; if (!Funs485.RdScaleList(cardAddr, out coefValues)) { AppendText(this.txtMessage, "读取系数失败"); ShowText(this.btnStartCalc, "自动校准"); return; } for (int i = 0; i < coefValues.Length / 2; i++) { if (coefValues[i * 2 + 1] < 0 || coefValues[i * 2 + 1] == 0x0) { coefValues[i] = 1024; } } AppendText(this.txtMessage, String.Format("读取板系数完成\r\n")); coefValues.CopyTo(CoeffValues, 0); InvalidateCtrl(this.gridValueView); DoCalcStep(CoeffValues); if (!Funs485.WriteCoeff(cardAddr, CoeffValues)) { ShowText(this.txtMessage, "系数写入失败"); } WriteFactoryMessage(cardAddr); AppendText(this.txtMessage, String.Format("校准完成\r\n")); ShowText(this.btnStartCalc, "自动校准"); }
private bool DoCalcStep(Int16[] scaleList) { Int16[] chValues = new Int16[100]; Int16[] refValues = new Int16[100]; DateTime startTime = DateTime.Now; AppendText(this.txtMessage, String.Format("开始读取模拟量,按任意键退出\r\n")); waitKey.Reset(); while ((DateTime.Now - startTime).TotalSeconds < 10) { if (!Funs485.RdAllCh(cardAddr, out chValues)) { AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败\r\n", cardAddr)); return(false); } if (!Funs485.RdAllCh(refCardNo, out refValues)) { refValues = new Int16[chValues.Length]; for (int i = 0; i < refValues.Length; i++) { refValues[i] = (Int16)Math.Round(realVal); } // AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr)); // return false; } if (chValues.Length != refValues.Length) { AppendText(this.txtMessage, String.Format("基准板与待校准板不一致")); return(false); } for (int i = 0; i < chValues.Length; i++) { chValues[i] = (Int16)(chValues[i] & 0x7fff); } chValues.CopyTo(WaitCalcValues, 0); refValues.CopyTo(RefValues, 0); InvalidateCtrl(this.gridValueView); if (waitKey.WaitOne(0, true)) { break; } } for (int i = 0; i < chValues.Length; i++) { double coef = scaleList[i * 2 + 1] * 1.0; float refVal = refValues[i]; float realVal = chValues[i]; coef = coef * refVal; coef = coef / realVal; // coef *= coef * refVal /realVal; scaleList[i * 2 + 1] = (Int16)Math.Round(coef); } scaleList.CopyTo(CoeffValues, 0); InvalidateCtrl(this.gridValueView); return(true); }
private void buttonExt4_Click(object sender, EventArgs e) { cardAddr = (byte)int.Parse(FormMain.Instance.txtBoardAddr.Text); String tster; Funs485.RdTsterMessage(cardAddr, out tster); AppendText(this.txtMessage, String.Format("测试人{0}", tster)); }
private void buttonExt2_Click(object sender, EventArgs e) { cardAddr = (byte)int.Parse(FormMain.Instance.txtBoardAddr.Text); DateTime dt; String id; Funs485.RdIdMessage(cardAddr, out id, out dt); AppendText(this.txtMessage, String.Format("板卡ID:{0},校准日期:{1:F}\r\n", id, dt)); }
private void buttonExt1_Click(object sender, EventArgs e) { Int16[] coefValues; cardAddr = (byte)int.Parse(FormMain.Instance.txtBoardAddr.Text); Funs485.RdScaleList(cardAddr, out coefValues); if (coefValues == null) { return; } coefValues.CopyTo(CoeffValues, 0); InvalidateCtrl(this.gridValueView); }
private void buttonExt5_Click(object sender, EventArgs e) { for (int i = 0; i < 4; i++) { CoeffValues[i * 2] = 0; CoeffValues[i * 2 + 1] = 4095; } if (!Funs485.WriteCoeff(cardAddr, CoeffValues)) { ShowText(this.txtMessage, "系数写入失败"); } }
private bool DoAmpliTstStep(int step, Int16[] scaleList) { Int16[] chValues = new Int16[100]; Int16[] refValues = new Int16[100]; sigSource.SetAmpli(ampliTable[step] * freqFullValues[step]); DateTime startTime = DateTime.Now; AppendText(this.txtMessage, String.Format("读值稳定后按任意键进入下一个幅度\r\n")); waitKey.Reset(); while ((DateTime.Now - startTime).TotalSeconds < 10) { if (!Funs485.RdAllCh(cardAddr, out chValues)) { AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr)); return(false); } if (!Funs485.RdAllCh(refCardNo, out refValues)) { AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr)); return(false); } if (chValues.Length != refValues.Length) { AppendText(this.txtMessage, String.Format("基准板与待校准板不一致")); return(false); } chValues.CopyTo(WaitCalcValues, 0); refValues.CopyTo(RefValues, 0); InvalidateCtrl(this.gridValueView); if (waitKey.WaitOne(0, true)) { break; } } StringBuilder sb = new StringBuilder(); sb.AppendFormat("幅度误差测试{0}:", step); for (int i = 0; i < chValues.Length / 3; i++) { float refVal = refValues[i * 3]; float realVal = chValues[i * 3]; sb.AppendFormat("{0}/{1}/{2}%,", realVal, refVal, realVal * 100 / refVal); } sb.AppendLine(); AppendText(this.txtMessage, sb.ToString()); WriteToFile(sb.ToString()); scaleList.CopyTo(CoeffValues, 0); InvalidateCtrl(this.gridValueView); return(true); }
private bool DoCalcStep(int step, Int16[] scaleList) { Int16[] chValues = new Int16[100]; Int16[] refValues = new Int16[100]; SetFreq(step); DateTime startTime = DateTime.Now; AppendText(this.txtMessage, String.Format("开始校准频率{0},读值稳定后按任意键进入下一个频率\r\n", freqNameList[step])); waitKey.Reset(); while ((DateTime.Now - startTime).TotalSeconds < 10) { if (!Funs485.RdAllCh(cardAddr, out chValues)) { AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr)); return(false); } if (!Funs485.RdAllCh(refCardNo, out refValues)) { AppendText(this.txtMessage, String.Format("读取板{0}模拟量数据失败", cardAddr)); return(false); } if (chValues.Length != refValues.Length) { AppendText(this.txtMessage, String.Format("基准板与待校准板不一致")); return(false); } chValues.CopyTo(WaitCalcValues, 0); refValues.CopyTo(RefValues, 0); InvalidateCtrl(this.gridValueView); if (waitKey.WaitOne(0, true)) { break; } } for (int i = 0; i < chValues.Length / 3; i++) { double coef = scaleList[i * 4 + step] * 1.0; float refVal = refValues[i * 3]; float realVal = chValues[i * 3]; coef = coef * refVal; coef = coef / realVal; // coef *= coef * refVal /realVal; scaleList[i * 4 + step] = (Int16)Math.Round(coef); } scaleList.CopyTo(CoeffValues, 0); InvalidateCtrl(this.gridValueView); return(true); }
private void btnCalcAndWrite_Click(object sender, EventArgs e) { try { for (int index = 0; index < this.dgvCalcDc.Rows.Count; ++index) { this.dgvCalcDc.Rows[index].Cells[3].Value = (object)short.Parse(this.dgvCalcDc.Rows[index].Cells[0].Value.ToString()).ToString("X4"); int num = (int)short.Parse(this.dgvCalcDc.Rows[index].Cells[1].Value.ToString()) - (int)short.Parse(this.dgvCalcDc.Rows[index].Cells[0].Value.ToString()); this.dgvCalcDc.Rows[index].Cells[4].Value = (object)((int)short.Parse(this.dgvCalcDc.Rows[index].Cells[2].Value.ToString()) * 4096 / (int)(short)((int)short.Parse(this.dgvCalcDc.Rows[index].Cells[1].Value.ToString()) - (int)short.Parse(this.dgvCalcDc.Rows[index].Cells[0].Value.ToString()))).ToString("X4"); } } catch { } byte boardAddr = (byte)ushort.Parse(this.textBoxBoardAddr.Text); Funs485.Rst(boardAddr); Funs485.UnLock(boardAddr); for (int index = 0; index < this.dgvCalcDc.Rows.Count; ++index) { ushort val1 = ushort.Parse(this.dgvCalcDc.Rows[index].Cells[3].Value.ToString(), NumberStyles.HexNumber); if (!Funs485.WriteDebugReg(boardAddr, (ushort)(byte)index, val1)) { int num = (int)MessageBox.Show("写入失败"); return; } else { ushort val2 = ushort.Parse(this.dgvCalcDc.Rows[index].Cells[4].Value.ToString(), NumberStyles.HexNumber); if (!Funs485.WriteDebugReg(boardAddr, (ushort)(byte)(index + 16), val2)) { int num = (int)MessageBox.Show("写入失败"); return; } } } this.boardAddress1 = (int)byte.Parse(this.textBoxBoardAddr.Text); if (!this.WriteReg(this.boardAddress1, (ushort)528, (ushort)43605)) { int num1 = (int)MessageBox.Show("写入失败"); } else { int num2 = (int)MessageBox.Show("写入成功"); } }
private void WriteFactoryMessage(byte cardAddr) { byte[] message = new byte[16]; byte[] idStrBuf = Encoding.Default.GetBytes(cardId); int coypLen = idStrBuf.Length < 12 ? idStrBuf.Length : 12; Array.Copy(idStrBuf, message, coypLen); DateTime dt = DateTime.Now; message[12] = (byte)(dt.Year); message[13] = (byte)(dt.Year >> 8); message[14] = (byte)(dt.Month); message[15] = (byte)(dt.Day); Funs485.WrFactoryMessage(cardAddr, message); message = new byte[16]; byte[] tsterNameBuf = Encoding.Default.GetBytes(testerName); coypLen = tsterNameBuf.Length < 16 ? tsterNameBuf.Length : 16; Array.Copy(tsterNameBuf, message, coypLen); Funs485.WrTsterMessage(cardAddr, message); }
private void ProcTest() { Int16[] coefValues; String id; DateTime dt; if (!Funs485.RdIdMessage(cardAddr, out id, out dt)) { AppendText(this.txtMessage, "读取板Id失败"); } AppendText(this.txtMessage, "开始测试" + id + "\r\n"); WriteToFile(DateTime.Now.ToString("F") + id); if (!Funs485.RdScaleList(cardAddr, out coefValues)) { AppendText(this.txtMessage, "读取系数失败"); ShowText(this.btnRun, "开始测试"); return; } coefValues.CopyTo(CoeffValues, 0); InvalidateCtrl(this.gridValueView); CalcFullValues(); for (int i = 0; i < 4; i++) { DoAmpliTstStep(i, CoeffValues); } String ver; Funs485.RdVerMessage(cardAddr, out ver); AppendText(this.txtMessage, ver + "\r\n"); // WriteFactoryMessage(cardAddr); ShowText(this.btnRun, "开始测试"); }