示例#1
0
        public void Test_Deserialize_Rxpk_Version_2()
        {
            var messageType     = MessageType.PUSH_DATA;
            var message         = "{\"rxpk\":[{\"rsig\":[{\"ant\":0,\"chan\":0,\"lsnr\":30.0,\"rssis\":0.0,\"rssic\":-75.0,\"rssisd\":0,\"etime\":\"asd\",\"foff\":0.0,\"ftime\":50000,\"ft2d\":0,\"rfbsb\":0,\"rs2s1\":0}],\"time\":\"2018-03-27T14:15:00.1849262Z\",\"tmms\":0,\"tmst\":1206195300185,\"freq\":868.5,\"chan\":7,\"rfch\":1,\"stat\":1,\"modu\":\"LORA\",\"datr\":\"SF7BW125\",\"codr\":\"4/8\",\"rssi\":112.0,\"lsnr\":1.2,\"size\":14,\"data\":\"Wg3qoMwpJ5T372B9pxLIs0kbvUs=\"},{\"rsig\":[{\"ant\":0,\"chan\":0,\"lsnr\":30.0,\"rssis\":0.0,\"rssic\":-75.0,\"rssisd\":0,\"etime\":\"asd\",\"foff\":0.0,\"ftime\":50000,\"ft2d\":0,\"rfbsb\":0,\"rs2s1\":0}],\"time\":\"2018-03-27T14:15:00.1869312Z\",\"tmms\":0,\"tmst\":1206195300186,\"freq\":868.5,\"chan\":7,\"rfch\":1,\"stat\":1,\"modu\":\"LORA\",\"datr\":\"SF7BW125\",\"codr\":\"4/8\",\"rssi\":112.0,\"lsnr\":1.2,\"size\":14,\"data\":\"Wg3qoMwpJ5T372B9pxLIs0kbvUs=\"}],\"stat\":{\"lmok\":0,\"lmst\":0,\"lmnw\":0,\"lpps\":0,\"temp\":0,\"fpga\":0,\"dsp\":0,\"time\":\"2018-03-27T14:15:00.1869312Z\",\"lati\":46.24,\"long\":3.2523,\"alti\":100,\"rxnb\":0,\"rxok\":0,\"rxfw\":0,\"ackr\":0.0,\"dwnb\":0,\"txnb\":0}}";
            var protocolVersion = 2;

            IPacketPayload payload = null;

            switch (messageType)
            {
            case MessageType.PUSH_DATA: payload = new JsonPacketPayloadSerializer().Deserialize <PushDataPacketPayload>(message, protocolVersion); break;

            case MessageType.PULL_RESP: payload = new JsonPacketPayloadSerializer().Deserialize <PullRespPacketPayload>(message, protocolVersion); break;

            case MessageType.TX_ACK: payload = new JsonPacketPayloadSerializer().Deserialize <TxAckPacketPayload>(message, protocolVersion); break;
            }

            switch (payload)
            {
            case PushDataPacketPayload pushDataPacketPayload: { } break;

            case PullRespPacketPayload pullRespPacketPayload: { } break;

            case TxAckPacketPayload txAckPacketPayload: { } break;
            }
        }
示例#2
0
        public void Test_Deserialize_Txpk_Version_2()
        {
            var messageType     = MessageType.PULL_RESP;
            var message         = "{\"txpk\":{\"tmst\":1207995511768,\"freq\":868.0,\"rfch\":0,\"powe\":14,\"modu\":\"LORA\",\"datr\":\"SF10BW125\",\"codr\":\"4/8\",\"ipol\":true,\"ncrc\":true,\"size\":12,\"data\":\"YAEAAAAgUK8I3BXl\"}}";
            var protocolVersion = 2;

            IPacketPayload payload = null;

            switch (messageType)
            {
            case MessageType.PUSH_DATA: payload = new JsonPacketPayloadSerializer().Deserialize <PushDataPacketPayload>(message, protocolVersion); break;

            case MessageType.PULL_RESP: payload = new JsonPacketPayloadSerializer().Deserialize <PullRespPacketPayload>(message, protocolVersion); break;

            case MessageType.TX_ACK: payload = new JsonPacketPayloadSerializer().Deserialize <TxAckPacketPayload>(message, protocolVersion); break;
            }

            switch (payload)
            {
            case PushDataPacketPayload pushDataPacketPayload: { } break;

            case PullRespPacketPayload pullRespPacketPayload: { } break;

            case TxAckPacketPayload txAckPacketPayload: { } break;
            }
        }
        public byte[] Serialize(IPacketPayload payload)
        {
            if (payload == null)
            {
                throw new ArgumentNullException(nameof(payload));
            }

            var json = JsonConvert.SerializeObject(payload, _serializeSettings);
            var data = Encoding.ASCII.GetBytes(json);

            return(data);
        }