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