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
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;
|
|
}
|
|
}
|
|
}
|
|
|