在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → 经典串口编程案例源码(5路灯光控制以及投影仪开关)

经典串口编程案例源码(5路灯光控制以及投影仪开关)

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:5.51M
  • 下载次数:49
  • 浏览次数:424
  • 发布时间:2018-08-08
  • 实例类别:C#语言基础
  • 发 布 人:278836065
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 串口 案例 经典

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】


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

    }
}


标签: 串口 案例 经典

实例下载地址

经典串口编程案例源码(5路灯光控制以及投影仪开关)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警