private void buttonLogin_Click(object sender, EventArgs e) { if (password.Text != "") { string sql = "select * from users where password='******';"; SQLiteDataReader reader = DataBaseSys.GetDataReaderValue(sql); //string[] array = new string[4]; if (!reader.Read()) { MessageBox.Show("密码错误!"); } else { reader.Close(); DataBaseSys.CloseConn(); this.Hide(); Form1 f1 = new Form1(true); f1.ShowDialog(); // ManagerSystem um = new ManagerSystem(); //MessageBox.Show("双击需要修改的坐标区域即可修改其中坐标地址!"); //um.ShowDialog(); } } else { MessageBox.Show("密码不能为空!", "错误提示"); } }
//下位机串口2接收数据 private void sp2_DataReceived(object sender, EventArgs e) { System.Threading.Thread.Sleep(100); this.Invoke((EventHandler)(delegate { System.Threading.Thread.Sleep(100); Byte[] rb = new Byte[sp2.BytesToRead]; sp2.Read(rb, 0, rb.Length); //手动状态下 if (radioHand.Checked) { //存储回复FF信号的板子编号(04) if (rb[3] == 0XFF) { strs += rb[2].ToString(); } else//(03) { string xYPoints = childToPcPointChange(rb); childRandnum += rb[2].ToString(); adressPoints += xYPoints; MessageBox.Show("定位成功子板id为" + childRandnum + "+-------收到的板子ID为:" + strs); if (strs == childRandnum && RexvData.Text != "") { lightSet.ForeColor = Color.Green; string pointDingWei = ""; for (int i = 0; i < adressPoints.Split(',').Length; i++) { pointDingWei += adressPoints.Split(',')[i]; } string[] pointDingWeiStrs = Regex.Replace(pointDingWei, @"(\w{4})", "$1,").Trim(',').Split(','); DataTable dt = new DataTable(); dt.Rows.Add(); for (int i = 0; i < pointDingWeiStrs.Length; i++) { dt.Columns.Add("P" + (i + 1), System.Type.GetType("System.String")); dt.Rows[0][i] = pointDingWeiStrs[i]; } DataSet ds2 = new DataSet(); ds2.Tables.Add(dt); //sda.Fill(ds2); dataAdressView1.DataSource = ds2.Tables[0]; dataAdressView1.ReadOnly = true; string machineId = RexvData.Text; string newAdrsssPints = adressPoints.TrimEnd(','); int n = adressPoints.Split(',').Length / 2; string pointNumber = n > 10 ? n.ToString() : "0" + n; String sqlHandMes = "select id from machines where machineId='" + RexvData.Text + "';"; SQLiteDataReader msdrHand = DataBaseSys.GetDataReaderValue(sqlHandMes); if (msdrHand.HasRows) { msdrHand.Close(); DataBaseSys.CloseConn(); MessageBoxButtons ButtonHandAdress = MessageBoxButtons.OKCancel; DialogResult drHand = MessageBox.Show("定位成功,存在相关的机种,需要修改吗?", "提示", ButtonHandAdress); if (drHand == DialogResult.OK) { if (!vip) { MessageBox.Show("您没有管理员权限无法修改!"); } else { string sql = "update machines set childNumber='" + pointNumber + "' ,adressNumber='" + newAdrsssPints + "' where machineId= '" + RexvData.Text + "'"; DataBaseSys.ExecuteNonQuery(sql); MessageBox.Show("修改成功!"); } } } else { msdrHand.Close(); DataBaseSys.CloseConn(); MessageBoxButtons messButton = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show("定位成功,无相关的机种,确定添加吗?", "提示", messButton); if (dr == DialogResult.OK)//如果点击“确定”按钮 { string addSql = "insert into machines(machineId,childNumber,adressNumber) values('" + machineId + "','" + pointNumber + "','" + newAdrsssPints + "')"; DataBaseSys.ExecuteNonQuery(addSql); MessageBox.Show("添加成功!"); } } adressPoints = ""; MessageBoxButtons messButtonAdd = MessageBoxButtons.OKCancel; DialogResult dr2 = MessageBox.Show("需要继续手动添加新机种吗?", "提示", messButtonAdd); if (dr2 == DialogResult.OK) { insertButton.Enabled = false; radioHand_MouseClick(null, null); } else { radioAuto.Checked = true; } } } } //自动状态下 else { b++; if (rb[3] == 0X00)//纠错成功回复00(05) { childNumList.Remove("0" + rb[2]); b = b - 1; if (childNumList.Count == 0) { for (int k = 0; k < dataAdressView1.ColumnCount; k++) { dataAdressView1.Rows[0].Cells[k].Style.ForeColor = Color.Black; } lightSet.ForeColor = Color.Green; timer1.Enabled = false; timer1.Stop(); childNumList.Clear(); return; } } else//有错误子板回复带坐标的(05) { string[] pointNums = Regex.Replace(dataBasePoints, @"(\w{4})", "$1,").Trim(',').Split(',');//把数据库查的坐标以一组4位以逗号分隔 string xYPoints = childToPcPointChange(rb); autoAdressPoints += xYPoints; string[] autoPoints = Regex.Replace(autoAdressPoints.Replace(",", ""), @"(\w{4})", "$1,").Trim(',').Split(',');//把下位机传来查的坐标以一组4位以逗号分隔 for (int i = 0; i < pointNums.Length; i++) { for (int j = 0; j < autoPoints.Length; j++) { if (pointNums[i] == autoPoints[j]) { sameMesList.Add(autoPoints[j]); break; } } } /*去重 * for (int i = 0; i < sameMesList.Count - 1; i++) * { * for (int j = i + 1; j < sameMesList.Count; j++) * { * if (sameMesList[i].Equals(sameMesList[j])) * { * sameMesList.RemoveAt(j); * j--; * } * } * }*/ } if (b == childNumList.Count) { string s = ""; foreach (var item in sameMesList) { s += item.ToString() + ","; } for (int k = 0; k < dataAdressView1.ColumnCount; k++) { //string strData = dataAdressView1[j, 0].Value.ToString(); for (int j = 0; j < sameMesList.Count; j++) { if (dataAdressView1.Rows[0].Cells[k].Value.ToString() == sameMesList[j].ToString()) { dataAdressView1.Rows[0].Cells[k].Style.ForeColor = Color.Red; lightSet.ForeColor = Color.Red; break; } else { dataAdressView1.Rows[0].Cells[k].Style.ForeColor = Color.Black; } } } autoAdressPoints = ""; sameMesList.Clear(); b = 0; } } sp2.DiscardInBuffer(); })); }
string childRandnum = ""; //手动定位成功的子板号 //扫码枪串口1接收数据 private void sp_DataReceived(object sender, EventArgs e) { System.Threading.Thread.Sleep(100); this.Invoke((EventHandler)(delegate { try { dataBasePoints = ""; lightSet.ForeColor = Color.Black; if (radioAuto.Checked) { childNumList.Clear(); RexvData.Text = ""; Byte[] rb = new Byte[sp.BytesToRead]; UTF8Encoding utf = new UTF8Encoding(); sp.Read(rb, 0, rb.Length);//接收到数据从缓冲区以字节数组形式读出来 string[] ds = utf.GetString(rb).Split(','); string machineNum = ds[0]; string pointNumber = ds[1].Substring(0, 2); string adressPoint = ds[1].Substring(2, (ds[1].Length) - 2); string newStyle = Regex.Replace(adressPoint, @"(\w{2})", "$1,").Trim(','); RexvData.Text = machineNum; String sql = "select childNumber,adressNumber from machines where machineId='" + machineNum + "';"; SQLiteDataReader rder = DataBaseSys.GetDataReaderValue(sql); if (rder.Read()) { string[] point = rder[1].ToString().Split(',');//4 string pointOld = ""; for (int i = 0; i < point.Length; i++) { pointOld += point[i]; } dataBasePoints = pointOld; string[] pointNums = Regex.Replace(pointOld, @"(\w{4})", "$1,").Trim(',').Split(','); string[] twoPoint = Regex.Replace(adressPoint, @"(\w{4})", "$1,").Trim(',').Split(','); if (!Enumerable.SequenceEqual(pointNums, twoPoint)) { MessageBoxButtons messButton1 = MessageBoxButtons.OKCancel; DialogResult dr1 = MessageBox.Show("已有该机种,坐标不一致!需要修改吗?", "提示", messButton1); if (dr1 == DialogResult.OK)//如果点击“确定”按钮 { if (!vip) { MessageBox.Show("您没有管理员权限无法修改!"); } else { string sqlAuto = "update machines set childNumber='" + pointNumber + "' ,adressNumber='" + newStyle + "' where machineId= '" + RexvData.Text + "'"; DataBaseSys.ExecuteNonQuery(sqlAuto); pointNums = twoPoint; String sqlUpdate = "select childNumber,adressNumber from machines where machineId='" + RexvData.Text + "';"; SQLiteDataReader rderUpdate = DataBaseSys.GetDataReaderValue(sqlUpdate); rder = rderUpdate; if (rderUpdate.Read()) { string[] pointUpdate = rderUpdate[1].ToString().Split(',');//4 string pointOldUpdate = ""; for (int i = 0; i < pointUpdate.Length; i++) { pointOldUpdate += pointUpdate[i]; } dataBasePoints = pointOldUpdate; MessageBox.Show("修改成功!"); } } } } DataTable dt = new DataTable(); dt.Rows.Add(); for (int i = 0; i < pointNums.Length; i++) { dt.Columns.Add("P" + (i + 1), System.Type.GetType("System.String")); dt.Rows[0][i] = pointNums[i]; } DataSet ds2 = new DataSet(); ds2.Tables.Add(dt); //sda.Fill(ds2); dataAdressView1.DataSource = ds2.Tables[0]; dataAdressView1.ReadOnly = true; //dataAdressView1.Rows[0].Cells[0].Style.BackColor = Color.Red; //自动模式下解析数据库存放的坐标地址用来与子板通讯 string[] adressPointData = rder[1].ToString().Split(','); // string pointNum = msr[0].ToString(); string[] adressPoint1 = getChildNum(adressPointData); //adressPoint1 = adressPoint1.Where(sP => !string.IsNullOrEmpty(sP)).ToArray(); for (int i = 0; i < adressPoint1.Length; i++) { if (!string.IsNullOrEmpty(adressPoint1[i])) { PortOrder po = new PortOrder(Direction.AB, "02", "0" + (i + 1), "0" + adressPoint1[i].Length / 4, adressPoint1[i]); childNumList.Add("0" + (i + 1)); sp2.Write(hexToString(po.getConnOrder()), 0, hexToString(po.getConnOrder()).Length); } } //定时向子板发送05自动读取命令以收到错误坐标指令 timer1.Enabled = true; timer1.Start(); rder.Close(); DataBaseSys.CloseConn(); } else { rder.Close(); DataBaseSys.CloseConn(); MessageBoxButtons messButton = MessageBoxButtons.OKCancel; DialogResult dr = MessageBox.Show("检测到是新机种!确定添加吗?", "提示", messButton); if (dr == DialogResult.OK)//如果点击“确定”按钮 { try { string addSql = "insert into machines(machineId,childNumber,adressNumber) values('" + machineNum + "','" + pointNumber + "','" + newStyle + "')"; DataBaseSys.ExecuteNonQuery(addSql); MessageBox.Show("添加成功!请重新扫描。"); } catch (Exception) { MessageBox.Show("添加失败!"); } } else { RexvData.Text = ""; dataAdressView1.DataSource = new DataTable(); } sp.DiscardInBuffer(); } } } catch (Exception x) { MessageBox.Show("出现异常错误!" + x.ToString()); } })); }