|
- using ModbusDemo.Uitls;
- using Prism.Commands;
- using Prism.Mvvm;
- using Prism.Regions;
- using System;
- using System.Collections.Generic;
- using System.IO.Ports;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
-
- namespace ModbusDemo.VIewModel
- {
-
- class SettingsUCViewModel : BindableBase
- {
- //控制页面跳转
- private readonly IRegionManager _regionManager;
- //断开连接的命令
- public DelegateCommand DisConnectionCmm { get; set; }
- //链接窗口的命令
- public DelegateCommand ConnectionCmm { get; set; }
-
- //获取串口
- private SerialPort _serialPort;
- //设置串口名字
- private string _portName = "COM1";
-
- public string PortName
- {
- get { return _portName; }
- set
- {
- _portName = value;
- RaisePropertyChanged();
- }
- }
-
- //设置波特率
- private string _baudRate = "9600";
-
- public string BaudRate
- {
- get { return _baudRate; }
- set
- {
- _baudRate = value;
- RaisePropertyChanged();
- }
- }
-
- //设置数据位
- private string _dataBits = "8";
-
- public string DataBits
- {
- get { return _dataBits; }
- set
- {
- _dataBits = value;
-
- RaisePropertyChanged();
- }
- }
- //设置校验位
- private Parity _parity = Parity.Even;
-
- public Parity Parity
- {
- get { return _parity; }
- set
- {
- _parity = value;
- RaisePropertyChanged();
- }
- }
-
- //设置停止位
- private StopBits _stopBits = StopBits.One;
-
- public StopBits StopBits
- {
- get { return _stopBits; }
- set
- {
- _stopBits = value;
- RaisePropertyChanged();
- }
- }
-
- public SettingsUCViewModel()
- {
-
- }
- /// <summary>
- /// 从容器中获取创建的窗口
- /// </summary>
- /// <param name="serialPort"></param>
- public SettingsUCViewModel(SerialPort serialPort, IRegionManager regionManager)
- {
- _serialPort = serialPort;
- ConnectionCmm = new DelegateCommand(Connection);
- DisConnectionCmm = new DelegateCommand(DisConnection);
- _regionManager = regionManager;
- }
-
- private void DisConnection()
- {
- if (_serialPort.IsOpen)
- {
- _serialPort.Close();
- MessageBox.Show("连接已经断开");
- }
- }
-
- /// <summary>
- /// 串口参数设置
- /// </summary>
- private void Connection()
- {
- //TODO,做数据的判空处理
- if (!_serialPort.IsOpen)
- {
-
- _serialPort.PortName = GetComboBoxItemValue(this.PortName);
- _serialPort.BaudRate = int.Parse(GetComboBoxItemValue(this.BaudRate));
- _serialPort.Parity = this.Parity;
- _serialPort.StopBits = this.StopBits;
- _serialPort.DataBits = int.Parse(GetComboBoxItemValue(this.DataBits));
- //读取超时时间
- _serialPort.ReadTimeout = 500;
- //写入超时时间
- _serialPort.WriteTimeout = 500;
- try
- {
- _serialPort.Open();
- MessageBox.Show("串口链接成功");
- _regionManager.Regions["ModbusRegion"].RequestNavigate("CoilUC");
-
- }
- catch (Exception)
- {
-
- MessageBox.Show("串口已经链接,请先断开链接在尝试","warning",MessageBoxButton.OK,MessageBoxImage.Warning);
- }
- }
-
- }
- /// <summary>
- /// 处理下拉框的选择信息
- /// </summary>
- /// <param name="ComboBoxItem"></param>
- /// <returns></returns>
- private string GetComboBoxItemValue(string ComboBoxItem)
- {
-
- string displayText = ComboBoxItem.ToString();
- string cleanText = displayText.Replace("System.Windows.Controls.ComboBoxItem: ", "");
- return cleanText;
- }
-
-
- }
- }
|