2025-03-28 09:49:56 +08:00

254 lines
9.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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