Visitar URL original
Need Deserialization Example · Issue #313 · msgpack/msgpack-cli · GitHub
Skip to content

Need Deserialization Example #313

Description

@benlemond

I am having a problem understanding the syntax of this project. I am trying to deserialize a complex object and things keep getting out of order. I have the code deserializing to the high level "MsgPackMsg" object appropriately. However, the content of "PlcData" is not deserializing appropriately. I am not sure the best practice way of doing this on a nested complex object so an example would be great!!

 [MessagePackEnum]
    public enum MsgPackMsgType
    {
        [MessagePackEnumMember]
        PlcData,
        [MessagePackEnumMember]
        LogData,
    };
    [MessagePackEnum]
    public enum PlcDataMsgType
    {
        [MessagePackEnumMember]
        PlcInput,
        [MessagePackEnumMember]
        PlcOutput
    };
    [MessagePackEnum]
    public enum ZoneStatus
    {
        [MessagePackEnumMember]
        UNKNOWN,
        [MessagePackEnumMember]
        WARNING,
        [MessagePackEnumMember]
        SHUTDOWN,
        [MessagePackEnumMember]
        SAFE
    }    
    public class MsgPackMsg
    {
        [MessagePackMember(0)]
        public UInt64 timestamp;
        [MessagePackMember(1)]
        public string version;
        [MessagePackMember(2)]
        public MsgPackMsgType msg_type;
        [MessagePackMember(3)]
        public PlcData data;
    }	
    public class PlcData
    {
        [MessagePackMember(0)]
        public PlcDataMsgType type;
        [MessagePackMember(1)]
        public PlcInputData inputs;
        [MessagePackMember(2)]
        public PlcOutputData outputs;
    }	
    public class PlcInputData
    {
        [MessagePackMember(0)]
        public List<byte> digIn;
        [MessagePackMember(1)]
        public List<byte> zoneBreach;
        [MessagePackMember(2)]
        public List<int> algIn;
        [MessagePackMember(3)]
        public int proxZoneStat;
    }    
    public class PlcOutputData
    {
        [MessagePackMember(0)]
        public List<byte> digOut;
        [MessagePackMember(1)]
        public List<byte> zoneActivate;
    }  

Activity

  1. benlemond commented on Jan 25, 2019

    @benlemond
    Author

    Current attempt:

    MessagePackObject mpo = MessagePackSerializer.UnpackMessagePackObject(e.ApplicationMessage.Payload);
    MsgPackMsg mpm = MessagePackSerializer.Get<MsgPackMsg>().FromMessagePackObject(mpo);
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions