using PipeGallery.Correlator; using PipeGallery.ViewModel; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PipeGallery.View { /// <summary> /// MainView.xaml 的交互逻辑 /// </summary> public partial class MainView : UserControl { public MainView() { InitializeComponent(); this.DataContext = MainViewModel.Instance; this.Loaded += MainView_Loaded; } void MainView_Loaded(object sender, RoutedEventArgs e) { StartView startView = new StartView(bdrMain); bdrPreposition.Child = startView; /* 线程优化1 Thread monitorThread = new Thread(new ThreadStart(monitor)) { IsBackground = true };//监测串口插入 monitorThread.Start(); * */ Task monitorThread = new Task(() => monitor()); monitorThread.Start(); } /// <summary> /// 串口监测线程 /// </summary> private void monitor() { string[] ports = System.IO.Ports.SerialPort.GetPortNames(); CalculteSatus.msp = new ManipulateSerialPort(); while (true) { try { while (true) { foreach (string portName in ports) { if (portName == "COM3" && !CalculteSatus.msp.sp.IsOpen) { CalculteSatus.msp.sp.PortName = portName; //串口名称 CalculteSatus.msp.sp.BaudRate = int.Parse("230400"); //波特率57600和230400 CalculteSatus.msp.sp.DataBits = int.Parse("8"); //数据位 CalculteSatus.msp.sp.StopBits = (System.IO.Ports.StopBits)int.Parse("1"); //停止位 CalculteSatus.msp.sp.Open(); //打开串口 CalculteSatus.msp.showSignal();//采集设备状态 break; } } Thread.Sleep(5000); ports = System.IO.Ports.SerialPort.GetPortNames(); } } catch (Exception ex) { MessageBox.Show("读取串口信息出错:" + ex.Message, "提示"); } } } } }