/// <summary> /// 接收数据(线程方法) /// </summary> public void RecvData(Fmain f1) { if (!MyPort.IsOpen) { MyPort.Open(); } result = new byte[MyPort.BytesToRead]; //Sresult= MyPort.ReadExisting(); //MyPort.Read(result, 0, MyPort.BytesToRead); //f1.DataBox.AppendText(System.Text.Encoding.ASCII.GetString(result)+ "\n"); #region 读取 for (int i = 0; i < 64; i++) { MyPort.Read(result, 0, MyPort.BytesToRead); try { CSinput[i] = Convert.ToDouble(System.Text.Encoding.ASCII.GetString(result)); } catch (Exception e) { MessageBox.Show(e.ToString()); } } #endregion //MyThread.Start(); test(); }
/// <summary> /// 查询 /// </summary> /// <param name="PortName"></param> /// <param name="f1"></param> public void QueryData(string PortName, Fmain f1) { using (SqlConnection con = new SqlConnection(@"server=127.0.0.1,1433;database=DataRecover;Uid=sa;Pwd=wdzs")) { string sqlstr1 = string.Format("select top 15 * from {0} order by [RID] desc ", PortName + "Raw"); string sqlstr2 = string.Format("select top 256 * from {0} order by [RID] desc ", PortName + "Ret"); SqlDataAdapter myda1 = new SqlDataAdapter(sqlstr1, con); SqlDataAdapter myda2 = new SqlDataAdapter(sqlstr2, con); myds1 = new DataSet(); myds2 = new DataSet(); try { //3.打开连接 con.Open(); myda1.Fill(myds1, PortName + "Raw"); myda2.Fill(myds2, PortName + "Ret"); f1.dataGridView1.DataSource = myds1.Tables[0]; f1.dataGridView2.DataSource = myds2.Tables[0]; con.Close(); } catch (SqlException e) { MessageBox.Show(e.ToString()); } } }/// <summary>
/// <summary> /// 退出程序 /// </summary> /// <param name="f1">住窗体引用</param> public Control(Fmain f1) { MyView = new View(f1); MyModel = new Model(f1); f = f1; MyView.Start(); }
/// <summary> /// 保存配置信息 /// </summary> /// <param name="f1"></param> public bool SaveFile(Fmain f1) { if (f1.ListPort.Count > 0) { #region 事务.保存配置 using (StreamWriter sw = new StreamWriter(Application.StartupPath + @"\SerConfig", false, Encoding.UTF8)) { foreach (Serial i in f1.ListPort) { if (i.state) { sw.WriteLine(i.MyPort.PortName.ToString()); sw.WriteLine(i.MyPort.BaudRate.ToString()); sw.WriteLine(i.MyPort.DataBits.ToString()); sw.WriteLine(i.MyPort.StopBits.ToString()); sw.WriteLine(i.MyPort.Parity.ToString()); sw.Flush(); } } } #endregion return(true); } else { return(false); } }
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Fmain f1 = new Fmain(); Application.Run(f1); }
/// <summary> /// 串口初始化 /// </summary> public Serial(Fmain f) { CSinput = new double[64]; sh1 = new SqlHelper(); MyPort = new SerialPort(); PortID = ""; MyPort.DataReceived += delegate(object sender, SerialDataReceivedEventArgs e) { this.RecvData(f); }; MyThread = new Thread(test); }
/// <summary> /// 打开并侦听 /// </summary> public bool OpenPort(String PortID, Fmain f1) { bool find = false; if (f1.ForAllCheck.Checked == false) { foreach (Serial i in ListOfPorts) { if (i.PortID == PortID) { i.OpenPort(); find = true; break; } } if (!find) { Serial s1 = new Serial(f1); if (f1.PortX.SelectedItem == null || f1.BaudX.SelectedItem == null || f1.DataX.SelectedItem == null || f1.StopX.SelectedItem == null || f1.CheckX.SelectedItem == null) { MessageBox.Show("Config first", "Inform"); return(false); } else { s1.OpenPort(f1); if (s1.MyPort.IsOpen) { ListOfPorts.Add(s1); } return(s1.MyPort.IsOpen); } } else { return(true); } } else { if (ListOfPorts.Count > 0) { foreach (Serial i in ListOfPorts) { i.OpenPort(); } return(true); } else { MessageBox.Show("No port to open", "Inform"); return(false); } } }
public Model(Fmain f1) { MySqlHelper = new SqlHelper(); MyConf = new Conf(); ListOfPorts = new List <Serial>(); ListOfThread = new List <Thread>(); ListOfPorts.Clear(); ListOfThread.Clear(); f = f1; }
/// <summary> /// 加载配置 /// </summary> /// <param name="f1"></param> public void LoadConf(Fmain f1) { if (MyConf.LoadSeriaoConf(f1, ref ListOfPorts)) { MessageBox.Show("Load config Successfully", "Inform"); } else { MessageBox.Show("Make sure any config exist", "Error"); } }
/// <summary> /// 加载可用串口配置信息 /// </summary> /// <param name="f1">窗体引用</param> /// <param name="ListOfPorts">串口集合</param> /// <returns></returns> public bool LoadSeriaoConf(Fmain f1, ref List <Serial> ListOfPorts) { OpenFileDialog openFile = new OpenFileDialog(); openFile.Filter = "configfile|*.*"; openFile.ShowDialog(); if (openFile.FileName.Length > 0) { using (StreamReader sr = new StreamReader(openFile.FileName, Encoding.UTF8)) { bool find = false; //Serial m1 = new Serial(); string[] s = new string[6]; #region 读取记录 for (; !sr.EndOfStream; find = false) { for (int i = 0; i < 6; i++) { s[i] = sr.ReadLine().ToString(); } foreach (Serial i in ListOfPorts) { if (i.PortID.Equals(s[0])) { find = true; break; } } if (!find) { ListOfPorts.Add(new Serial(s)); } else { sr.ReadLine(); sr.ReadLine(); sr.ReadLine(); sr.ReadLine(); sr.ReadLine(); } } #endregion } } if (!(ListOfPorts.Count > 0)) { return(false); } else { return(true); } }
/// <summary> /// 删除串口 /// </summary> /// <param name="f1"></param> public void DelPort(Fmain f1) { foreach (string j in f1.PortBox.SelectedItems) { for (int i = ListOfPorts.Count - 1; i > -1; i--) { if (j.Equals(ListOfPorts.ElementAt(i).PortID)) { ListOfPorts.ElementAt(i).ClosePort(); ListOfPorts.RemoveAt(i); } } } }
/// <summary> /// 关闭名为PortID的串口 /// </summary> /// <param name="PortID"></param> public bool ClosePort(String PortID, Fmain f1) { //ListOfPorts.Find(x => x.PortID == PortID).ClosePort(); bool find = false; if (f1.ForAllCheck.Checked == false) { foreach (Serial i in ListOfPorts) { if (i.PortID == PortID) { i.ClosePort(); find = true; break; } } if (!find) { MessageBox.Show("No such port found", "Inform"); return(false); } else { return(true); } } else { if (ListOfPorts.Count > 0) { foreach (Serial i in ListOfPorts) { i.ClosePort(); } return(true); } else { MessageBox.Show("No port to close", "Inform"); return(false); } } }
/// <summary> /// 切换选项卡页面 /// </summary> /// <param name="f"></param> /// <param name="m1"></param> public void SwitchTab(Fmain f, Model m1, string t1) { if (t1.Equals("tabPage3")) { f.DBSwitch.Items.Clear(); foreach (Serial i in m1.ListOfPorts) { f.DBSwitch.Items.Add(i.MyPort.PortName); } } else { f.Channel.Items.Clear(); foreach (Serial i in m1.ListOfPorts) { f.Channel.Items.Add(i.MyPort.PortName); } } }
/// <summary> /// (重载)打开控件所示串口 /// </summary> /// <param name="f1"></param> public void OpenPort(Fmain f1) { try { if (!MyPort.IsOpen) { #region 事务.串口打开 PortID = f1.PortID.Text.ToString(); MyPort.PortName = f1.PortX.SelectedItem.ToString(); MyPort.BaudRate = Convert.ToInt32(f1.BaudX.SelectedItem.ToString()); switch (f1.CheckX.SelectedIndex) { case 0: MyPort.Parity = Parity.None; break; case 1: MyPort.Parity = Parity.Odd; break; case 2: MyPort.Parity = Parity.Even; break; case 3: MyPort.Parity = Parity.Mark; break; case 4: MyPort.Parity = Parity.Space; break; } MyPort.DataBits = Convert.ToInt32(f1.DataX.SelectedItem.ToString()); switch (f1.StopX.SelectedIndex) { case 0: MyPort.StopBits = StopBits.One; break; case 1: MyPort.StopBits = StopBits.Two; break; case 2: MyPort.StopBits = StopBits.OnePointFive; break; } #endregion MyPort.Open(); } } catch (Exception e) { MessageBox.Show(e.ToString() + "Open faild" + "\n" + "1.Check config" + "\n" + "2.Check device available" + "\n" + "3.Check device driver", "Error"); } }
public View(Fmain f1) { f = f1; }
/// <summary> /// 加载配置信息 /// </summary> /// <param name="f1"></param> public void LoadFile(Fmain f1) { OpenFileDialog openFile = new OpenFileDialog(); openFile.Filter = "configfile|*.*"; openFile.ShowDialog(); if (openFile.FileName.Length > 0) { using (StreamReader sr = new StreamReader(openFile.FileName, Encoding.UTF8)) { Serial m1 = new Serial(); for (; !sr.EndOfStream;) { m1.MyPort.PortName = sr.ReadLine(); if (!f1.PortBox.Items.Contains(m1.MyPort.PortName)) { #region 事务.加载配置信息 m1.MyPort.BaudRate = Convert.ToInt32(sr.ReadLine().ToString()); m1.MyPort.DataBits = Convert.ToInt32(sr.ReadLine().ToString()); switch (sr.ReadLine().ToString()) { case "0": m1.MyPort.StopBits = StopBits.One; break; case "1.5": m1.MyPort.StopBits = StopBits.Two; break; case "2": m1.MyPort.StopBits = StopBits.OnePointFive; break; } switch (sr.ReadLine().ToString()) { case "None": m1.MyPort.Parity = Parity.None; break; case "Odd": m1.MyPort.Parity = Parity.Odd; break; case "Even": m1.MyPort.Parity = Parity.Even; break; case "Mark": m1.MyPort.Parity = Parity.Mark; break; case "Space": m1.MyPort.Parity = Parity.Space; break; } f1.ListPort.Add(m1); #endregion #region 视图.添加监视串口 f1.PortBox.Items.Add(m1.MyPort.PortName); #endregion } else { sr.ReadLine(); sr.ReadLine(); sr.ReadLine(); sr.ReadLine(); sr.DiscardBufferedData(); } } } } }