using SkiaSharp; using SunlightCentralizedControlManagement_SCCM_.UserClass; using SunlightCentralizedControlManagement_SCCM_.ViewModel; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; 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.Navigation; using System.Windows.Shapes; using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper; namespace SunlightCentralizedControlManagement_SCCM_.View { /// /// MachinesSet.xaml 的交互逻辑 /// public partial class MachinesSet : UserControl { public MachinesSet() { InitializeComponent(); // 获取所有可用串口端口,并添加到comboBoxCOM string[] ports = System.IO.Ports.SerialPort.GetPortNames(); comboBoxCOM0.ItemsSource = ports; comboBoxCOM0.Text = Configini.IniReadvalue("SYS", "COM"); } private SQLiteHelper SQLiteHelpers = null; //定义数据库 private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\SCCM.db"; //数据库路径 private readonly UserClass.IniFile.IniFiles Configini = new UserClass.IniFile.IniFiles(Convert.ToString(System.AppDomain.CurrentDomain.BaseDirectory) + "SCCM.ini"); private string SYS_machines = null; private void UserControl_Loaded(object sender, RoutedEventArgs e) { Griddata.ItemsSource = MainWindowViewModel.Machines.DefaultView; } private void Griddata_MouseDoubleClick(object sender, MouseButtonEventArgs e) { int rownum = Griddata.SelectedIndex;//获取鼠标选中行并定义变量 if (rownum != -1)//判断鼠标定位是否有效 { comboBoxMachine.Text = (Griddata.Columns[1].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第1列, TextMachineGroup.Text = (Griddata.Columns[2].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列, IP.Text = (Griddata.Columns[3].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列, PORT.Text = (Griddata.Columns[4].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列, comboBoxCOM0.Text = (Griddata.Columns[5].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列, BAUD.Text = (Griddata.Columns[6].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列, } } private void Save_Click(object sender, RoutedEventArgs e) { } private void Delete_Click(object sender, RoutedEventArgs e) { } private void Test_Click(object sender, RoutedEventArgs e)//测试按钮 { if (!string.IsNullOrEmpty(IP.Text) && !string.IsNullOrEmpty(PORT.Text)) { textlog.Text = "TEST"; textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 0, 255)); //------------使用ping类------ string host = IP.Text; Ping p1 = new Ping(); PingReply reply = p1.Send(host); //发送主机名或Ip地址 //StringBuilder sbuilder; if (reply.Status == IPStatus.Success) { Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //连接服务器,绑定IP 与 端口 IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse(IP.Text), int.Parse(PORT.Text)); try { socket.Connect(iPEndPoint); socket.Close();//离线 textlog.Text = "Link succeed"; textlog.Foreground = new SolidColorBrush(Color.FromRgb(0, 255, 0)); } catch (Exception) { textlog.Text = "Link failed"; textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 255, 0)); } } else if (reply.Status == IPStatus.TimedOut) { textlog.Text = "Link timeout"; textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0)); } else { textlog.Text = "No links"; textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0)); } } else if (!string.IsNullOrEmpty(comboBoxCOM0.Text)) { } else { textlog.Text = "Invalid"; textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0)); } } } }