充电桩管理系统php源码,充电桩通讯(调试工具源码)
【实例简介】
【实例截图】
【核心代码】
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 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 = 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 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)
{
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;
}
}
}
充电桩管理系统php源码,充电桩通讯(调试工具源码)相关推荐
- 防黑运营版在线客服系统源码/多商户机器人/自助注册客服系统源码/im即时通讯聊天系统源码
☑️ 编号:ym213 ☑️ 品牌:thinkPHP ☑️ 语言:php ☑️ 大小:99MB ☑️ 类型:在线客服系统源码 ☑️ 支持:im即时通讯
- 智能电动自行车充电远程管理系统
目前市场上现有的户外普通充电桩只是一个用电计量工具,无法形成一个有效的停放充电管理环境.在受到雨.雪.风.暴晒等天气影响下根本无法使用,并且存在极大的安全隐患.同时公共无限的停放也导致充电位置被闲置车 ...
- 【NRF51822】百度手环开源源码分析--底层通讯部分
一.编写说明 duBand源码中的通讯部分源码较多,但细细阅读发现其分层结构清晰,很值得借鉴.为了深入对duBand通讯源码的学习,并理解通讯分层设计的思想,决定对duBand源码的通讯部分进行分析, ...
- 新能源汽车共享充电桩管理系统源码
随着移动互联网的发展,人们开始以互联网为载体,推动互联网和智能产品的发展.四川邈瀚云致力于物联网技术的研发.目前,主要系统包括:新能源汽车/电瓶车共享充电桩管理系统.智能噪声系统.智能社区门禁系统.智 ...
- 充电桩系统php源码,源码 充电桩程序设计 - 下载 - 搜珍网
压缩包 : e0f671190e843b596bf8d7dfd98914.zip 列表 源码/00/ 源码/00/delay.crf 源码/00/delay.d 源码/00/delay.o 源码/00 ...
- mysql充电桩_充电桩管理系统的设计与开发
龙源期刊网 http://www.qikan.com.cn 充电桩管理系统的设计与开发 作者:周利亚 赵晓君 来源:<科学与信息化> 2017 年第 18 期 摘 要 伴随着计算机与互联网 ...
- 新能源汽车共享充电桩管理系统展示
展示新能源汽车共享充电桩管理系统展示 ●平台首页 平台首页显示每日开户数.相应环比增长.同比增长.项目信息地图导航. ●实时监控 每个站点的地图定位和每个站点的充电桩的实时数据都可以在地图上显示. ● ...
- 充电运营管理系统;充电桩管理系统;充电站管理系统
充电运行管理系统是为满足充电站智能设备管理和运行而设计的,可实现充电设备状态监控.数据查询.订单管理和数据报告功能,支持信用卡.微信等智能支付方式,大大提高充电站运行效率,适用于公交车站.住宅区.办公 ...
- 充电桩动态管理系统java_一种充电桩管理系统及其使用方法
一种充电桩管理系统及其使用方法 [技术领域] [0001]本发明涉及充电粧充电技术领域,尤其涉及一种充电粧管理系统及其使用方法. [背景技术] [0002]随着新能源电动汽车的普及,居民小区安装电动汽 ...
最新文章
- IEEE:2021年的机遇、挑战以及关键的科技趋势
- js iframe是否加载完成,加载完成执行函数
- 项目管理——WBS工作分解法
- linux ssh别的机器,Linux SSH 登录其他机器
- 微信小程序-04-详解介绍.json 配置文件
- 企业千人千面管理模式_零售企业该如何打造“千人千面”的差异化营销?
- VC++开发简单DLL并调用
- python形参实参
- 什么是webpack?
- 服务器主机linux安装mysql_linux服务器上安装mysql
- 命令模式--command模式
- 数据库 - 库表操作 - 存储引擎
- android p 游戏调节器,游戏调节器(Game Tuner)
- es 根据_id查询_京东把 Elasticsearch 用得真牛逼!日均5亿订单查询完美解决
- Mapreduce概念及流程介绍
- 第七届蓝桥杯省赛--四平方和
- python加法运算符_python 入门之 – 基本运算符(七)
- [RTOS]--uCOS、FreeRTOS、RTThread、RTX等RTOS的对比之特点
- 深圳市商务局2022年度中央资金(跨境电子商务企业市场开拓扶持事项)申报指南
- AspectJ自定义注解报错:error Type referred to is not an annotation type:xxx -----IllegalArgumentException