Esempio n. 1
0
        public MainWindowViewModel()
        {
            portNameList = new List <string>();
            for (int i = 1; i <= 16; i++)
            {
                portNameList.Add($"COM{i}");
            }
            portName = portNameList[0];

            dataToSend = "=0005.000-";

            currentDateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

            startDataSendingEnabled = true;

            clockTimer          = new System.Timers.Timer();
            clockTimer.Interval = 1000;
            clockTimer.Elapsed += TimeTickTimer_Elapsed;
            clockTimer.Start();

            dataSendingIntervalList = new List <int>();
            for (int i = 1; i <= 6; i++)
            {
                dataSendingIntervalList.Add(i * 10);
            }

            dataSendingInterval = 20;

            StartDataSendingCommand = new Prism.Commands.DelegateCommand(() =>
            {
                try
                {
                    serialPortReader = new Utilities.SerialPortReader(portName);
                    serialPortReader.StartDataSending(dataToSend);
                    IsStartDataSendingEnabled = false;
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show(ex.Message);
                }
            });

            StopDataSendingCommand = new Prism.Commands.DelegateCommand(() =>
            {
                try
                {
                    serialPortReader.StopDataSending();
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show(ex.Message);
                }
                finally
                {
                    IsStartDataSendingEnabled = true;
                }
            });
        }
Esempio n. 2
0
        public MainWindowViewModel()
        {
            portList = new List <string>();
            for (int i = 1; i <= 16; i++)
            {
                portList.Add($"COM{i}");
            }
            baudRateList    = "300:600:1200:2400:4800:9600:19200:38400:57600:115200".Split(':').ToList();
            dataBitsList    = "5:6:7:8".Split(':').ToList();
            stopBitsList    = "0:1:1.5:2".Split(':').ToList();
            parityCheckList = "None:Odd:Even:Mark:Space".Split(':').ToList();
            stopBitsDict    = new Dictionary <string, System.IO.Ports.StopBits>();
            stopBitsDict.Add("0", System.IO.Ports.StopBits.None);
            stopBitsDict.Add("1", System.IO.Ports.StopBits.One);
            stopBitsDict.Add("1.5", System.IO.Ports.StopBits.OnePointFive);
            stopBitsDict.Add("2", System.IO.Ports.StopBits.Two);
            port            = "COM1";
            baudRate        = "9600";
            parityCheck     = "None";
            dataBits        = "8";
            stopBits        = "1";
            crcEnabled      = false;
            MessageContent  = "";
            openPortEnabled = true;
            OpenPortCommand = new Prism.Commands.DelegateCommand(() =>
            {
                try
                {
                    spReader = new Utilities.SerialPortReader(port, Convert.ToInt32(baudRate),
                                                              (Parity)Enum.Parse(typeof(Parity), parityCheck),
                                                              Convert.ToInt32(dataBits),
                                                              stopBitsDict[stopBits],
                                                              new SerialDataReceivedEventHandler(SerialPortDataReceivedEventHandler));
                    spReader.Open();
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show($"打开串口失败,{ex.Message}");
                    return;
                }
                IsOpenPortEnabled = false;
                timeStub          = Environment.TickCount;
                MessageTotal      = 0;
                IsTimerEnabled    = false;
            });

            ClosePortCommand = new DelegateCommand(() =>
            {
                spReader.Close();
                IsOpenPortEnabled = true;
                IsTimerEnabled    = true;
            });

            ClearMessageContentCommand = new DelegateCommand(() =>
            {
                MessageContent = "";
            });

            ReadDataCommand = new DelegateCommand <string>((t) =>
            {
                int timeSpan   = Convert.ToInt32(t);
                IsTimerEnabled = false;
                OpenPortCommand.Execute();
                Task.Run(() =>
                {
                    Thread.Sleep(timeSpan);
                    ClosePortCommand.Execute();
                    IsTimerEnabled = true;
                });
            });
        }