服务器流程和数据格式

流程:


1>连接:单片机/手机发第一条消息给服务器

服务器接收消息并解包数据。用数组装起来(如果解包成功,会打印一次数据)

    如果数组长度不是指定长度,为无效指令,这次通信失败

    如果是指定长度的命令,取出第一个元素作为控制命令,进入switch

    依照约定,此时第一条消息为连接消息:1.记录时间戳 2.更新map连接池。3.如果是手机:
            
           判断是不是新手机

                   如果不是,直接更新上线状态。
    
                   否则,加入新手机并更新数据库。

      是单片机,直接更新数据,并向单片机发消息,然后向所有在线手机更新状态

至此第一次通信完毕,这次通信的目的是建立连接,更新map连接池。


2>数据更新(看门狗):在单片机上线后,发送一条消息给服务器,此消息包含状态信息,并启动看门狗,从此每十秒发一个状态消息喂看门狗,超时则视作断联,此时要单片机发现自己断联并重新发送连接消息才会重连。每十个状态包更新一下数据库,

减少数据库操作。(额外1:如果此时正在使用的手机在线, 也向手机更新电量)。

3>手机开锁:手机向服务器发送一条信息

判断单片机是不是正在使用

    如果是,服务器向手机发送反馈

    如果不是,将目标单片机和此手机暂时绑定。调出目标单片机与服务的socket,(注意:可能出现空指针异常的原因,测试数据不当,单片机不在线但是状态却为在线,然后将id发给了手机。)向目标单片机发送开锁指令。
        
        如果单片机开锁成功,向服务器发送已开锁消息,先更新数据库,然后调出手机的socket,(后台打印手机id)向手机发送解锁反馈

        如果失败,向手机返回GG思密达

至此,开锁成功

4>手机关锁:手机向服务器发送一条信息,调出与目标单片机的socket,向目标单片机发送关锁指令。

    如果单片机关锁成功,向服务器发送已关锁消息,先更新数据库,然后调出手机的socket,(后台打印手机id)向手机发送关锁反馈,最后在map删除此连接记录

    如果失败,向手机返回GG思密达

至此,关锁成功。


数据格式:

    单片机:(不需要目标id,其他数据最好都从传感器采集)

        连接指令:01(连接指令头)- 000000(目标id,这里不需要)-sc01(单片机的id)- 电量 - 故障 - Gps - 锁开关 - 1(在线状态)-  0(单片机标志)- 时间 -  光照阈值 - 温度

        数据更新(看门狗):02(连接指令头)- 000000(目标id,这里不需要)-sc01(单片机的id)- 电量 - 故障 - Gps - 锁开关 - 1(在线状态)-  0(单片机标志)- 时间 -  光照阈值 - 温度

        开锁成功:as(连接指令头)- 000000(目标id,这里不需要)-sc01(单片机的id)- 电量 - 故障 - 000000(Gps) - 1(锁开关) - 1(在线状态)-  0(单片机标志)- 时间 -  光照阈值 - 温度

        关锁成功:bs(连接指令头)- 000000(目标id,这里不需要)-sc01(单片机的id)- 电量 - 故障 - 000000(Gps) - 1(锁开关) - 1(在线状态)-  0(单片机标志)- 时间 -  光照阈值 - 温度

        设置故障成功:cs(连接指令头)- 000000(目标id,这里不需要)-sc01(单片机的id)- 电量 - 故障 - 000000(Gps) - 1(锁开关) - 1(在线状态)-  0(单片机标志)- 时间 -  光照阈值 - 温度


    手机:(只需要两个id、在线状态和手机标志,其余可以全部设零)
        连接指令:01(连接指令头)- 000000(目标id,这里不需要)-phone01(手机的id)-  0 - 0 - 0 - 0- 1(在线状态)-  1(手机标志)- 0 - 0 - 0

        开锁指令:03(连接指令头)-目标id -phone01(手机的id)-  0 - 0 - 0 - 0- 1(在线状态)-  1(手机标志)- 0 - 0 - 0

        关锁指令:04(连接指令头)-目标id -phone01(手机的id)-  0 - 0 - 0 - 0- 1(在线状态)-  1(手机标志)- 0 - 0 - 0

        关锁指令:05(连接指令头)-目标id -phone01(手机的id)-  0 - 0 - 0 - 0- 1(在线状态)-  1(手机标志)- 0 - 0 - 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值