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
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
int count = 0;
List _VideoList = new List();
List WMPVideoList = new List();
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 = new List { new TicketHead { Shopuser = "0001", Shopbrand = "驿商测试门店", Shopname = "ys", Card = "01", Url = "http://eshangtech.com", Memberid = "22" } };
List _Ticket = new List { new Ticket { Name = "kele", Money = "0", Num = "1", Price = "0" } };
List _TicketFoot = new List
{
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();
}
}
}
}