Advertisement

充电桩管理系统php源码,充电桩通讯(调试工具源码)

阅读量:

【实例简介】

【实例截图】

95c452a2ce3dd32b61a056aa3a10ee42.png
9f9ea0efdf2e9213e29fe0a6ddea2a58.png

【核心代码】

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变量;该变量属于类NameSpace中的Socket类;其配置参数包括IP地址族的网络、流式连接以及TCP协议。

设置为端点地址为IP地址解析结果和整数转换后的数值

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

在代码中创建一个名为strInfo的string类型数组变量,并将其赋值为msg字符串被空格分割的结果,并排除掉分割后为空的元素。

for (int i = strInfo.Length - 1; i >= 0; i--)

{

sb.Append(strInfo[i]);

}

msg = sb.ToString();

}

}

}

}

}

}

if (txtMsgInfo == textBox2)

{

显示在textBox2中设置字符串"RemoteEndPoint通过解析socketSend终端的信息获取其IP地址和端口号";

// if(txtMsgInfo.Text.Contains(""))

}

else

{

SetText(txtMsgInfo, msg);

}

}

Socket socketSend;

Dictionary SocketDic = new Dictionary();//这个旨在创建一个用于接收和发送消息给多个客户端的字典,并对应连接名称。

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字段后,并通过环境换行符分隔"接收数据"与后续内容。

}

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 dic = new Dictionary();

//下面是读取的数据标识

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 dicCodeToNumber = new Dictionary();

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)

{

CallTo strFont, dicCodeToNumber[btnSend.ToString()], strEnd, CallTo GetSendMsg(btnSend.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;

}

}

}

全部评论 (0)

还没有任何评论哟~