实例介绍
【实例简介】
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.Linq;
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 System.Windows.Interop;
using System.Windows.Threading;
using System.Runtime.InteropServices;
using System.Windows.Media.Composition;
using System.Windows.Media.Animation;
using System.Threading;
using System.Net.Sockets;
using System.Reflection;
using System.Net;
using MyCom;
using System.IO.Ports;
namespace LJKJMedia
{
/// <summary>
/// MediaCtl.xaml 的交互逻辑
/// </summary>
public partial class MediaCtl : Window
{
#region 系统变量
/// <summary>
/// 读写配置文件帮助类
/// </summary>
private ReaderWriterIni rw;
private string m_IsHideTask = "";//是否隐藏任务栏
private string m_IsHideMouse = "";//是否隐藏鼠标
private string m_AppPath = "";
private string m_light1_on = string.Empty;
private string m_light2_on = string.Empty;
private string m_light3_on = string.Empty;
private string m_light4_on = string.Empty;
private string m_light5_on = string.Empty;
private string m_light1_off = string.Empty;
private string m_light2_off = string.Empty;
private string m_light3_off = string.Empty;
private string m_light4_off = string.Empty;
private string m_light5_off = string.Empty;
private string m_projector_on = string.Empty;
private string m_projector_off = string.Empty;
private bool light1OnOff = false;
private bool light2OnOff = false;
private bool light3OnOff = false;
private bool light4OnOff = false;
private bool light5OnOff = false;
private bool lightAllOnOff = false;
private string m_light1_name = string.Empty;
private string m_light2_name = string.Empty;
private string m_light3_name = string.Empty;
private string m_light4_name = string.Empty;
private string m_light5_name = string.Empty;
private string[] projectorCom;
private ComHelper com_Light = new ComHelper();
private ComHelper com_Projector = new ComHelper();
private bool bLight;
private bool bProjector;
UdpClient uc = null; //声明UDPClient
private int m_UdpPort = 19000;
private string m_UdpSvrIP = "";
private Socket m_SvrSocket = null;
private Socket m_ClentSocket = null;
private Thread m_ThreadSocket = null;
private string m_LocalIpAddress = "";
private int m_LocalPort = 19001;
//初始化串口端口
private void InitComm()
{
//com.myEventRec = new ComHelper.com1_DataReceived(com1RedDev_eventRec);
bLight = com_Light.OpenPort_light();
if (!bLight) { MessageBox.Show(com_Light.GetOpenedComLogMsg()); }
bProjector = com_Projector.OpenPort_projector();
if (!bProjector) { MessageBox.Show(com_Projector.GetOpenedComLogMsg()); }
}
#endregion
#region 构造函数
public MediaCtl()
{
InitializeComponent();
}
#endregion
#region 产品化
private const int SW_HIDE = 0; //隐藏任务栏
private const int SW_RESTORE = 9;//显示任务栏
private void HideMouse()
{
cls_HideMouse.ShowCursor(false);
}
private void ShowMouse()
{
cls_HideMouse.ShowCursor(true);
}
private void HideTask()
{
cls_HideTask.ShowWindow(cls_HideTask.FindWindow("Shell_TrayWnd", null), SW_HIDE); //隐藏任务栏
cls_HideTask.ShowWindow(cls_HideTask.FindWindow("Button", null), SW_HIDE); //隐藏开始按钮
}
private void ShowTask()
{
cls_HideTask.ShowWindow(cls_HideTask.FindWindow("Shell_TrayWnd", null), SW_RESTORE); //显示任务栏
cls_HideTask.ShowWindow(cls_HideTask.FindWindow("Button", null), SW_RESTORE); //显示开始按钮
}
#endregion
#region 初始化加载
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
try
{
m_AppPath = AppDomain.CurrentDomain.BaseDirectory;
rw = new ReaderWriterIni(GlobalValue.iniPath);
m_UdpPort = int.Parse(rw.ReaderIni("LJKJSetting", "UdpPort"));//UDP服务端口号
m_UdpSvrIP = rw.ReaderIni("LJKJSetting", "UdpSvrIP");//UDP服务ip地址
m_LocalPort = int.Parse(rw.ReaderIni("LJKJSetting", "LocalPort"));//tcp服务端口号
m_LocalIpAddress = rw.ReaderIni("LJKJSetting", "LocalIpAddress");//tcp服务ip地址
m_IsHideTask = rw.ReaderIni("LJKJSetting", "IsHideTask");
m_IsHideMouse = rw.ReaderIni("LJKJSetting", "IsHideMouse");
m_light1_on = rw.ReaderIni("lightComSetting", "light1_on");
m_light2_on = rw.ReaderIni("lightComSetting", "light2_on");
m_light3_on = rw.ReaderIni("lightComSetting", "light3_on");
m_light4_on = rw.ReaderIni("lightComSetting", "light4_on");
m_light5_on = rw.ReaderIni("lightComSetting", "light5_on");
m_light1_off = rw.ReaderIni("lightComSetting", "light1_off");
m_light2_off = rw.ReaderIni("lightComSetting", "light2_off");
m_light3_off = rw.ReaderIni("lightComSetting", "light3_off");
m_light4_off = rw.ReaderIni("lightComSetting", "light4_off");
m_light5_off = rw.ReaderIni("lightComSetting", "light5_off");
light1.Content = rw.ReaderIni("LJKJSetting", "light1_name");
light2.Content = rw.ReaderIni("LJKJSetting", "light2_name");
light3.Content = rw.ReaderIni("LJKJSetting", "light3_name");
light4.Content = rw.ReaderIni("LJKJSetting", "light4_name");
light5.Content = rw.ReaderIni("LJKJSetting", "light5_name");
lightAll.Content = rw.ReaderIni("LJKJSetting", "lightAll_name");
m_projector_on = rw.ReaderIni("projectorComSetting", "projector_on");
m_projector_off = rw.ReaderIni("projectorComSetting", "projector_off");
if(m_IsHideTask=="1")
HideTask();
if (m_IsHideMouse == "1")
HideMouse();
//InitUdp();
StartListen();
InitComm();//初始化串口端口
}
catch (Exception ex)
{
System.IO.File.AppendAllText("log.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") "-MediaCtl--UserControl_Loaded-" ex.Message "\r\n");
}
}
#endregion
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
ShowMouse();
ShowTask();
}
#region tcp控制
private string GetLoacalIP()
{
string hostName = Dns.GetHostName();
System.Net.IPAddress[] addressList = Dns.GetHostAddresses(hostName);
for (int i = 0; i < addressList.Length; i )
{
if (addressList[i].IsIPv6LinkLocal == false)
{
return addressList[i].ToString();
}
}
return "";
}
private void StartListen()
{
try
{
IPAddress address;
m_SvrSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
if (m_LocalIpAddress == null)
address = IPAddress.Parse(GetLoacalIP());
else
address = IPAddress.Parse(m_LocalIpAddress);
IPEndPoint endpoint = new IPEndPoint(address, m_LocalPort);
m_SvrSocket.Bind(endpoint);
m_SvrSocket.Listen(30);
m_ThreadSocket = new Thread(StartSocket);
m_ThreadSocket.IsBackground = true;
m_ThreadSocket.Start();
}
catch
{
m_SvrSocket.Close();
}
}
private void StartSocket()
{
while (true)
{
try
{
m_ClentSocket = m_SvrSocket.Accept();
if (m_ClentSocket.Connected)
{
byte[] stream = new byte[80];
int iLen = m_ClentSocket.Receive(stream);
string message = System.Text.Encoding.UTF8.GetString(stream, 0, iLen);
RecMsg(message.Trim().ToLower());
}
}
catch
{
m_ClentSocket.Close();
}
}
}
//处理接收的消息
private void RecMsg(string strRec)
{
switch (strRec)
{
case "single|1|light_on":
lightSendCmd(m_light1_on);
break;
case "single|2|light_on":
lightSendCmd(m_light2_on);
break;
case "single|3|light_on":
lightSendCmd(m_light3_on);
break;
case "single|4|light_on":
lightSendCmd(m_light4_on);
break;
case "single|5|light_on":
lightSendCmd(m_light5_on);
break;
case "single|1|light_off":
lightSendCmd(m_light1_off);
break;
case "single|2|light_off":
lightSendCmd(m_light2_off);
break;
case "single|3|light_off":
lightSendCmd(m_light3_off);
break;
case "single|4|light_off":
lightSendCmd(m_light4_off);
break;
case "single|5|light_off":
lightSendCmd(m_light5_off);
break;
case "single|alllight_on"://所有灯光开 关
lightSendCmd(m_light1_on);
Thread.Sleep(100);
lightSendCmd(m_light2_on);
Thread.Sleep(100);
lightSendCmd(m_light3_on);
Thread.Sleep(100);
lightSendCmd(m_light4_on);
Thread.Sleep(100);
lightSendCmd(m_light5_on);
break;
case "single|alllight_off":
lightSendCmd(m_light1_off);
Thread.Sleep(100);
lightSendCmd(m_light2_off);
Thread.Sleep(100);
lightSendCmd(m_light3_off);
Thread.Sleep(100);
lightSendCmd(m_light4_off);
Thread.Sleep(100);
lightSendCmd(m_light5_off);
break;
case "single|projector_on":
projectorCom = m_projector_on.Split(',');
for (int i = 0; i < projectorCom.Length; i )
{
projectorSendCmd(projectorCom[i]);
Thread.Sleep(100);
}
break;
case "single|projector_off":
projectorCom = m_projector_off.Split(',');
for (int i = 0; i < projectorCom.Length; i )
{
projectorSendCmd(projectorCom[i]);
Thread.Sleep(100);
}
break;
default:
break;
}
}
#endregion
#region udp控制
private void InitUdp()
{
//注意此处端口号要与发送方相同
uc = new UdpClient(m_UdpPort);
//开一线程
Thread th = new Thread(new ThreadStart(StartSocketSvr));
//设置为后台
th.IsBackground = true;
th.Start();
}
/// <summary>
/// 获取本机地址列表
/// </summary>
public string GetLocalAddresses()
{
// 获取主机名
string strHostName = Dns.GetHostName();
// 根据主机名进行查找
IPHostEntry iphostentry = Dns.GetHostEntry(strHostName);
string retval = "";
foreach (IPAddress ipaddress in iphostentry.AddressList)
{
if (ipaddress.AddressFamily == AddressFamily.InterNetwork)
{
retval = ipaddress.ToString();
break;
}
}
return retval;
}
/// <summary>
/// 开启UDP服务
/// </summary>
private void StartSocketSvr()
{
if (m_UdpSvrIP == "" || m_UdpSvrIP == null || m_UdpSvrIP == "-1")
{
m_UdpSvrIP = GetLocalAddresses();
}
//声明终结点
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(m_UdpSvrIP), m_UdpPort);
while (true)
{
//获得Form1发送过来的数据包
string text = System.Text.Encoding.UTF8.GetString(uc.Receive(ref iep));
Logs.Log.WriteLog("msg", "接受到的UDP消息--" text);
//Cls_Log.WriteLog("收到消息" text);
//this.Dispatcher.Invoke(new Action(() =>
//{
// lstLog.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") " 收到命令:" text "\r");
//}));
switch (text)
{
case "single|1|light_on":
lightSendCmd(m_light1_on);
break;
case "single|2|light_on":
lightSendCmd(m_light2_on);
break;
case "single|3|light_on":
lightSendCmd(m_light3_on);
break;
case "single|4|light_on":
lightSendCmd(m_light4_on);
break;
case "light5_on":
lightSendCmd(m_light5_on);
break;
case "single|1|light_off":
lightSendCmd(m_light1_off);
break;
case "single|2|light_off":
lightSendCmd(m_light2_off);
break;
case "single|3|light_off":
lightSendCmd(m_light3_off);
break;
case "single|4|light_off":
lightSendCmd(m_light4_off);
break;
case "single|5|light_off":
lightSendCmd(m_light5_off);
break;
case "single|projector_on":
projectorCom = m_projector_on.Split(',');
for (int i = 0; i < projectorCom.Length; i )
{
projectorSendCmd(projectorCom[i]);
Thread.Sleep(100);
}
break;
case "single|projector_off":
projectorCom = m_projector_off.Split(',');
for (int i = 0; i < projectorCom.Length; i )
{
projectorSendCmd(projectorCom[i]);
Thread.Sleep(100);
}
break;
default:
break;
}
}
}
#endregion
private void Button_Click(object sender, RoutedEventArgs e)
{
try
{
switch ((sender as Button).Tag.ToString())
{
case "light1":
if (!light1OnOff)
{
lightSendCmd(m_light1_on);
light1OnOff = true;
}
else
{
lightSendCmd(m_light1_off);
light1OnOff = false;
}
break;
case "light2":
if (!light2OnOff)
{
lightSendCmd(m_light2_on);
light2OnOff = true;
}
else
{
lightSendCmd(m_light2_off);
light2OnOff = false;
}
break;
case "light3":
if (!light3OnOff)
{
lightSendCmd(m_light3_on);
light3OnOff = true;
}
else
{
lightSendCmd(m_light3_off);
light3OnOff = false;
}
break;
case "light4":
if (!light4OnOff)
{
lightSendCmd(m_light4_on);
light4OnOff = true;
}
else
{
lightSendCmd(m_light4_off);
light4OnOff = false;
}
break;
case "light5":
if (!light5OnOff)
{
lightSendCmd(m_light5_on);
light5OnOff = true;
}
else
{
lightSendCmd(m_light5_off);
light5OnOff = false;
}
break;
case "lightAll":
if (!lightAllOnOff)
{
lightSendCmd(m_light1_on);
Thread.Sleep(100);
lightSendCmd(m_light2_on);
Thread.Sleep(100);
lightSendCmd(m_light3_on);
Thread.Sleep(100);
lightSendCmd(m_light4_on);
Thread.Sleep(100);
lightSendCmd(m_light5_on);
lightAllOnOff = true;
}
else
{
lightSendCmd(m_light1_off);
Thread.Sleep(100);
lightSendCmd(m_light2_off);
Thread.Sleep(100);
lightSendCmd(m_light3_off);
Thread.Sleep(100);
lightSendCmd(m_light4_off);
Thread.Sleep(100);
lightSendCmd(m_light5_off);
lightAllOnOff = false;
}
break;
case "projector_on":
projectorCom = m_projector_on.Split(',');
for (int i = 0; i < projectorCom.Length; i )
{
projectorSendCmd(projectorCom[i]);
Thread.Sleep(100);
}
break;
case "projector_off":
projectorCom = m_projector_off.Split(',');
for (int i = 0; i < projectorCom.Length; i )
{
projectorSendCmd(projectorCom[i]);
Thread.Sleep(100);
}
break;
case "return":
this.Close();
break;
default:
break;
}
}
catch (Exception ex)
{
System.IO.File.AppendAllText("log.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") "-MediaCtl--Image_MouseDown-" ex.Message "\r\n");
}
}
/// <summary>
/// light灯发送命令
/// </summary>
public void lightSendCmd(string cmd)
{
try
{
if (cmd == null)
{
Logs.Log.WriteLog("com", "cmd == null");
return;
}
if (cmd == "")
{
Logs.Log.WriteLog("com", "cmd == 空");
return;
}
com_Light.SendMessage(cmd, true);
}
catch (Exception e1)
{
Logs.Log.WriteLog("error", "异常执行 ZmdSendCmd()" e1.Message);
}
}
/// <summary>
/// projector灯发送命令
/// </summary>
public void projectorSendCmd(string cmd)
{
try
{
if (cmd == null)
{
Logs.Log.WriteLog("com", "cmd == null");
return;
}
if (cmd == "")
{
Logs.Log.WriteLog("com", "cmd == 空");
return;
}
com_Projector.SendMessage(cmd, true);
}
catch (Exception e1)
{
Logs.Log.WriteLog("error", "异常执行 ZmdSendCmd()" e1.Message);
}
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论