在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例桌面应用界面/GUI → 充电桩通讯(调试工具源码)

充电桩通讯(调试工具源码)

桌面应用界面/GUI

下载此实例
  • 开发语言:C#
  • 实例大小:0.62M
  • 下载次数:100
  • 浏览次数:1251
  • 发布时间:2019-10-09
  • 实例类别:桌面应用界面/GUI
  • 发 布 人:我最牛来也
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 充电 通讯

实例介绍

【实例简介】

【实例截图】

from clipboard


from clipboard

【核心代码】


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 充电桩测试软件
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label10_Click(object sender, EventArgs e)
        {

        }
        TcpListener listener;
        delegate void SetTextCallBack(TextBox txt, string text);
        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(textBox25.Text), Convert.ToInt32(textBox1.Text));
            socket.Bind(endPoint);
            socket.Listen(10);
            Thread thread = new Thread(Listen);
            thread.IsBackground = true;
            thread.Start(socket);
        }

        public void SetControlTextInfo(string msg)
        {
            TextBox txtMsgInfo = new TextBox();
            txtMsgInfo = textBox2;
            foreach (Control item in this.tabControl1.Controls)
            {
                if(item is TabPage)
                {
                    TabPage tcItem = (TabPage)item;
                    foreach (var tbItem in tcItem.Controls)
                    {
                        if (tbItem is TextBox)
                        {
                            TextBox txtItem = (TextBox)tbItem;
                            if (txtItem.Tag != null)
                            {
                                if (msg.Contains(txtItem.Tag.ToString())&& txtItem.Tag.ToString()!="")
                                {
                                    txtMsgInfo = txtItem;
                                    int startIndex = msg.IndexOf(txtItem.Tag.ToString())   6;
                                    msg = msg.Substring(startIndex, (msg.Length - 6) - startIndex);
                                    StringBuilder sb = new StringBuilder();
                                    string[] strInfo = msg.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                                    for (int i = strInfo.Length - 1; i >= 0; i--)
                                    {
                                        sb.Append(strInfo[i]);
                                    }
                                    msg = sb.ToString();
                                }

                            }
                        }
                    }
                  
                }
                
            }
            if (txtMsgInfo == textBox2)
            {
                SetText(textBox2, socketSend.RemoteEndPoint.ToString()   ":"   Environment.NewLine   msg   Environment.NewLine);//RemoteEndPoint获取socketSend终端的ip地址和端口号信息
                
               // if(txtMsgInfo.Text.Contains(""))
            }
            else
            {
                SetText(txtMsgInfo, msg);
            }
            
        }



        Socket socketSend;
        Dictionary<string, Socket> SocketDic = new Dictionary<string, Socket>();//这个是为了 实现服务器端对多个客户端进行收发消息 名字对应连接
        void Recive(object o)//监听等待进入的客户端
        {
            socketSend = o as Socket;   //线程要用object  然后转换成需要的类型
            while (true)
            {
                byte[] buffer = new byte[1024 * 1024 * 2];
                int r = socketSend.Receive(buffer);
                if (r == 0)
                    break;
                StringBuilder strBuider = new StringBuilder();
                for (int index = 0; index < r; index  )
                {
                    strBuider.Append(((int)buffer[index]).ToString("X2") " ");
                }

                string msg = strBuider.ToString();// Encoding.Default.GetString(buffer, 0, r);
               // textBox26.Text  = Environment.NewLine   msg;
                //  msg = Convert.ToString(msg, 16);

                if(msg.Contains("68 04 43 00 00 00"))
                {
                    SendMsg("68 04 83 00 00 00");
                }
                if (msg.Contains("68 01 02"))
                {
                    SendMsg(msg);
                    //byte[] bt = Encoding.Default.GetBytes(msg);
                    //int count = socketSend.Send(bt);
                    //if (count > 0)
                    //{
                       
                    //   // int jihuoCount = socketSend.Send(bt_JiHuo);
                    //    //if (jihuoCount > 0)
                    //    //{
                    //    //    string strDateTime = TimeToCP56Time2a(DateTime.Now);
                    //    //    byte[] bt_DateTime = Encoding.Default.GetBytes(strDateTime);
                    //    //    int countTime = socketSend.Send(bt_DateTime);
                    //    //}
                    //}

                }
                SetControlTextInfo(msg);
            }
        }
        void Listen(object o) //接受客户端传信息
        {
            try
            {
                Socket socketWatch = o as Socket;
                while (true)
                {
                    socketSend = socketWatch.Accept();
                    SetText(textBox2,socketSend.RemoteEndPoint.ToString()   ":"   "  ok");
                    string name = socketSend.RemoteEndPoint.ToString();
                    
                    SocketDic.Add(name, socketSend);//键值对传值
                    Thread thread = new Thread(Recive);
                    foreach (var item in SocketDic)
                    {
                        if(item.Key.Contains("192.168.1.79"))
                        {

                        }
                    }
                    thread.IsBackground = true;
                    thread.Start(socketSend);
                }
            }
            catch
            {

            }
        }

        public void SendMsg(string SendDate)
        {
            try
            {
                // byte[] buffer = new byte[1024 * 1024 * 2];
                //byte[] buffer = Encoding.UTF8.GetBytes(SendDate);
                byte[] buffer = HexStringToByteArray(SendDate);
                socketSend.Send(buffer);  //文本框转化byte的内容
                ShowThing(DateTime.Now.ToString() "发送:"   SendDate "成功" "\r\n");
               // richTextBox1.Clear();//清空文本框
            }
            catch
            {

            }
        }



        void ShowThing(string ss)
        {
            textBox26.AppendText(ss   "\n");
        }

        public void SetText(TextBox txt, string text)
        {
            
            try
            {
                if (txt.InvokeRequired)
                {
                    SetTextCallBack d = new SetTextCallBack(SetText);
                    this.Invoke(d, new object[] {txt,text });
                }
                else
                {
                    if (txt == textBox2)
                    {
                        txt.Text  = DateTime.Now   ":"   Environment.NewLine   "接收数据:"   Environment.NewLine   text   Environment.NewLine;
                    }
                    else
                    {
                        txt.Clear();
                        txt.Text  = text;
                    }
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //读取格式前面是固定的
        public string ReadTCPInfo = "68 FF FF FF FF 00 00 68 01 0A 00 01 00 00 00 00 00 00 00 ";
        Dictionary<string, string> dic = new Dictionary<string, string>();
        //下面是读取的数据标识
        private readonly string cdzNumber = "01 9F";
        private readonly string zdjqNumber = "02 9F";
        private readonly string cdzModel = "03 9F";
        private readonly string txxy = "04 9F";
        private readonly string APN = "05 9F";
        private readonly string APNuser = "06 9F";
        private readonly string APNPwd = "07 9F";
        private readonly string ServerIp = "08 9F";
        private readonly string ServerPort = "09 9F";
        private readonly string Wangguan = "0A 9F";
        private readonly string LoaclIp = "0B 9F";
        private readonly string LoaclPort = "0C 9F";
        private readonly string zwym = "0D 9F";
        private readonly string MakAddress = "0E 9F";
        private readonly string glyPwd = "20 9F";
        private readonly string eddy = "10 9F";
        private readonly string eddl = "11 9F";
        private readonly string glbl = "12 9F";
        private readonly string glhfbl = "13 9F";
        private readonly string gybl = "14 9F";
        private readonly string gyhfbl = "15 9F";
        private readonly string qybl = "16 9F";
        private readonly string qyhfbl = "17 9F";
        private readonly string mindl = "18 9F";
        private readonly string maxdl = "19 9F";
        private readonly string pdTime = "21 9F";
        private readonly string xtzq = "22 9F";
        private readonly string LEDStartTime = "23 9F";
        private readonly string LEDEndTime = "24 9F";
        private readonly string OutTime = "25 9F";
        private readonly string OutTimeCount = "26 9F";
        private readonly string rjVerson = "30 9F";
        private readonly string yjVerson = "31 9F";
        private readonly string wifiInfo = "32 9F";
        private readonly string cdStationNumber = "33 9F";
        private readonly string jingdu = "34 9F";
        private readonly string weidu = "35 9F";
        private readonly string cdzType = "36 9F";
        private readonly string zkb = "37 9F";
        private readonly string cdfeilv = "38 9F";
        private readonly string jiaoshi = "39 9F";
        private readonly string ykfMonery = "3A 9F";
        private readonly string dbxyzcs = "3B 9F";
        private readonly string jfbflz = "3C 9F";
        private readonly string dzcdkPwd = "3D 9F";
        private readonly string cdzbh = "3E 9F";//于01一样
        private readonly string dbAddress = "3F 9F";
        private readonly string jfbgsdcs = "41 9F";
        private readonly string zlzModeType = "42 9F";
        private readonly string yjzkb = "43 9F";
        private readonly string ewmAddress = "44 9F";

       
        //结束标识
        private readonly string EndFlag = " 16";

        //CRC校验码获取
        public static string CRCCalc(string data)
        {
           // 
            int sum = 0;
            string[] str16 = data.Split(' ');
            for (int i = 0; i < str16.Length; i  )
            {
                sum  = Convert.ToInt32(str16[i], 16);
            }
            int resInt = sum % 256;
            string res16 = Convert.ToString(resInt, 16).ToUpper();

            return " " res16;
        }

       


        public string GetSendMsg(string Code)
        {
            string CRC = CRCCalc(ReadTCPInfo   Code);
            return ReadTCPInfo   Code   CRC   EndFlag;
        }

        public string ss(string ReciveDate)
        {
            string s1 = "";
            return s1;
           // return ip;
        }

        public TCPService service = new TCPService();
        public Dictionary<string, string> dicCodeToNumber = new Dictionary<string, string>();
        private void Form1_Load(object sender, EventArgs e)
        {
            service.funcRecive  = ss;

            Control.CheckForIllegalCrossThreadCalls = false;
            dicCodeToNumber.Add("30 9F", "10 00");
            dicCodeToNumber.Add("31 9F", "12 00");
            dicCodeToNumber.Add("01 9F", "14 00");
            dicCodeToNumber.Add("02 9F", "16 00");
            dicCodeToNumber.Add("36 9F", "18 00");
            dicCodeToNumber.Add("33 9F", "1A 00");
            dicCodeToNumber.Add("37 9F", "1C 00");
            dicCodeToNumber.Add("3A 9F", "1E 00");
            dicCodeToNumber.Add("38 9F", "20 00");
            dicCodeToNumber.Add("3C 9F", "22 00");
            dicCodeToNumber.Add("08 9F", "28 00");
            dicCodeToNumber.Add("09 9F", "2A 00");
            dicCodeToNumber.Add("0B 9F", "2C 00");
            dicCodeToNumber.Add("0D 9F", "2E 00");
            dicCodeToNumber.Add("0A 9F", "30 00");
            dicCodeToNumber.Add("0E 9F", "32 00");
            dicCodeToNumber.Add("0C 9F", "34 00");
            dicCodeToNumber.Add("04 9F", "36 00");
           // dicCodeToNumber.Add("39 9F", "");//校正时间
            dicCodeToNumber.Add("41 9F", "3C 00");
            dicCodeToNumber.Add("10 9F", "3E 00");
            dicCodeToNumber.Add("11 9F", "40 00");
            dicCodeToNumber.Add("12 9F", "42 00");
            dicCodeToNumber.Add("13 9F", "44 00");
            dicCodeToNumber.Add("14 9F", "46 00");
            dicCodeToNumber.Add("15 9F", "48 00");
            dicCodeToNumber.Add("16 9F", "4A 00");
            dicCodeToNumber.Add("17 9F", "4C 00");
            dicCodeToNumber.Add("18 9F", "4E 00");
            dicCodeToNumber.Add("19 9F", "50 00");
            dicCodeToNumber.Add("21 9F", "52 00");
            dicCodeToNumber.Add("34 9F", "54 00");
            dicCodeToNumber.Add("35 9F", "56 00");
            dicCodeToNumber.Add("22 9F", "58 00");
            dicCodeToNumber.Add("23 9F", "5A 00");
            dicCodeToNumber.Add("24 9F", "5C 00");
            dicCodeToNumber.Add("43 9F", "5E 00");
            dicCodeToNumber.Add("25 9F", "60 00");
            dicCodeToNumber.Add("26 9F", "62 00");
            dicCodeToNumber.Add("05 9F", "64 00");
            dicCodeToNumber.Add("06 9F", "66 00");
            dicCodeToNumber.Add("07 9F", "68 00");
            dicCodeToNumber.Add("20 9F", "6A 00");
        }
        private string strFont = "68 22 ";
        private string strEnd = "00 00 6A 01 06 00 00 00 00 ";
        private void button41_Click(object sender, EventArgs e)
        {
            Button btnSend = sender as Button;
            if(btnSend.Tag!=null)
            {
                SendMsg(strFont dicCodeToNumber[btnSend.Tag.ToString()] strEnd  GetSendMsg(btnSend.Tag.ToString()));
            }
           
            
        }
        //写入格式前面是固定的
        public string WriteTCPInfo = "68 FF FF FF FF 00 00 68 08 ";
        private void button11_Click(object sender, EventArgs e)
        {

        }

        public string TimeToCP56Time2a(DateTime dt)
        {
            StringBuilder sb = new StringBuilder();
            int m = dt.Millisecond   1000 * dt.Second;
            sb.Append((m & 0xFF).ToString("X2") " ");
            sb.Append(((m & 0xFF00) >> 8).ToString("X2") " ");
            sb.Append((dt.Minute & 0x00FF).ToString("X2") " ");  // add valid flag and genuine flag   
            sb.Append((dt.Hour & 0x00FF).ToString("X2") " ");    // add summer flag   
            sb.Append(((((int)dt.DayOfWeek % 7) & 0x03) << 5 | (dt.Day & 0x1F)).ToString("X2") " ");
            sb.Append((dt.Month & 0x0F).ToString("X2") " ");
            sb.Append((dt.Year - 2000).ToString("X2") " ");
            return sb.ToString();
        }




        private void button72_Click(object sender, EventArgs e)
        {
            service.StartService("192.168.1.79", 9995);
            
           //string ss= TimeToCP56Time2a(DateTime.Now);
        }

        private void button73_Click(object sender, EventArgs e)
        {
            SendMsg("68 04 07 00 00 00");
            //string strJiHuo = "68 04 07 00 00 00";
            //textBox26.Text  = Environment.NewLine   strJiHuo;
            //byte[] bt_JiHuo = Encoding.Default.GetBytes(strJiHuo);

            //int jihuoCount = socketSend.Send(bt_JiHuo);
        }
        
        private void button78_Click(object sender, EventArgs e)
        {
            string strDateTime = TimeToCP56Time2a(DateTime.Now);
           
            string TimeInfo = "68 12 00 00 02 00 67 01 07 00 00 00 00 "   strDateTime;
            SendMsg(TimeInfo);
            //textBox26.Text  = Environment.NewLine   TimeInfo;
            //byte[] bt_DateTime = Encoding.Default.GetBytes(TimeInfo);
            //int countTime = socketSend.Send(bt_DateTime);
        }

        public static byte[] HexStringToByteArray(string s)
        {
            s = s.Replace(" ", "");
            byte[] buffer = new byte[s.Length / 2];
            for (int i = 0; i < s.Length; i  = 2)
                buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
            return buffer;
        }
    }
}


标签: 充电 通讯

实例下载地址

充电桩通讯(调试工具源码)

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

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

网友评论

发表评论

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

查看所有1条评论>>

小贴士

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

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

关于好例子网

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

;
报警