小于同志灬 2021-12-14 20:29 采纳率: 0%
浏览 20
已结题

求解答,这些代码是什么意思

我想要知道这些代码的意思
function hmac_sha5(key, data)
{
    if(key.length > 64) key = Coder.sha1(key);
    else key = Bytes.create(key);
        
    var hkey = Bytes.create(64);
    hkey.copy(key);

  var ipad = Bytes.create(64 + data.length);
  var opad = Bytes.create(64 + 20);
  for(var i = 0; i < 64; i++)
  {
    ipad[i] = hkey[i] ^ 0x36;
    opad[i] = hkey[i] ^ 0x5C;
  }
  ipad.sets(data, 64);
  var hash = Coder.sha1(ipad);
  opad.copy(hash, 64);
  return Coder.sha1(opad, 64);
}

function handleMQTTData(data)
{
    //print(JSON.stringify(data));
    switch(data.type)
    {
        case Packet.MQTT.CONNACK:
            Net.send(1, Packet.MQTT.subscribe(pkt_id, topic2, 1));
            print("aaa");
            pkt_id++;
            break;
        case Packet.MQTT.PUBLISH:
            if(data.qos == 1)
                Net.send(1, Packet.MQTT.puback(data.id));
            break;
    }
}
var mqtt = Packet.MQTT.Parser.create(handleMQTTData);

function handleNetEvent(m)
{
    switch(m.event)
    {
        case Net.READY:
            print("csq:", Net.csq());
            print("syncTime:", Net.syncTime());
            var t = Box.getTime();
            print(t.year, t.month, t.day,t.hour, t.minute, t.second);
            Net.connect(1, server, port);
            break;
        case Net.CONN_OK:
            Net.send(1, Packet.MQTT.connect(clientid, 60, 1, username, password));
            Timer.start(1, 20000);
            Timer.start(2, 9000);
            //Timer.start(3, 30000);
            //Timer.start(4, 50000);
            break;
        case Net.CONN_FAIL:
            print("connect failed");
            break;
        case Net.CONN_CLOSE:
            print("connect closed");
            Timer.stop(1);
            Timer.stop(2);
            break;
        case Net.RECV:
            print("mqtt_data:");
            print(m.data.hex());
            mqtt.parse(m.data);
            break;
    }
}
function handleTimerOut(id)
{
    switch(id)
    {
        case 1: //send heartbeat packet
            Net.send(1, Packet.MQTT.ping());
            Timer.start(1, 30000);
            break;
        case 2: //send publish packet
            var sensor_data = {params:0};
            sensor_data.params.CurrentHumidity = 60;
            sensor_data.params.CurrentVoltage = 5;
            sensor_data.params.CurrentTemperature = 28;
            //{CurrentHumidity:10, CurrentVoltage:1, CurrentTemperature:15, color:10}
            var str = JSON.stringify(sensor_data);
            Net.send(1, Packet.MQTT.publish(topic1, Bytes.create(str), 1, pkt_id));
            pkt_id++;
            //Timer.start(2, 11000);
            break;
        case 3: //send unsubscribe packet
            Net.send(1, Packet.MQTT.unsubscribe(pkt_id, topic2));
            pkt_id++;
            break;
        case 4: //send disconnect packet
            Net.send(1, Packet.MQTT.disconnect());
            break;
    }
}

GPIO.set(GPIO.POWER, 1)
Net.init()
while(true)
{
    var m = Event.get();
    switch(m.msg)
    {
        case Event.NET_EVENT:
            handleNetEvent(m);
            break;
        case Event.TIMER_OUT:
            handleTimerOut(m.id);
            break;
    }
}

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-12-16 09:41
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月22日
  • 创建了问题 12月14日

悬赏问题

  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题