| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using Edge.Core.Parser.BinaryParser.Attributes;
- using System;
- using System.Collections.Generic;
- namespace PetroChinaOnlineWatchPlugin.MessageEntity.Outgoing
- {
- public class AnswerWriteUnsolicitedMessageOut : MessageBase
- {
- //《加油站物联网设备集成规范》消息长度不应大于228字节
- [Format(2, EncodingType.BIN, -9930)]
- public int MessageLength
- {
- get
- {
- int length = 1 + DatabaseAddress.Count;
- foreach (var dt in DataList)
- { length += 2 + dt.DataLength; }
- return length;
- }
- }
- [Format(1, EncodingType.BIN, -9920)]
- public int DatabaseAddressLength { get { return DatabaseAddress.Count; } }
- [EnumerableFormat("%cascade", -9910)]
- public List<byte> DatabaseAddress { get; set; }
- [EnumerableFormat("%cascade", -9900)]
- public List<IfsfMessageDataOut> DataList { get; set; }
- public AnswerWriteUnsolicitedMessageOut(AppConfigV1 appConfig, byte dbAddress, List<IfsfMessageDataOut> dataList)
- {
- RecipientSubnet = appConfig.RemoteSubnet;
- RecipientNode = appConfig.RemoteNode;
- OriginatorSubnet = appConfig.LocalSubnet;
- OriginatorNode = appConfig.LocalNode;
- MessageCode = MessageCode.IFSF_MESSAGE_CODE_APPLICATION;
- MessageType = MessageType.IFSF_MESSAGE_TYPE_UNSOLICITED_WITHOUT_ACK;
- MessageToken = (byte)(new Random().Next(0, 0x1F));
- //ONLINE_MONITOR_DAT 07H
- DatabaseAddress = new List<byte> { 0x07, dbAddress };
- DataList = dataList;
- }
- public AnswerWriteUnsolicitedMessageOut(AppConfigV1 appConfig, byte messageToken, List<byte> dbAddress, List<IfsfMessageDataOut> dataList)
- {
- RecipientSubnet = appConfig.RemoteSubnet;
- RecipientNode = appConfig.RemoteNode;
- OriginatorSubnet = appConfig.LocalSubnet;
- OriginatorNode = appConfig.LocalNode;
- MessageCode = MessageCode.IFSF_MESSAGE_CODE_APPLICATION;
- MessageType = MessageType.IFSF_MESSAGE_TYPE_ANSWER;
- MessageToken = messageToken;
- DatabaseAddress = dbAddress;
- DataList = dataList;
- }
- public override string ToString()
- {
- string dbAddress = string.Empty;
- foreach (byte ad in DatabaseAddress)
- { dbAddress += " " + ad.ToString(); }
- string dtList = string.Empty;
- foreach (var ad in DataList)
- { dtList += " " + ad.ToString(); }
- return $"{MessageLength} {DatabaseAddressLength}{dbAddress} {dtList}";
- }
- }
- }
|