123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- using MV485.db;
- using MV485.helper;
- using MV485.model;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- 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.Shapes;
- namespace MV485.Dlg
- {
- /// <summary>
- /// DlgAddDevice.xaml 的交互逻辑
- /// </summary>
- public partial class DlgAddDevice : Window
- {
- private string PortName { get; set; }
- private int BaudRate { get; set; }
- private int[] SlaveAddreses { get; set; }
- public List<TSlave> NewSlaveList { get; private set; }
- public DlgAddDevice()
- {
- InitializeComponent();
-
- Loaded += DlgAddDevice_Loaded;
- }
- private void DlgAddDevice_Loaded(object sender, RoutedEventArgs e)
- {
- LoadSerialPorts();
- cmbBaudrate.ItemsSource = SerialHelper.BaudRates;
- mcmbAddress.SetItems(Enumerable.Range(1, 247).ToArray().Select(i => i.ToString()).ToArray(),false);
- var readInterval = ConfigManager.Instance.GetConfigValue(ConfigKey.ReadInterval, "60");
- txtReadInterval.Text = readInterval;
- }
- private void LoadSerialPorts()
- {
- Dispatcher.BeginInvoke(new Action(() =>
- {
- cmbPortNames.ItemsSource = SerialHelper.GetSerialPortsWithDetails();
- if (cmbPortNames.Items.Count > 0)
- cmbPortNames.SelectedIndex = 0;
- //是否使用-基本配置选择的端口(应该用)
- var portName = ConfigManager.Instance.GetConfigValue(ConfigKey.ConfigPortName, "");
- cmbPortNames.SelectedValue = portName;
- }));
- }
- private async void BtnOK_Click(object sender, RoutedEventArgs e)
- {
- if(cmbPortNames.SelectedItem == null)
- {
- MessageBox.Show(this, "请选择端口号", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
- return;
- }
- if(cmbBaudrate.SelectedItem == null)
- {
- MessageBox.Show(this, "请选择波特率", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
- return;
- }
- string addresses = mcmbAddress.GetSelectedItems();
- if (string.IsNullOrWhiteSpace(addresses))
- {
- MessageBox.Show(this, "请选择485地址", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
- return;
- }
- if(!int.TryParse(txtReadInterval.Text,out int readInterval) || readInterval < 5 || readInterval > 1440)
- {
- MessageBox.Show(this, "请输入正确的间隔时间(5-1440)分钟", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
- return;
- }
- PortName = cmbPortNames.SelectedValue.ToString();
- BaudRate = int.Parse(cmbBaudrate.SelectedItem.ToString());
- SlaveAddreses = addresses.Split(',').Select(int.Parse).ToArray();
- string titleInfo = "正在插入数据库,请稍候...";
- WaitWindow waitWindow = new WaitWindow(titleInfo)
- {
- Owner = this,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- waitWindow.Show();
- NewSlaveList = new List<TSlave>();
- foreach(var address in SlaveAddreses)
- {
- TSlave slave = new TSlave()
- {
- SlaveId = Guid.NewGuid().ToString().Replace("-",""),
- PortName = PortName,
- BaudRate = BaudRate,
- Address = address,
- RunFlag = chkRun.IsChecked == true ? 1 : 0,
- ReadImageFlag = chkReadImage.IsChecked == true ? 1 : 0,
- ReadInterval = readInterval,
- LastReadTime = ""
- };
- try
- {
- bool blInsert = await Task.Run(() =>
- {
- return DBSlave.InsertTSlave(slave);
- });
- if (blInsert)
- {
- NewSlaveList.Add(slave);
- }
- }
- catch(Exception ex)
- {
- MessageBox.Show($"插入数据失败:{ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- ConfigManager.Instance.UpdateConfig(ConfigKey.ReadInterval, readInterval.ToString());
- waitWindow.Close();
- DialogResult = true;
- this.Close();
- }
- private void BtnClose_Click(object sender, RoutedEventArgs e)
- {
- DialogResult = false;
- this.Close();
- }
- }
- }
|