using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
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 System.Windows.Threading;
namespace RFIDServicePlate
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window
{
System.Collections.ObjectModel.ObservableCollection CommodityList = new System.Collections.ObjectModel.ObservableCollection();
public MainWindow()
{
InitializeComponent();
}
private void btn_Conn_Click(object sender, RoutedEventArgs e)
{
try
{
// var result = RFID.InitRFIDConn(2, "", "", "com1", "38400", "8E1");
new Thread(() =>
{
MySQLInstallHelper _MySQLInstallHelper = new MySQLInstallHelper();
_MySQLInstallHelper.DataReceivedEventClick += _MySQLInstallHelper_DataReceivedEventClick;
_MySQLInstallHelper.StartMySQLInstall();
})
{ IsBackground = true }.Start();
// text_Read.Text = result.ToString();
}
catch (Exception ex)
{
text_Read.Text = ex.Message;
}
}
private void _MySQLInstallHelper_DataReceivedEventClick(string resultString, MySQLInstallHelper.RunState hasExited)
{
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate
{
CommodityModel _CommodityModel = new CommodityModel
{
CommodityName = resultString
};
CommodityList.Add(_CommodityModel);
((this.FindName("DataGrid_RFID")) as DataGrid).ItemsSource = CommodityList;
text_Read.Text = resultString;
if (hasExited == MySQLInstallHelper.RunState.Finish)
{
btn_Read_Click(null, null);
}
});
}
private void btn_Read_Click(object sender, RoutedEventArgs e)
{
try
{
CommodityList = Newtonsoft.Json.JsonConvert.DeserializeObject>(
Newtonsoft.Json.JsonConvert.SerializeObject(ESSupport.Lib.SyBaseHelper.QueryOdbc(
@"SELECT A.COMMODITY_NAME AS CommodityName,
A.COMMODITY_RETAILPRICE AS CommodityPrice,
A.COMMODITY_CODE AS CommodityCode
FROM T_COMMODITYEX A
WHERE A.SERVERPARTCODE = '888888' AND A.ISVALID = 1").Tables[0]));
((this.FindName("DataGrid_RFID")) as DataGrid).ItemsSource = CommodityList;
var result = RFID.TryReadRFTag();
text_Read.Text = result;
if (!string.IsNullOrWhiteSpace(result))
{
var RFIDCommodityList = result.Split('@').ToList();
}
}
catch (Exception ex)
{
text_Read.Text = ex.Message;
}
}
private void btn_Write_Click(object sender, RoutedEventArgs e)
{
try
{
string str_Code = CommodityList[DataGrid_RFID.SelectedIndex].CommodityCode;
var result = RFID.TryWriteRFTag(str_Code);
text_Read.Text = result;
}
catch (Exception ex)
{
text_Read.Text = ex.Message;
}
}
private void btn_Close_Click(object sender, RoutedEventArgs e)
{
try
{
var result = RFID.Dis_pose();
text_Read.Text = result.ToString();
}
catch (Exception ex)
{
text_Read.Text = ex.Message;
}
}
///
/// 打开控制台执行拼接完成的批处理命令字符串
///
/// 需要执行的命令委托方法:每次调用 中的参数都会执行一次
private void ExecBatCommand(Action> inputAction)
{
System.Diagnostics.Process pro = null;
System.IO.StreamWriter sIn = null;
System.IO.StreamReader sOut = null;
try
{
pro = new System.Diagnostics.Process();
pro.StartInfo.FileName = "cmd.exe";
pro.StartInfo.UseShellExecute = false;
pro.StartInfo.CreateNoWindow = true;
pro.StartInfo.RedirectStandardInput = true;
pro.StartInfo.RedirectStandardOutput = true;
pro.StartInfo.RedirectStandardError = true;
pro.OutputDataReceived += Pro_OutputDataReceived;
//pro.OutputDataReceived += (sender, e) => Console.WriteLine(e.Data);
pro.ErrorDataReceived += Pro_OutputDataReceived;
//pro.ErrorDataReceived += (sender, e) => Console.WriteLine(e.Data);
pro.Start();
sIn = pro.StandardInput;
sIn.AutoFlush = true;
pro.BeginOutputReadLine();
inputAction(value => sIn.WriteLine(value));
pro.WaitForExit();
}
finally
{
if (pro != null && !pro.HasExited)
pro.Kill();
if (sIn != null)
sIn.Close();
if (sOut != null)
sOut.Close();
if (pro != null)
pro.Close();
}
}
private void Pro_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
{
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate
{
CommodityModel _CommodityModel = new CommodityModel
{
CommodityName = e.Data
};
CommodityList.Add(_CommodityModel);
((this.FindName("DataGrid_RFID")) as DataGrid).ItemsSource = CommodityList;
text_Read.Text = e.Data;
});
}
}
}