Newer
Older
Correlator / PipeGallery / View / MainView.xaml.cs
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, "提示");
                }
            }
        }

    }
}