254 lines
9.8 KiB
C#
254 lines
9.8 KiB
C#
using Newtonsoft.Json;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.Linq;
|
||
using System.Net;
|
||
using System.Net.Sockets;
|
||
using System.Text;
|
||
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 Lib = ESSupport.Lib;
|
||
using MediaPlayer;
|
||
namespace PrintDemo
|
||
{
|
||
/// <summary>
|
||
/// MainWindow.xaml 的交互逻辑
|
||
/// </summary>
|
||
public partial class MainWindow : Window
|
||
{
|
||
public MainWindow()
|
||
{
|
||
InitializeComponent();
|
||
}
|
||
int count = 0;
|
||
List<Uri> _VideoList = new List<Uri>();
|
||
List<string> WMPVideoList = new List<string>();
|
||
System.Windows.Forms.Timer _Timer;
|
||
// 窗口加载事件
|
||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||
{
|
||
var hwndSource = PresentationSource.FromVisual(this) as System.Windows.Interop.HwndSource;
|
||
if (hwndSource != null)
|
||
{
|
||
var hwndTarget = hwndSource.CompositionTarget;
|
||
if (hwndTarget != null) hwndTarget.RenderMode = System.Windows.Interop.RenderMode.Default;
|
||
}
|
||
|
||
// 绑定视频文件
|
||
WMPLib.IWMPPlaylist _WMPPlaylist = wpfMediaPlayer.playlistCollection.newPlaylist("ad");
|
||
WMPLib.IWMPMedia _WMPMedia;
|
||
for (int i = 1; i < 5; i++)
|
||
{
|
||
_VideoList.Add(new Uri(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, i.ToString()+".mp4")));
|
||
WMPVideoList.Add(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, i.ToString() + ".mp4"));
|
||
_WMPMedia = wpfMediaPlayer.newMedia(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, i.ToString() + ".mp4"));
|
||
_WMPPlaylist.appendItem(_WMPMedia);
|
||
}
|
||
//Full, Mini, None, Invisible
|
||
|
||
wpfMediaPlayer.uiMode = "None";
|
||
wpfMediaPlayer.settings.setMode("loop", true);
|
||
wpfMediaPlayer.enableContextMenu = false;
|
||
wpfMediaPlayer.settings.autoStart = false;
|
||
wpfMediaPlayer.currentPlaylist = _WMPPlaylist;
|
||
//wpfMediaPlayer.URL = WMPVideoList[0];
|
||
wpfMediaPlayer.Ctlcontrols.play();
|
||
_Timer = new System.Windows.Forms.Timer();
|
||
_Timer.Tick += new EventHandler(Timer_Tick);
|
||
_Timer.Interval = 1000;
|
||
//_Timer.Start();
|
||
return;
|
||
//_VideoList.Add(new Uri(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "2.mp4")));
|
||
AdPlay.Source = _VideoList[0];
|
||
|
||
// 交互式控制
|
||
AdPlay.LoadedBehavior = MediaState.Manual;
|
||
|
||
// 添加元素加载完成事件 -- 自动开始播放
|
||
AdPlay.Loaded += new RoutedEventHandler(Media_Loaded);
|
||
|
||
// 添加媒体播放结束事件 -- 重新播放
|
||
AdPlay.MediaEnded += new RoutedEventHandler(Media_MediaEnded);
|
||
|
||
// 添加元素卸载完成事件 -- 停止播放
|
||
AdPlay.Unloaded += new RoutedEventHandler(Media_Unloaded);
|
||
}
|
||
|
||
private void Timer_Tick(object sender, EventArgs e)
|
||
{
|
||
if (wpfMediaPlayer.playState == WMPLib.WMPPlayState.wmppsPlaying)
|
||
{
|
||
double d1 = Convert.ToDouble(wpfMediaPlayer.currentMedia.duration.ToString());
|
||
double d2 = Convert.ToDouble(wpfMediaPlayer.Ctlcontrols.currentPosition.ToString()) + 1;
|
||
if (d1 <= d2)
|
||
{
|
||
if (count + 1 < WMPVideoList.Count)
|
||
{
|
||
count++;
|
||
}
|
||
else
|
||
{
|
||
count = 0;
|
||
}
|
||
wpfMediaPlayer.URL = WMPVideoList[count];
|
||
wpfMediaPlayer.Ctlcontrols.play();
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
元素事件
|
||
*/
|
||
private void Media_Loaded(object sender, RoutedEventArgs e)
|
||
{
|
||
(sender as MediaElement).Play();
|
||
}
|
||
|
||
private void Media_MediaEnded(object sender, RoutedEventArgs e)
|
||
{
|
||
// MediaElement需要先停止播放才能再开始播放,
|
||
// 否则会停在最后一帧不动
|
||
if (count + 1 < _VideoList.Count)
|
||
{
|
||
count++;
|
||
}
|
||
else
|
||
{
|
||
count = 0;
|
||
}
|
||
MediaElement _MediaElement = sender as MediaElement;
|
||
_MediaElement.Source = _VideoList[count];
|
||
|
||
//_MediaElement.Stop();
|
||
_MediaElement.Play();
|
||
}
|
||
|
||
private void Media_Unloaded(object sender, RoutedEventArgs e)
|
||
{
|
||
(sender as MediaElement).Stop();
|
||
}
|
||
private void Button_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
var openfiles = new Microsoft.Win32.OpenFileDialog();
|
||
if (openfiles.ShowDialog() == true)
|
||
{
|
||
AdPlay.Source = new Uri(openfiles.FileName);
|
||
AdPlay.LoadedBehavior = MediaState.Manual;
|
||
AdPlay.Stop();
|
||
AdPlay.Play();
|
||
}
|
||
return;
|
||
Button _Button = sender as Button;
|
||
switch (_Button.Name.ToLower())
|
||
{
|
||
case "btnrefurbish":
|
||
OrderOnline.OrderDown("192.168.11.190", "7080", "888888", "042002");
|
||
DataTable _DataTable = OrderOnline.GetSaleBill("888888", "042002", (int)OrderOnline.OrderState.AlreadyPaid);
|
||
Grid_SaleBill.AutoGenerateColumns = false;
|
||
Grid_SaleBill.SelectionMode = DataGridSelectionMode.Single;
|
||
Grid_SaleBill.ItemsSource = _DataTable.DefaultView;
|
||
break;
|
||
case "btn_check":
|
||
if (Grid_SaleBill.SelectedIndex >= 0)
|
||
{
|
||
DataRowView item = Grid_SaleBill.Items[Grid_SaleBill.SelectedIndex] as DataRowView;
|
||
DataRow _DataRow = item.Row;
|
||
try
|
||
{
|
||
byte[] _bData = PrintService.OrderPrint(_DataRow, OrderOnline.GetSaleDetail(_DataRow["SALEBILL_ID"].ToString()));
|
||
SendSocketMsg("192.168.123.100", 9100, 1, _bData);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show(ex.Message);
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
|
||
return;
|
||
List<TicketHead> _TicketHead = new List<TicketHead> { new TicketHead { Shopuser = "0001", Shopbrand = "驿商测试门店", Shopname = "ys", Card = "01", Url = "http://eshangtech.com", Memberid = "22" } };
|
||
List<Ticket> _Ticket = new List<Ticket> { new Ticket { Name = "kele", Money = "0", Num = "1", Price = "0" } };
|
||
List<TicketFoot> _TicketFoot = new List<TicketFoot>
|
||
{
|
||
new TicketFoot
|
||
{
|
||
Bankmoney ="hh:0",
|
||
DecAmmBalance ="11",
|
||
Membermoney ="0",
|
||
DecGroupBuyMoney = "0",
|
||
DecRebeatBalance ="0",
|
||
Counts ="1",
|
||
DecPaidBalance ="11",
|
||
Cashmoney ="11",
|
||
Givechange ="0",
|
||
RechMoney ="0",
|
||
DecWipeMoney = "0",
|
||
DecMemberCoupon = "0"
|
||
}
|
||
};
|
||
string foot = JsonConvert.SerializeObject(_TicketFoot);
|
||
string head = JsonConvert.SerializeObject(_TicketHead);
|
||
string recv = JsonConvert.SerializeObject(_Ticket);
|
||
byte[] data = PrintService.jsonParse(head, recv, foot, "http://eshangtech.com");
|
||
SendSocketMsg("192.168.123.100", 9100, 1, data);
|
||
}
|
||
public void SendSocketMsg(String ip, int port, int times, byte[] data)
|
||
{
|
||
try
|
||
{
|
||
byte[] mData;
|
||
if (times == 1)
|
||
{
|
||
mData = new byte[data.Length];
|
||
Array.Copy(data, 0, mData, 0, data.Length);
|
||
}
|
||
else
|
||
{
|
||
mData = new byte[data.Length * times];
|
||
byte[][] m = new byte[times][];
|
||
for (int i = 0; i < times; i++)
|
||
{
|
||
m[i] = data;
|
||
}
|
||
Array.Copy(PrinterCmdUtils.byteMerger(m), 0, mData, 0, PrinterCmdUtils.byteMerger(m).Length);
|
||
}
|
||
|
||
#region 同步 Socket
|
||
Socket mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||
IPAddress ipAddress = IPAddress.Parse(ip);
|
||
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);
|
||
|
||
mySocket.Connect(ipEndPoint);
|
||
//mySocket.Send(data);
|
||
mySocket.Send(mData);
|
||
mySocket.Close();
|
||
#endregion
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show(ex.ToString());
|
||
//Logger.Trace(ex.Message);
|
||
//Logger.Trace(ex.StackTrace);
|
||
}
|
||
}
|
||
|
||
private void MediaPlayer_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
|
||
{
|
||
AxWMPLib.AxWindowsMediaPlayer _AxWindowsMediaPlayer = sender as AxWMPLib.AxWindowsMediaPlayer;
|
||
if(_AxWindowsMediaPlayer.playState==WMPLib.WMPPlayState.wmppsStopped)
|
||
{
|
||
_AxWindowsMediaPlayer.Ctlcontrols.play();
|
||
}
|
||
}
|
||
}
|
||
}
|