using SkiaSharp; using SunlightCentralizedControlManagement_SCCM_.UserClass; using SunlightCentralizedControlManagement_SCCM_.ViewModel; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.IO; 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 DispenseMachinesSet : UserControl { int type_; public DispenseMachinesSet() { InitializeComponent(); // string[] Machine_ = { "252", "252RB", "252-2T", "252RDRM", "242W", "302", "303", "303PDW" }; TextMachineGroup.ItemsSource = Machine_; } 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) { SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 SQLiteHelpers.Open(); //打开数据库 DataTable dataTable = SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense Order by id", null).Tables[0]; SQLiteHelpers.Close(); Griddata.ItemsSource = dataTable.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;//定位第列, User.Text = (Griddata.Columns[5].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列, Password.Text = (Griddata.Columns[6].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text;//定位第列, string TYR= (Griddata.Columns[7].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text; dLICK.IsChecked = Convert.ToBoolean((Griddata.Columns[7].GetCellContent(Griddata.Items[rownum]) as TextBlock).Text);//定位第列, } } private void Save_Click(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(comboBoxMachine.Text) && !string.IsNullOrEmpty(TextMachineGroup.Text) && !string.IsNullOrEmpty(IP .Text)) { WriteableBitmap wb = new WriteableBitmap((BitmapSource)IMAGE.Source); byte[] imageData = SourceToArray(wb); Dictionary dr_new = new Dictionary();//缓存函数 dr_new.Add("Name", comboBoxMachine.Text); dr_new.Add("Groups", TextMachineGroup.Text); dr_new.Add("IP", IP.Text); dr_new.Add("PORT", PORT.Text); dr_new.Add("type", type_); dr_new.Add("State", "899"); dr_new.Add("User", User.Text); dr_new.Add("Password", Password.Text); dr_new.Add("LOCK", dLICK.IsChecked.ToString()); dr_new.Add("DATA",imageData); SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 SQLiteHelpers.Open(); //打开数据库 if (SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense where name ='" + comboBoxMachine.Text + "'", null).Tables[0].Rows.Count == 0) { SQLiteHelpers.InsertData("MachinesDispense", dr_new); } else { SQLiteHelpers.Update("MachinesDispense", dr_new, "name='" + comboBoxMachine.Text + "'", null); } Griddata.ItemsSource = SQLiteHelpers.ExecuteDataSet("select Name,Groups,IP,PORT,DATA from MachinesDispense Order by id", null).Tables[0].DefaultView; SQLiteHelpers.Close(); MessageBox.Show(Properties.Resources.Save + comboBoxMachine.Text, "SCCM", MessageBoxButton.OK, MessageBoxImage.Information); } else { MessageBox.Show(Properties.Resources.ERR , "SCCM", MessageBoxButton.OK, MessageBoxImage.Error); } } private void Delete_Click(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(comboBoxMachine.Text)) { MessageBoxResult vr = System.Windows.MessageBox.Show(Properties.Resources.Delete + comboBoxMachine.Text, "SCCM", MessageBoxButton.OKCancel, MessageBoxImage.Question); if (vr == MessageBoxResult.OK) // 如果是确定,就执行下面代码 { SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 SQLiteHelpers.Open(); //打开数据库 SQLiteHelpers.Delete("MachinesDispense", "Name='" + comboBoxMachine.Text + "'", null); Griddata.ItemsSource = SQLiteHelpers.ExecuteDataSet("select Name,Groups,IP,PORT,DATA from MachinesDispense Order by id", null).Tables[0].DefaultView; SQLiteHelpers.Close(); comboBoxMachine.Text = null; } } else { textlog.Text = "Invalid"; textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0)); } } 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 { textlog.Text = "Invalid"; textlog.Foreground = new SolidColorBrush(Color.FromRgb(255, 0, 0)); } } private void TextMachineGroup_DropDownClosed(object sender, EventArgs e) { Uri uri; BitmapImage bitmapImage; switch (TextMachineGroup.Text)//步骤用时计算 { case "252": uri = new Uri("pack://application:,,,/LOGO/252-2t.png"); bitmapImage = new BitmapImage(uri); IMAGE.Source = bitmapImage; type_ = 1; break; case "252-2T": uri = new Uri("pack://application:,,,/LOGO/252-2t.png"); bitmapImage = new BitmapImage(uri); IMAGE.Source = bitmapImage; type_ = 1; break; case "252RB": uri = new Uri("pack://application:,,,/LOGO/252RB.png"); bitmapImage = new BitmapImage(uri); IMAGE.Source = bitmapImage; type_ = 1; break; case "252RDRM": uri = new Uri("pack://application:,,,/LOGO/252RMRD.png"); bitmapImage = new BitmapImage(uri); IMAGE.Source = bitmapImage; type_ = 1; break; case "242W": uri = new Uri("pack://application:,,,/LOGO/242w.png"); bitmapImage = new BitmapImage(uri); IMAGE.Source = bitmapImage; type_ = 1; break; case "302": uri = new Uri("pack://application:,,,/LOGO/302.png"); bitmapImage = new BitmapImage(uri); IMAGE.Source = bitmapImage; type_ = 2; break; case "303": uri = new Uri("pack://application:,,,/LOGO/303.png"); bitmapImage = new BitmapImage(uri); IMAGE.Source = bitmapImage; type_ = 3; break; case "302PDW": uri = new Uri("pack://application:,,,/LOGO/303pdw.png"); bitmapImage = new BitmapImage(uri); IMAGE.Source = bitmapImage; type_ = 3; break; default: break; } } public static byte[] BitmapImageToByteArray(BitmapImage bmp) { byte[] byteArray = null; try { Stream sMarket = bmp.StreamSource; if (sMarket != null && sMarket.Length > 0) { //很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。 sMarket.Position = 0; using (BinaryReader br = new BinaryReader(sMarket)) { byteArray = br.ReadBytes((int)sMarket.Length); } } } catch { //other exception handling } return byteArray; } public static byte[] SourceToArray(WriteableBitmap source) { byte[] byteArray = null; try { using (MemoryStream ms = new MemoryStream()) { JpegBitmapEncoder coder = new JpegBitmapEncoder(); coder.QualityLevel = 100; coder.Frames.Add(BitmapFrame.Create(source)); coder.Save(ms); byteArray = ms.ToArray(); } } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); } return byteArray; } } }