You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

272 lines
12 KiB

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
{
/// <summary>
/// MachinesSet.xaml 的交互逻辑
/// </summary>
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 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)
{
DataTable dataTable = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense Order by id", null).Tables[0];
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<string, object> dr_new = new Dictionary<string, object>();//缓存函数
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);
if (MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select * from MachinesDispense where name ='" + comboBoxMachine.Text + "'", null).Tables[0].Rows.Count == 0)
{
MainWindowViewModel.SQLiteHelpers.InsertData("MachinesDispense", dr_new);
}
else
{
MainWindowViewModel.SQLiteHelpers.Update("MachinesDispense", dr_new, "name='" + comboBoxMachine.Text + "'", null);
}
Griddata.ItemsSource = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select Name,Groups,IP,PORT,DATA from MachinesDispense Order by id", null).Tables[0].DefaultView;
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) // 如果是确定,就执行下面代码
{
MainWindowViewModel.SQLiteHelpers.Delete("MachinesDispense", "Name='" + comboBoxMachine.Text + "'", null);
Griddata.ItemsSource = MainWindowViewModel.SQLiteHelpers.ExecuteDataSet("select Name,Groups,IP,PORT,DATA from MachinesDispense Order by id", null).Tables[0].DefaultView;
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;
}
}
}