云快充workerman Event 主逻辑

使用workerman解析云快充V1.6协议,得到解析后的数据,进行以下逻辑处理不同类型的消息

<?php
// +----------------------------------------------------------------------
// | ITUX.CN [ ITUX.CN软件定制开发 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2014~2023 https://itux.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 此软件并不是自由软件,未经许可不能去掉ITUX相关版权
// +----------------------------------------------------------------------
// | Author: 13103895694 <itholiday@126.com>
// +----------------------------------------------------------------------

namespace addons\gaga\library\cqrs\events;

use addons\gaga\library\cqrs\enums\CqrsEnum;
use addons\gaga\library\cqrs\services\CqrsGatewayService;
use app\admin\model\gaga\Device;
use think\Exception;


/**
 * 主逻辑
 * 主要是处理 onConnect onMessage onClose 三个方法
 * onConnect 和 onClose 如果不需要可以不用实现并删除
 */
class CqrsEvent
{
    /**
     * 当客户端连接时触发
     * 如果业务不需此回调可以删除onConnect
     *
     * @param int $client_id 连接id
     */
    public static function onConnect($client_id)
    {
    }

    /**
     * 当客户端发来消息时触发
     * @param int $client_id 连接id
     * @param mixed $message 具体消息
     */
    public static function onMessage($client_id, $message)
    {
        try {
            $logic = new CqrsGatewayService($client_id, $message);
            extract($message, EXTR_PREFIX_ALL, 'pre');
            switch (strtoupper($pre_package_type)) {
                case CqrsEnum::PACKAGE_01:
                    $logic->loginAuth();
                    break;
                case CqrsEnum::PACKAGE_03:
                    $logic->pong();
                    break;
                case CqrsEnum::PACKAGE_05:
                    $logic->rechargeModelCheck();
                    break;
                case CqrsEnum::PACKAGE_09:
                    $logic->rechargeModel();
                    break;
                case CqrsEnum::PACKAGE_13:
                    $logic->realtimedata();
                    break;
                case CqrsEnum::PACKAGE_15://充电握手
                    break;
                case CqrsEnum::PACKAGE_17://参数配置
                    break;
                case CqrsEnum::PACKAGE_1B://错误报文
                    break;
                case CqrsEnum::PACKAGE_1D://充电阶段BMS中止
                    break;
                case CqrsEnum::PACKAGE_21://充电阶段充电机中止
                    break;
                case CqrsEnum::PACKAGE_23://充电过程BMS需求与充电机输出
                    break;
                case CqrsEnum::PACKAGE_25://充电过程BMS信息
                    break;
                case CqrsEnum::PACKAGE_31://充电桩主动申请启动充电
                    $logic->onlineCardOpenRecharge();
                    break;
                case CqrsEnum::PACKAGE_33:
                    $logic->openRechargeReply();
                    break;
                case CqrsEnum::PACKAGE_35:
                    $logic->closeRechargeReply();
                    break;
                case CqrsEnum::PACKAGE_3B:
                    $logic->closeOrder();//充电结算
                    break;
                case CqrsEnum::PACKAGE_19:
                    $logic->finishOrder();//充电结束
                    break;
                case CqrsEnum::PACKAGE_41:
                    $logic->updateBalanceReply();
                    break;
                case CqrsEnum::PACKAGE_51:
                    $logic->changeDeviceStatusReply();
                    break;
                case CqrsEnum::PACKAGE_55:
                    $logic->timesynReply();
                    break;
                case CqrsEnum::PACKAGE_57:
                    $logic->updateChargeModelReply();
                    break;
                case CqrsEnum::PACKAGE_91:
                    $logic->restartReply();
                    break;
            }
            $logic = null;
        } catch (Exception $exception) {
            echo $exception->getMessage() . PHP_EOL;
        }
    }

    /**
     * 当用户断开连接时触发
     * @param int $client_id 连接id
     */
    public static function onClose($client_id)
    {
        $device_no = $_SESSION['device_no'];
        if (!empty($device_no)) {
            Device::where('status', Device::$device_online)->where('device_no', $device_no)->update(['status' => Device::$device_offline]);
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
云快 1.5 是一个使用 C 语言编写的快速电算法。该算法利用云计算技术,在电站与电动汽车之间建立实时通信,以最大化电动汽车的电速度。 首先,在电站与电动汽车之间建立通信连接,确保双方之间的数据传输和消息交互的准确性和实时性。同时,通过云端的数据库存储和处理大量的电数据,进行计算和分析。 其次,该算法通过实时监测电动汽车的电池状态和电需求,结合电站的电力供应情况,实现智能调度电功率。根据电动汽车的剩余电量、已电时间、电池类型和电池特性等信息,以及电站的电力供应能力和排队情况,合理分配电功率,提高电效率。 另外,云快 1.5 还分考虑了电动汽车的用户需求和优化策略。通过用户注册、预约电和优先级设置等方式,为用户提供个性化的电服务。在高峰期采取优先级调度策略,优先满足急需电的用户,确保电服务的公平性和高效性。 最后,云快 1.5 除了提高电速度,还考虑了电设备的安全性和稳定性。通过对电设备和电动汽车之间的数据进行校验、防护和备份,确保数据的安全传输。同时,对电设备进行实时监测和故障预警,提前发现和解决问题,保障用户的电安全。 总之,云快 1.5 利用 C 语言编写的快速电算法,通过云计算平台实现实时通信和数据处理,智能调度电功率,提高电效率和安全性,为用户提供个性化的电服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉阳软件yuyangdev_cn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值