中山做网站的公司哪家好建设系统网站全名

web/2025/10/5 1:25:05/文章来源:
中山做网站的公司哪家好,建设系统网站全名,本网站立足于海外服务器,表白时刻网页制作一 系统简介 智能充电#xff08;新能源电动车#xff0c;电单车#xff09;云管理系统 是一套能够实现对充电站/桩的实时通讯、状态监控、故障检测、运营分析、数据统计、策略设置的智能化多任务管理系统。 二 平台概览 智能充电云管理系统 https://chongdianzhuang.itg…一 系统简介 智能充电新能源电动车电单车云管理系统 是一套能够实现对充电站/桩的实时通讯、状态监控、故障检测、运营分析、数据统计、策略设置的智能化多任务管理系统。 二 平台概览 智能充电云管理系统  https://chongdianzhuang.itgcs.tech/  账号:demo 密码demo123 三 通信协议 HttpSSL协议运维管理平台TCP协议与充电桩通信WebsocketSSL协议与微信小程序实时双向通信 四 支持的充电桩 新能源汽车充电包括直流桩和交流桩云快充平台协议V1.6两轮电单车充电桩企业私有协议等定制开发 五 运行环境 Windows 或 类Linux系统MysqlRedisRabbitMQ等服务 六 通信代码 1 TCP Server与充电桩通信CRC校验 func TCPServer() {//以下是TCP ServerlistenAddrs : []string{GlobalConfig.TCPAddr1,GlobalConfig.TCPAddr2,}for _, addr : range listenAddrs {go func(addr string) {listener, err : net.Listen(tcp, addr)if err ! nil {fmtPrintf([TCP] Failed to listen on %s: %v, addr, err)return}defer listener.Close()fmtPrintf([TCP] Server listening on %s, addr)for {conn, err : listener.Accept()if err ! nil {fmtPrintf([TCP] Error accepting connection: %v, err)continue}go handleConn(conn)}}(addr)} } 1.1 充电桩登录消息定义 // 0x01 MsgLogin 登录消息 type MsgLogin struct {MsgHeader // 继承 MsgHeaderChargePileID [7]byte json:ChargePileID // 充电桩IDChargePileType byte json:ChargePileType // 充电桩类型ChargeShotNum byte json:ChargeShotNum // 充电枪数量ProtocolVersion byte json:ProtocolVersion // 协议版本ProgramVersion [8]byte json:ProgramVersion // 程序版本NetType byte json:NetType // 网络类型SIM [10]byte json:SIM // SIM卡信息NetCarrier byte json:NetCarrier // 网络运营商// CheckSum [2]byte json:CheckSum // 校验和 }// 0x02 MsgLoginRsp 登录响应消息 type MsgLoginRsp struct {MsgHeader // 继承 MsgHeaderChargePileID [7]byte json:ChargePileID // 充电桩IDRet byte json:Ret // 登录结果 } 1.2 充电桩启停充电消息定义 // 0x33 type MsgStartChargeRspToServer struct {MsgHeader // 继承 MsgHeaderTransactionID [16]byte json:TransactionID // 交易流水号ChargePileID [7]byte json:ChargePileID // 桩编号ChargeGunID byte json:ChargeGunID // 枪号Ret byte json:Ret // 启动结果 0x00失败 0x01成功FailCode byte json:FailCode // 失败原因 }// 0x34 type MsgStartChargeToDevice struct {MsgHeader // 继承 MsgHeaderTransactionID [16]byte json:TransactionID // 交易流水号ChargePileID [7]byte json:ChargePileID // 桩编号ChargeGunID byte json:ChargeGunID // 枪号LogicalCardID [8]byte json:LogicalCardID // 显示在屏幕上不足补零,逻辑卡号为卡面印刷卡号PhysicalCardID [8]byte json:PhysicalCardID // 不足补零桩与平台交互需使用的物理卡号Balance [4]byte json:Balance // 账户余额保留到小数点两位 } // 0x35 type MsgStopChargeRspToServer struct {MsgHeader // 继承 MsgHeaderChargePileID [7]byte json:ChargePileID // 桩编号ChargeGunID byte json:ChargeGunID // 枪号Ret byte json:Ret // 启动结果 0x00失败 0x01成功FailCode byte json:FailCode // 0x00 无 0x01 设备编号不匹配 0x02 枪未处于充电状态 0x03 其他 }// 0x36 type MsgStopChargeToDevice struct {MsgHeader // 继承 MsgHeaderChargePileID [7]byte json:ChargePileID // 桩编号ChargeGunID byte json:ChargeGunID // 枪号 }1.3 ModBusCRC校验实现 func ModbusCRC(pData []byte, lenData byte) (byte, byte) {var (crcHi byte 0xFFcrcLo byte 0xFFidx byte)crchi : []byte{0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0,0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41,0x00, 0xc1, 0x81, 0x40, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0,0x80, 0x41, 0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1, 0x81, 0x40,0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1,0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0, 0x80, 0x41,0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1,0x81, 0x40, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41,0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0,0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x00, 0xc1, 0x81, 0x40,0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1,0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1, 0x81, 0x40,0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0,0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x00, 0xc1, 0x81, 0x40,0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0,0x80, 0x41, 0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1, 0x81, 0x40,0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0,0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41,0x00, 0xc1, 0x81, 0x40, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0,0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41,0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0,0x80, 0x41, 0x00, 0xc1, 0x81, 0x40, 0x00, 0xc1, 0x81, 0x40,0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0, 0x80, 0x41, 0x00, 0xc1,0x81, 0x40, 0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41,0x00, 0xc1, 0x81, 0x40, 0x01, 0xc0, 0x80, 0x41, 0x01, 0xc0,0x80, 0x41, 0x00, 0xc1, 0x81, 0x40}crclow : []byte{0x00, 0xc0, 0xc1, 0x01, 0xc3, 0x03, 0x02, 0xc2, 0xc6, 0x06,0x07, 0xc7, 0x05, 0xc5, 0xc4, 0x04, 0xcc, 0x0c, 0x0d, 0xcd,0x0f, 0xcf, 0xce, 0x0e, 0x0a, 0xca, 0xcb, 0x0b, 0xc9, 0x09,0x08, 0xc8, 0xd8, 0x18, 0x19, 0xd9, 0x1b, 0xdb, 0xda, 0x1a,0x1e, 0xde, 0xdf, 0x1f, 0xdd, 0x1d, 0x1c, 0xdc, 0x14, 0xd4,0xd5, 0x15, 0xd7, 0x17, 0x16, 0xd6, 0xd2, 0x12, 0x13, 0xd3,0x11, 0xd1, 0xd0, 0x10, 0xf0, 0x30, 0x31, 0xf1, 0x33, 0xf3,0xf2, 0x32, 0x36, 0xf6, 0xf7, 0x37, 0xf5, 0x35, 0x34, 0xf4,0x3c, 0xfc, 0xfd, 0x3d, 0xff, 0x3f, 0x3e, 0xfe, 0xfa, 0x3a,0x3b, 0xfb, 0x39, 0xf9, 0xf8, 0x38, 0x28, 0xe8, 0xe9, 0x29,0xeb, 0x2b, 0x2a, 0xea, 0xee, 0x2e, 0x2f, 0xef, 0x2d, 0xed,0xec, 0x2c, 0xe4, 0x24, 0x25, 0xe5, 0x27, 0xe7, 0xe6, 0x26,0x22, 0xe2, 0xe3, 0x23, 0xe1, 0x21, 0x20, 0xe0, 0xa0, 0x60,0x61, 0xa1, 0x63, 0xa3, 0xa2, 0x62, 0x66, 0xa6, 0xa7, 0x67,0xa5, 0x65, 0x64, 0xa4, 0x6c, 0xac, 0xad, 0x6d, 0xaf, 0x6f,0x6e, 0xae, 0xaa, 0x6a, 0x6b, 0xab, 0x69, 0xa9, 0xa8, 0x68,0x78, 0xb8, 0xb9, 0x79, 0xbb, 0x7b, 0x7a, 0xba, 0xbe, 0x7e,0x7f, 0xbf, 0x7d, 0xbd, 0xbc, 0x7c, 0xb4, 0x74, 0x75, 0xb5,0x77, 0xb7, 0xb6, 0x76, 0x72, 0xb2, 0xb3, 0x73, 0xb1, 0x71,0x70, 0xb0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9c, 0x5c,0x5d, 0x9d, 0x5f, 0x9f, 0x9e, 0x5e, 0x5a, 0x9a, 0x9b, 0x5b,0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4b, 0x8b,0x8a, 0x4a, 0x4e, 0x8e, 0x8f, 0x4f, 0x8d, 0x4d, 0x4c, 0x8c,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,0x43, 0x83, 0x41, 0x81, 0x80, 0x40}for ; lenData 0; lenData-- {idx crcHi ^ pData[0]pData pData[1:]crcHi crcLo ^ crchi[idx]crcLo crclow[idx]}// return uint16(crcHi)8 | uint16(crcLo)return crcHi, crcLo } 2 Websocket Server SSL证书提供小程序端通信服务 func WssServer() {http.HandleFunc(/websocket, handleClient)fmtPrintf([WebSocket] Server listening on %s, GlobalConfig.WebSocketAddr)fmtPrintf([WebSocket] Cert: %s, Key: %s , GlobalConfig.ProtocolCert, GlobalConfig.ProtocolPrivateKey)err : http.ListenAndServeTLS(GlobalConfig.WebSocketAddr, GlobalConfig.ProtocolCert, GlobalConfig.ProtocolPrivateKey, nil)if err ! nil {fmtPrintf(WebSocket server err:%v, err)}go wsClientsKeepalive() } 3 Websocket Client 小程序端含断线重连保证客户端一个始终一个连接 // utils/webSocketManager.js import util from util.js; const webSocketManager (() {let socket;let reconnectTimer; // 用于存储定时器ID用于重连const MAX_RECONNECT_TIMES 10; // 最大重连次数const RECONNECT_INTERVAL 3000; // 重连间隔时间单位毫秒const initWebSocket (url) {util.log(WebSocket【initWebSocket】 连接:, url);if (socket socket.readyState 1) {util.log(WebSocket【initWebSocket】已连接无需重新初始化 );return;}socket wx.connectSocket({ url: url });socket.onOpen(() {util.log(WebSocket 【onOpen】);// 连接成功后发送loginwx.getStorage({key: openid,success(res) {if(res.data null) {util.log(initWebSocket close socket openid null )close()}let dataObj { cmd: login, src: wx,dst: wx,uid: res.data, msg: null, }; send(dataObj);},fail (res) { util.log(initWebSocket close socket wx.getStorage err: , res)close()},})});socket.onMessage((res) {util.log(WebSocket 【onMessage】:, res.data);// 在这里处理接收到的消息var obj JSON.parse(res.data)// if (obj.cmd wx_requestPayment){// var msg JSON.parse(obj.msg)// wx.requestPayment({// timeStamp: msg.timeStamp,// nonceStr: msg.nonceStr,// package: msg.package,// signType: msg.signType,// paySign: msg.paySign,// success:function(res){// util.log(requestPayment ok)// },// fail:function(res){// util.log(requestPayment fail,res)// }// })// }});socket.onError((err) {// 这里可以处理错误情况例如关闭socketutil.log(WebSocket 【onError】连接已已出错,err);});socket.onClose(() {// 这里可以处理错误情况例如关闭socketutil.log(WebSocket 【onClose】连接已关闭尝试重连...);// 当连接关闭时也尝试重连if (!reconnectTimer socket.readyState ! 1) {reconnectTimer setInterval(() {if (socket.readyState ! 1) {initWebSocket(url);} else {clearInterval(reconnectTimer);reconnectTimer null;}}, RECONNECT_INTERVAL);}});};const send (data) {if (socket socket.readyState 1) {var messageStr JSON.stringify(data);util.log(WebSocket 【send】:, messageStr);socket.send({data: messageStr});} else {util.warn(WebSocket未连接无法发送消息);}};const close () {if (socket) {socket.close();// 清除重连定时器if (reconnectTimer) {clearInterval(reconnectTimer);reconnectTimer null;}}};return {initWebSocket,send,close,}; })();export default webSocketManager; 4 HTTPSSL证书服务提供小程端通信服务 func HttpsServer() {// 加载证书和私钥cert, err : tls.LoadX509KeyPair(GlobalConfig.ProtocolCert, GlobalConfig.ProtocolPrivateKey)if err ! nil {fmtPrintf(HttpsServer %v, err)}// 配置TLSconfig : tls.Config{Certificates: []tls.Certificate{cert},}// 创建一个新的ServerMux实例默认情况下http.HandleFunc就是使用这个实例mux : http.NewServeMux()// 注册处理程序// mux.HandleFunc(/, handler)mux.HandleFunc(/wx_notify_url, handle_wx_notify_url)// 监听端口并启动服务器srv : http.Server{Addr: GlobalConfig.HttpsAddr, // 或者使用其他端口但443是HTTPS的标准端口Handler: mux,TLSConfig: config,}fmtPrintf([Https] Server listening on %s, GlobalConfig.HttpsAddr)fmtPrintf([Https] WXNotifyURL: %s, GlobalConfig.WXNotifyURL)if err : srv.ListenAndServeTLS(, ); err ! nil { // 空字符串意味着使用上面定义的config中的证书和私钥log.Fatal(err)} }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站都是需要什么备案 个人网站建设方案书

SPI概述Serial Peripheral interface 通用串行外围设备接口是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高…

icp备案单位网站我也要投放广告

首先在Ubuntu安装宝塔面板 在官网可以找到脚本一键安装 安装GitLab社区版 然后在宝塔面板的“软件商店”里面找到GitLab最新社区版 12.8.1一键安装 安装过程中可能出现以下问题: 1.卡在ruby_block[wait for logrotate service socket] action run 解决办法&…

vps 做网站网站建设便宜不可信

苹果iOS的一大优点就是软件生态,第三方APP都会主动适配新的iOS系统以及手机。虽然说Android的开放性是也是一大优点,但是第三方软件参差不齐的优化适配水平也让安卓的用户非常头疼。不过谷歌每年都在致力于让Android的软件生态更好。根据XDA的报道&#…

公司注册地址可以是家庭地址吗seo网站建站

容器编排工具的比较与选择 Kubernetes 介绍 Kubernetes,是目前最流行和功能强大的容器编排平台之一。强调 Kubernetes 的自动化、高可用、扩展性和灵活的特点。讨论 Kubernetes 的主要组件和架构,如 Master 节点、Node 节点、控制器和调度器等。分析 Ku…

网站的流程建设部设计院网站

很多公司老板都会把利润放在第一位,照理说这是没错的,公司要盈利才能继续经营下去。我国有很多针对小微企业的政策,盈利不高的情况下,基本不会去考虑纳税问题,也没有多少税收压力。但是对一些暴利的服务型行业、软件设…

c2c网站功能模块设计自动优化网站建设咨询

推荐原因 1.5MHZ的开关频率,可以使用小电感,1.2A满足多数应用,价格感人,只要0.16元 产品概述 LN3435是一款电流模COT架构同步降压开关稳压器。 输入范围为 2.7V-6.0V,可提供 1.2A 的连续输出电流。 内部集成了低内阻…

香奈儿网站建设策划书怎么做网站的域名解析

3. 深入探究文件 IO 1. Linux 系统如何管理文件1.1 静态文件与inode1.2 文件打开时的状态 2. 返回错误处理与errno2.1 strerror 函数2.2 perror 函数 3. 空洞文件4. O_APPEND 和 O_TRUNC5. 多次打开同一个文件6. 复制文件描述符6.1 dup6.2 dup2 7. 文件共享7.1 同一个进程中多次…

昆山建设信息网站地图 添加到网站

在信息技术飞速发展的今天,企业对软件系统的需求不断增加。然而,如何在保证高质量的前提下快速构建系统成为了一个关键问题。本文将深入探讨低代码(Low-Code)开发与传统代码编程的区别,并探讨如何利用这两种方法快速高…

建设网站前端洛阳网电脑版

Failed to load sql modules into the database cluster 原因 在windows10上安装PostgreSQL时报错:Failed to load sql modules into the database cluster 这是因为在安装时,安装包无法自动创建postgres用户 解决方法 将安装失败的软件删除,并将文件夹也一并删除主动创…

举报企业网站用个人信息备案公司网站功能

转http://www.iteye.com/problems/69457Activity启动后点击一个界面按钮后会开启一个服务(暂定为padService),在padService中会启动一个线程(暂定为Thread-3)发起Socket连接。我们项目中使用mina作为socket通信框架,用过mina的同志们应该熟悉&#xff0c…

零基础学网站建设网络服务商分为哪几类

相关代码gitee自取:C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十一天【通讯录的实现】_高高的胖子的博客-CSDN博客 1 . 为什么存在动态内存分配 学到现在认识的内存开辟方式有两种: 创建变量: int val …

公司网站建设系统淘宝网站的内容建设

1源码共读大家好,我是若川。众所周知。从8月份开始,我组织了源码共读活动,至今已经有5个月了,每周一期,进行到了第18期。每周坚持写源码解读文章,每天坚持答疑解惑,帮助了很多人学会看源码&…

免费网站统计做兼职网站有哪些

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

网站开发人员岗位职责宁夏建设投资集团公司网站

24 双非硕的秋招总结 结果: 运气捡漏去了腾讯 想想自己整个研究生学习过程,还是挺坎坷的,记录一下,也给未来的同学提供一些参考。 研一 我是研一上开始学前端的,应该是21年10月份左右,我们实验室是专门…

公司网址网站最好的优化是什么

在Windows 11上,Android的Windows子系统(WSA)是一个集成,允许你在笔记本电脑或台式机上与Windows应用程序一起运行Android应用程序,在本指南中,我将向你展示入门步骤。官方规定,你只能从亚马逊应用商店安装应用程序,但也可以使用安卓调试桥(ADB)工具侧载安卓应用程序…

网站没有问题但是一直做不上首页松岗网站建设公司

我永远忘记了OSIF插件和功能的 MANIFEST.MF和feature.xml中的依赖项声明的规则是什么。 谷歌搜索经常导致沮丧而不是答案。 所以,因为今天我实际上找到了这些规则的简要列表,所以我想在这里重新发布它们,并进行一些小的修改以帮助阐明。 OSGi…

网站建设课程设计实训心得网站欢迎页模板

AssetBundles 简介 什么是AssetBundles? AssetBundles是Unity中一种用于打包和存储资源(如模型、纹理、声音等)的文件格式。它允许你将游戏或应用程序中的资源以可独立加载的方式打包,使其在运行时动态加载而不是静态内置在应用中。这种动态加载的方式让你能够优化资源使…

网站建设维护问题响应式网站不加载图片

试卷代号:1304 2021年春季学期期末统一考试 管理案例分析 试题 2021年7月 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完…

seo站内优化公司上海网站制作与推广

一、进程Process 拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度;进程切换需要的资源很最大,效率低。 对于操作系统来说,一个任务就是一个进程(Process)&#xff…

支付网站搭建建筑企业网站设计

转自【翻译】NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改。对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢。 NeHe OpenGL第三十课…