// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: singlechip_msg.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Message {

  /// <summary>Holder for reflection information generated from singlechip_msg.proto</summary>
  public static partial class SinglechipMsgReflection {

    #region Descriptor
    /// <summary>File descriptor for singlechip_msg.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static SinglechipMsgReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChRzaW5nbGVjaGlwX21zZy5wcm90bxIHbWVzc2FnZRoSbWVzc2FnZV9iYXNl",
            "LnByb3RvIt8BCgdJbnB1dERpEgsKA0RpMBgBIAIoBRILCgNEaTEYAiACKAUS",
            "CwoDRGkyGAMgAigFEgsKA0RpMxgEIAIoBRILCgNEaTQYBSACKAUSCwoDRGk1",
            "GAYgAigFEgsKA0RpNhgHIAIoBRILCgNEaTcYCCACKAUSCwoDRGk4GAkgAigF",
            "EgsKA0RpORgKIAIoBRIMCgREaTEwGAsgAigFEgwKBERpMTEYDCACKAUSDAoE",
            "RGkxMhgNIAIoBRIMCgREaTEzGA4gAigFEgwKBERpMTQYDyACKAUSDAoERGkx",
            "NRgQIAIoBSJyCghPdXRwdXREbxILCgNEbzAYASACKAUSCwoDRG8xGAIgAigF",
            "EgsKA0RvMhgDIAIoBRILCgNEbzMYBCACKAUSCwoDRG80GAUgAigFEgsKA0Rv",
            "NRgGIAIoBRILCgNEbzYYByACKAUSCwoDRG83GAggAigFIpIBCgx0ZXJtaW5h",
            "bF9tc2cSEgoKVGVybWluYWxJRBgBIAIoBRIZChFEaXNwYXRjaERpcmVjdGlv",
            "bhgCIAIoBRIwCg5Qcm9jZXNzQ29udHJvbBgDIAIoDjIYLm1lc3NhZ2UuUHJv",
            "Y2Vzc19jb250cm9sEiEKB0luUHV0RGkYBCACKAsyEC5tZXNzYWdlLklucHV0",
            "RGkiyAQKD3NpbmdsZWNoaXBfZGF0YRISCgpUZXJtaW5hbElEGAEgAigFEhkK",
            "EURpc3BhdGNoRGlyZWN0aW9uGAIgAigFEi4KDVByb2Nlc3NTdGF0dXMYAyAC",
            "KA4yFy5tZXNzYWdlLlByb2Nlc3Nfc3RhdHVzEiEKB0luUHV0RGkYBCACKAsy",
            "EC5tZXNzYWdlLklucHV0RGkSEQoJUmVzZXRGbGFnGAUgAigFEjAKDlByb2Nl",
            "c3NDb250cm9sGAYgAigOMhgubWVzc2FnZS5Qcm9jZXNzX2NvbnRyb2wSGwoT",
            "SW5zaWRlRXhpc3RlbmNlRmxhZxgHIAIoBRI1ChBPdmVyQm9yZGVyU3RhdHVz",
            "GAggAigOMhsubWVzc2FnZS5PdmVyX2JvcmRlcl9zdGF0dXMSHgoWQ2FySGVp",
            "Z2h0U3RhdHVzQ3VycmVudBgJIAIoBRI6ChZDYXJIZWlnaHRTdGF0dXNQYXNz",
            "aW5nGAogAigOMhoubWVzc2FnZS5DYXJfaGVpZ2h0X3N0YXR1cxIQCghTdG9w",
            "RmxhZxgLIAIoBRI3ChFPdXRzaWRlRG9vclN0YXR1cxgMIAIoDjIcLm1lc3Nh",
            "Z2UuT3V0c2lkZV9kb29yX3N0YXR1cxI5ChJPdXRzaWRlRG9vckNvbnRyb2wY",
            "DSACKA4yHS5tZXNzYWdlLk91dHNpZGVfZG9vcl9jb250cm9sEhoKEkRpc3Bh",
            "dGNoRmluaXNoRmxhZxgOIAIoBRIcChRPdXRzaWRlRXhpc3RlbmNlRmxhZxgP",
            "IAIoBSKVAQoTdGVybWluYWxfc3RhdHVzX21zZxIlCgliYXNlX2luZm8YASAC",
            "KAsyEi5tZXNzYWdlLkJhc2VfaW5mbxIlCglpZF9zdHJ1Y3QYAiACKAsyEi5t",
            "ZXNzYWdlLklkX3N0cnVjdBIwCg5zaW5nbGVjaGlwRGF0YRgDIAIoCzIYLm1l",
            "c3NhZ2Uuc2luZ2xlY2hpcF9kYXRhKuQGCg9Qcm9jZXNzX2NvbnRyb2wSGwoX",
            "UFJPQ0VTU19DT05UUk9MX1VOS05PV04QABIdChlQUk9DRVNTX0NPTlRST0xf",
            "RlVMTF9BVVRPEAESGgoWUFJPQ0VTU19DT05UUk9MX01BTlVBTBACEh4KGlBS",
            "T0NFU1NfQ09OVFJPTF9BVVRPX0NMT1NFEAMSHQoZUFJPQ0VTU19DT05UUk9M",
            "X0FVVE9fT1BFThAEEhwKGFBST0NFU1NfQ09OVFJPTF9UT19SRUFEWRAFEhkK",
            "FVBST0NFU1NfQ09OVFJPTF9SRVNFVBAHEhgKFFBST0NFU1NfQ09OVFJPTF9T",
            "VE9QEAgSGQoVUFJPQ0VTU19DT05UUk9MX0ZBVUxUEAkSGwoXUFJPQ0VTU19D",
            "T05UUk9MX0lOTEVUXzAQChIbChdQUk9DRVNTX0NPTlRST0xfSU5MRVRfMRAL",
            "EhsKF1BST0NFU1NfQ09OVFJPTF9JTkxFVF8yEAwSGwoXUFJPQ0VTU19DT05U",
            "Uk9MX0lOTEVUXzMQDRIbChdQUk9DRVNTX0NPTlRST0xfSU5MRVRfNBAOEhsK",
            "F1BST0NFU1NfQ09OVFJPTF9JTkxFVF81EA8SGwoXUFJPQ0VTU19DT05UUk9M",
            "X0lOTEVUXzYQEBIbChdQUk9DRVNTX0NPTlRST0xfSU5MRVRfNxAREhsKF1BS",
            "T0NFU1NfQ09OVFJPTF9JTkxFVF84EBISGwoXUFJPQ0VTU19DT05UUk9MX0lO",
            "TEVUXzkQExIcChhQUk9DRVNTX0NPTlRST0xfT1VUTEVUXzAQHhIcChhQUk9D",
            "RVNTX0NPTlRST0xfT1VUTEVUXzEQHxIcChhQUk9DRVNTX0NPTlRST0xfT1VU",
            "TEVUXzIQIBIcChhQUk9DRVNTX0NPTlRST0xfT1VUTEVUXzMQIRIcChhQUk9D",
            "RVNTX0NPTlRST0xfT1VUTEVUXzQQIhIcChhQUk9DRVNTX0NPTlRST0xfT1VU",
            "TEVUXzUQIxIcChhQUk9DRVNTX0NPTlRST0xfT1VUTEVUXzYQJBIcChhQUk9D",
            "RVNTX0NPTlRST0xfT1VUTEVUXzcQJRIcChhQUk9DRVNTX0NPTlRST0xfT1VU",
            "TEVUXzgQJhIcChhQUk9DRVNTX0NPTlRST0xfT1VUTEVUXzkQJyrJAQoST3Zl",
            "cl9ib3JkZXJfc3RhdHVzEh4KGk9WRVJfQk9SREVSX1NUQVRVU19VTktOT1dO",
            "EAASHQoZT1ZFUl9CT1JERVJfU1RBVFVTX05PUk1BTBABEhwKGE9WRVJfQk9S",
            "REVSX1NUQVRVU19GUk9OVBACEhsKF09WRVJfQk9SREVSX1NUQVRVU19CQUNL",
            "EAMSGwoXT1ZFUl9CT1JERVJfU1RBVFVTX0xFRlQQBBIcChhPVkVSX0JPUkRF",
            "Ul9TVEFUVVNfUklHSFQQBSrDAQoRQ2FyX2hlaWdodF9zdGF0dXMSHQoZQ0FS",
            "X0hFSUdIVF9TVEFUVVNfVU5LTk9XThAAEhsKF0NBUl9IRUlHSFRfU1RBVFVT",
            "X1NNQUxMEAESHAoYQ0FSX0hFSUdIVF9TVEFUVVNfTUVESVVNEAISGwoXQ0FS",
            "X0hFSUdIVF9TVEFUVVNfTEFSR0UQAxIaChZDQVJfSEVJR0hUX1NUQVRVU19I",
            "VUdFEAQSGwoXQ0FSX0hFSUdIVF9TVEFUVVNfRkFVTFQQBSqvAQoTT3V0c2lk",
            "ZV9kb29yX3N0YXR1cxIfChtPVVRTSURFX0RPT1JfU1RBVFVTX1VOS05PV04Q",
            "ABIcChhPVVRTSURFX0RPT1JfU1RBVFVTX09QRU4QARIdChlPVVRTSURFX0RP",
            "T1JfU1RBVFVTX0NMT1NFEAISGwoXT1VUU0lERV9ET09SX1NUQVRVU19SVU4Q",
            "AxIdChlPVVRTSURFX0RPT1JfU1RBVFVTX0ZBVUxUEAQqdwoUT3V0c2lkZV9k",
            "b29yX2NvbnRyb2wSIAocT1VUU0lERV9ET09SX0NPTlRST0xfVU5LTk9XThAA",
            "Eh0KGU9VVFNJREVfRE9PUl9DT05UUk9MX09QRU4QARIeChpPVVRTSURFX0RP",
            "T1JfQ09OVFJPTF9DTE9TRRACKsYGCg5Qcm9jZXNzX3N0YXR1cxIaChZQUk9D",
            "RVNTX1NUQVRVU19VTktOT1dOEAASHAoYUFJPQ0VTU19TVEFUVVNfRlVMTF9B",
            "VVRPEAESGQoVUFJPQ0VTU19TVEFUVVNfTUFOVUFMEAISHQoZUFJPQ0VTU19T",
            "VEFUVVNfQVVUT19DTE9TRRADEhwKGFBST0NFU1NfU1RBVFVTX0FVVE9fT1BF",
            "ThAEEhsKF1BST0NFU1NfU1RBVFVTX1RPX1JFQURZEAUSGAoUUFJPQ0VTU19T",
            "VEFUVVNfUkVTRVQQBxIXChNQUk9DRVNTX1NUQVRVU19TVE9QEAgSGAoUUFJP",
            "Q0VTU19TVEFUVVNfRkFVTFQQCRIaChZQUk9DRVNTX1NUQVRVU19JTkxFVF8w",
            "EAoSGgoWUFJPQ0VTU19TVEFUVVNfSU5MRVRfMRALEhoKFlBST0NFU1NfU1RB",
            "VFVTX0lOTEVUXzIQDBIaChZQUk9DRVNTX1NUQVRVU19JTkxFVF8zEA0SGgoW",
            "UFJPQ0VTU19TVEFUVVNfSU5MRVRfNBAOEhoKFlBST0NFU1NfU1RBVFVTX0lO",
            "TEVUXzUQDxIaChZQUk9DRVNTX1NUQVRVU19JTkxFVF82EBASGgoWUFJPQ0VT",
            "U19TVEFUVVNfSU5MRVRfNxAREhoKFlBST0NFU1NfU1RBVFVTX0lOTEVUXzgQ",
            "EhIaChZQUk9DRVNTX1NUQVRVU19JTkxFVF85EBMSGwoXUFJPQ0VTU19TVEFU",
            "VVNfT1VUTEVUXzAQHhIbChdQUk9DRVNTX1NUQVRVU19PVVRMRVRfMRAfEhsK",
            "F1BST0NFU1NfU1RBVFVTX09VVExFVF8yECASGwoXUFJPQ0VTU19TVEFUVVNf",
            "T1VUTEVUXzMQIRIbChdQUk9DRVNTX1NUQVRVU19PVVRMRVRfNBAiEhsKF1BS",
            "T0NFU1NfU1RBVFVTX09VVExFVF81ECMSGwoXUFJPQ0VTU19TVEFUVVNfT1VU",
            "TEVUXzYQJBIbChdQUk9DRVNTX1NUQVRVU19PVVRMRVRfNxAlEhsKF1BST0NF",
            "U1NfU1RBVFVTX09VVExFVF84ECYSGwoXUFJPQ0VTU19TVEFUVVNfT1VUTEVU",
            "XzkQJw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Message.MessageBaseReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Message.Process_control), typeof(global::Message.Over_border_status), typeof(global::Message.Car_height_status), typeof(global::Message.Outside_door_status), typeof(global::Message.Outside_door_control), typeof(global::Message.Process_status), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.InputDi), global::Message.InputDi.Parser, new[]{ "Di0", "Di1", "Di2", "Di3", "Di4", "Di5", "Di6", "Di7", "Di8", "Di9", "Di10", "Di11", "Di12", "Di13", "Di14", "Di15" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.OutputDo), global::Message.OutputDo.Parser, new[]{ "Do0", "Do1", "Do2", "Do3", "Do4", "Do5", "Do6", "Do7" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.terminal_msg), global::Message.terminal_msg.Parser, new[]{ "TerminalID", "DispatchDirection", "ProcessControl", "InPutDi" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.singlechip_data), global::Message.singlechip_data.Parser, new[]{ "TerminalID", "DispatchDirection", "ProcessStatus", "InPutDi", "ResetFlag", "ProcessControl", "InsideExistenceFlag", "OverBorderStatus", "CarHeightStatusCurrent", "CarHeightStatusPassing", "StopFlag", "OutsideDoorStatus", "OutsideDoorControl", "DispatchFinishFlag", "OutsideExistenceFlag" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.terminal_status_msg), global::Message.terminal_status_msg.Parser, new[]{ "BaseInfo", "IdStruct", "SinglechipData" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  /// <summary>
  ///流程控制
  /// </summary>
  public enum Process_control {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_UNKNOWN")] Unknown = 0,
    /// <summary>
    ///全自动，
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_FULL_AUTO")] FullAuto = 1,
    /// <summary>
    ///手动
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_MANUAL")] Manual = 2,
    /// <summary>
    ///半自动关门
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_AUTO_CLOSE")] AutoClose = 3,
    /// <summary>
    ///半自动开门
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_AUTO_OPEN")] AutoOpen = 4,
    /// <summary>
    ///切换到待机
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_TO_READY")] ToReady = 5,
    /// <summary>
    ///重启
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_RESET")] Reset = 7,
    /// <summary>
    ///急停
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_STOP")] Stop = 8,
    /// <summary>
    ///故障
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_FAULT")] Fault = 9,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_0")] Inlet0 = 10,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_1")] Inlet1 = 11,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_2")] Inlet2 = 12,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_3")] Inlet3 = 13,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_4")] Inlet4 = 14,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_5")] Inlet5 = 15,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_6")] Inlet6 = 16,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_7")] Inlet7 = 17,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_8")] Inlet8 = 18,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_INLET_9")] Inlet9 = 19,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_0")] Outlet0 = 30,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_1")] Outlet1 = 31,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_2")] Outlet2 = 32,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_3")] Outlet3 = 33,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_4")] Outlet4 = 34,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_5")] Outlet5 = 35,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_6")] Outlet6 = 36,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_7")] Outlet7 = 37,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_8")] Outlet8 = 38,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_CONTROL_OUTLET_9")] Outlet9 = 39,
  }

  /// <summary>
  ///超界状态
  /// </summary>
  public enum Over_border_status {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("OVER_BORDER_STATUS_UNKNOWN")] Unknown = 0,
    /// <summary>
    ///正常
    /// </summary>
    [pbr::OriginalName("OVER_BORDER_STATUS_NORMAL")] Normal = 1,
    /// <summary>
    ///前超界
    /// </summary>
    [pbr::OriginalName("OVER_BORDER_STATUS_FRONT")] Front = 2,
    /// <summary>
    ///后超界
    /// </summary>
    [pbr::OriginalName("OVER_BORDER_STATUS_BACK")] Back = 3,
    /// <summary>
    ///左超界
    /// </summary>
    [pbr::OriginalName("OVER_BORDER_STATUS_LEFT")] Left = 4,
    /// <summary>
    ///右超界
    /// </summary>
    [pbr::OriginalName("OVER_BORDER_STATUS_RIGHT")] Right = 5,
  }

  /// <summary>
  ///车高状态
  /// </summary>
  public enum Car_height_status {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("CAR_HEIGHT_STATUS_UNKNOWN")] Unknown = 0,
    /// <summary>
    ///小车
    /// </summary>
    [pbr::OriginalName("CAR_HEIGHT_STATUS_SMALL")] Small = 1,
    /// <summary>
    ///中车
    /// </summary>
    [pbr::OriginalName("CAR_HEIGHT_STATUS_MEDIUM")] Medium = 2,
    /// <summary>
    ///大车
    /// </summary>
    [pbr::OriginalName("CAR_HEIGHT_STATUS_LARGE")] Large = 3,
    /// <summary>
    ///巨大车
    /// </summary>
    [pbr::OriginalName("CAR_HEIGHT_STATUS_HUGE")] Huge = 4,
    /// <summary>
    ///故障车
    /// </summary>
    [pbr::OriginalName("CAR_HEIGHT_STATUS_FAULT")] Fault = 5,
  }

  /// <summary>
  ///外门的状态
  /// </summary>
  public enum Outside_door_status {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("OUTSIDE_DOOR_STATUS_UNKNOWN")] Unknown = 0,
    /// <summary>
    ///外门开到位
    /// </summary>
    [pbr::OriginalName("OUTSIDE_DOOR_STATUS_OPEN")] Open = 1,
    /// <summary>
    ///外门关到位
    /// </summary>
    [pbr::OriginalName("OUTSIDE_DOOR_STATUS_CLOSE")] Close = 2,
    /// <summary>
    ///外门运行中
    /// </summary>
    [pbr::OriginalName("OUTSIDE_DOOR_STATUS_RUN")] Run = 3,
    /// <summary>
    ///外门故障
    /// </summary>
    [pbr::OriginalName("OUTSIDE_DOOR_STATUS_FAULT")] Fault = 4,
  }

  /// <summary>
  ///外门的控制
  /// </summary>
  public enum Outside_door_control {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("OUTSIDE_DOOR_CONTROL_UNKNOWN")] Unknown = 0,
    /// <summary>
    ///外门开
    /// </summary>
    [pbr::OriginalName("OUTSIDE_DOOR_CONTROL_OPEN")] Open = 1,
    /// <summary>
    ///外门关
    /// </summary>
    [pbr::OriginalName("OUTSIDE_DOOR_CONTROL_CLOSE")] Close = 2,
  }

  /// <summary>
  ///流程状态
  /// </summary>
  public enum Process_status {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_UNKNOWN")] Unknown = 0,
    /// <summary>
    ///全自动，
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_FULL_AUTO")] FullAuto = 1,
    /// <summary>
    ///手动
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_MANUAL")] Manual = 2,
    /// <summary>
    ///半自动关门
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_AUTO_CLOSE")] AutoClose = 3,
    /// <summary>
    ///半自动开门
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_AUTO_OPEN")] AutoOpen = 4,
    /// <summary>
    ///切换到待机
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_TO_READY")] ToReady = 5,
    /// <summary>
    ///重启
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_RESET")] Reset = 7,
    /// <summary>
    ///急停
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_STOP")] Stop = 8,
    /// <summary>
    ///故障
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_FAULT")] Fault = 9,
    /// <summary>
    ///自动模式的步骤
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_0")] Inlet0 = 10,
    /// <summary>
    ///执行开门
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_1")] Inlet1 = 11,
    /// <summary>
    ///等待门开到位
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_2")] Inlet2 = 12,
    /// <summary>
    ///等待汽车进入
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_3")] Inlet3 = 13,
    /// <summary>
    ///停车完成，统计汽车经过门口的车高。
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_4")] Inlet4 = 14,
    /// <summary>
    ///等待终端关门，执行关门
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_5")] Inlet5 = 15,
    /// <summary>
    ///等待门关到位
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_6")] Inlet6 = 16,
    /// <summary>
    ///等待plc调度，或者终端重置
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_7")] Inlet7 = 17,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_8")] Inlet8 = 18,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_INLET_9")] Inlet9 = 19,
    /// <summary>
    ///出口待机，等待终端开门，执行开门
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_0")] Outlet0 = 30,
    /// <summary>
    ///等待门开到位
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_1")] Outlet1 = 31,
    /// <summary>
    ///等待门口的光电产生信号，表示汽车正从车库出去。汽车正在离开中。
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_2")] Outlet2 = 32,
    /// <summary>
    ///汽车离开后，延迟5秒关门，执行关门
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_3")] Outlet3 = 33,
    /// <summary>
    ///等待门关到位
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_4")] Outlet4 = 34,
    /// <summary>
    ///等待plc调度，或者终端重置
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_5")] Outlet5 = 35,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_6")] Outlet6 = 36,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_7")] Outlet7 = 37,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_8")] Outlet8 = 38,
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("PROCESS_STATUS_OUTLET_9")] Outlet9 = 39,
  }

  #endregion

  #region Messages
  /// <summary>
  ///连接口
  /// </summary>
  public sealed partial class InputDi : pb::IMessage<InputDi>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<InputDi> _parser = new pb::MessageParser<InputDi>(() => new InputDi());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<InputDi> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.SinglechipMsgReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InputDi() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InputDi(InputDi other) : this() {
      _hasBits0 = other._hasBits0;
      di0_ = other.di0_;
      di1_ = other.di1_;
      di2_ = other.di2_;
      di3_ = other.di3_;
      di4_ = other.di4_;
      di5_ = other.di5_;
      di6_ = other.di6_;
      di7_ = other.di7_;
      di8_ = other.di8_;
      di9_ = other.di9_;
      di10_ = other.di10_;
      di11_ = other.di11_;
      di12_ = other.di12_;
      di13_ = other.di13_;
      di14_ = other.di14_;
      di15_ = other.di15_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InputDi Clone() {
      return new InputDi(this);
    }

    /// <summary>Field number for the "Di0" field.</summary>
    public const int Di0FieldNumber = 1;
    private readonly static int Di0DefaultValue = 0;

    private int di0_;
    /// <summary>
    ///停车超前光电（0正常，1超界故障）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di0 {
      get { if ((_hasBits0 & 1) != 0) { return di0_; } else { return Di0DefaultValue; } }
      set {
        _hasBits0 |= 1;
        di0_ = value;
      }
    }
    /// <summary>Gets whether the "Di0" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi0 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "Di0" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi0() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "Di1" field.</summary>
    public const int Di1FieldNumber = 2;
    private readonly static int Di1DefaultValue = 0;

    private int di1_;
    /// <summary>
    ///停车超后光电（0正常，1超界故障）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di1 {
      get { if ((_hasBits0 & 2) != 0) { return di1_; } else { return Di1DefaultValue; } }
      set {
        _hasBits0 |= 2;
        di1_ = value;
      }
    }
    /// <summary>Gets whether the "Di1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi1 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "Di1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi1() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "Di2" field.</summary>
    public const int Di2FieldNumber = 3;
    private readonly static int Di2DefaultValue = 0;

    private int di2_;
    /// <summary>
    ///停车超左光电（0正常，1超界故障）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di2 {
      get { if ((_hasBits0 & 4) != 0) { return di2_; } else { return Di2DefaultValue; } }
      set {
        _hasBits0 |= 4;
        di2_ = value;
      }
    }
    /// <summary>Gets whether the "Di2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi2 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "Di2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi2() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "Di3" field.</summary>
    public const int Di3FieldNumber = 4;
    private readonly static int Di3DefaultValue = 0;

    private int di3_;
    /// <summary>
    ///停车超1550光电（0正常，1超界故障）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di3 {
      get { if ((_hasBits0 & 8) != 0) { return di3_; } else { return Di3DefaultValue; } }
      set {
        _hasBits0 |= 8;
        di3_ = value;
      }
    }
    /// <summary>Gets whether the "Di3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi3 {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "Di3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi3() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "Di4" field.</summary>
    public const int Di4FieldNumber = 5;
    private readonly static int Di4DefaultValue = 0;

    private int di4_;
    /// <summary>
    ///2050高度（0默认，1被触发）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di4 {
      get { if ((_hasBits0 & 16) != 0) { return di4_; } else { return Di4DefaultValue; } }
      set {
        _hasBits0 |= 16;
        di4_ = value;
      }
    }
    /// <summary>Gets whether the "Di4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi4 {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "Di4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi4() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "Di5" field.</summary>
    public const int Di5FieldNumber = 6;
    private readonly static int Di5DefaultValue = 0;

    private int di5_;
    /// <summary>
    ///1750高度（0默认，1被触发）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di5 {
      get { if ((_hasBits0 & 32) != 0) { return di5_; } else { return Di5DefaultValue; } }
      set {
        _hasBits0 |= 32;
        di5_ = value;
      }
    }
    /// <summary>Gets whether the "Di5" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi5 {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "Di5" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi5() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "Di6" field.</summary>
    public const int Di6FieldNumber = 7;
    private readonly static int Di6DefaultValue = 0;

    private int di6_;
    /// <summary>
    ///2050高度（0默认，1被触发）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di6 {
      get { if ((_hasBits0 & 64) != 0) { return di6_; } else { return Di6DefaultValue; } }
      set {
        _hasBits0 |= 64;
        di6_ = value;
      }
    }
    /// <summary>Gets whether the "Di6" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi6 {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "Di6" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi6() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "Di7" field.</summary>
    public const int Di7FieldNumber = 8;
    private readonly static int Di7DefaultValue = 0;

    private int di7_;
    /// <summary>
    ///预留
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di7 {
      get { if ((_hasBits0 & 128) != 0) { return di7_; } else { return Di7DefaultValue; } }
      set {
        _hasBits0 |= 128;
        di7_ = value;
      }
    }
    /// <summary>Gets whether the "Di7" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi7 {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "Di7" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi7() {
      _hasBits0 &= ~128;
    }

    /// <summary>Field number for the "Di8" field.</summary>
    public const int Di8FieldNumber = 9;
    private readonly static int Di8DefaultValue = 0;

    private int di8_;
    /// <summary>
    ///停车库门开到位(1表示开到位)	
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di8 {
      get { if ((_hasBits0 & 256) != 0) { return di8_; } else { return Di8DefaultValue; } }
      set {
        _hasBits0 |= 256;
        di8_ = value;
      }
    }
    /// <summary>Gets whether the "Di8" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi8 {
      get { return (_hasBits0 & 256) != 0; }
    }
    /// <summary>Clears the value of the "Di8" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi8() {
      _hasBits0 &= ~256;
    }

    /// <summary>Field number for the "Di9" field.</summary>
    public const int Di9FieldNumber = 10;
    private readonly static int Di9DefaultValue = 0;

    private int di9_;
    /// <summary>
    ///停车库门关到位(1表示关到位)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di9 {
      get { if ((_hasBits0 & 512) != 0) { return di9_; } else { return Di9DefaultValue; } }
      set {
        _hasBits0 |= 512;
        di9_ = value;
      }
    }
    /// <summary>Gets whether the "Di9" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi9 {
      get { return (_hasBits0 & 512) != 0; }
    }
    /// <summary>Clears the value of the "Di9" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi9() {
      _hasBits0 &= ~512;
    }

    /// <summary>Field number for the "Di10" field.</summary>
    public const int Di10FieldNumber = 11;
    private readonly static int Di10DefaultValue = 0;

    private int di10_;
    /// <summary>
    ///预留的门故障位(1表示门故障)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di10 {
      get { if ((_hasBits0 & 1024) != 0) { return di10_; } else { return Di10DefaultValue; } }
      set {
        _hasBits0 |= 1024;
        di10_ = value;
      }
    }
    /// <summary>Gets whether the "Di10" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi10 {
      get { return (_hasBits0 & 1024) != 0; }
    }
    /// <summary>Clears the value of the "Di10" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi10() {
      _hasBits0 &= ~1024;
    }

    /// <summary>Field number for the "Di11" field.</summary>
    public const int Di11FieldNumber = 12;
    private readonly static int Di11DefaultValue = 0;

    private int di11_;
    /// <summary>
    ///调度完成标志位，是否允许终端放下一辆车进入入口（0调度正忙，1调度允许下一辆车）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di11 {
      get { if ((_hasBits0 & 2048) != 0) { return di11_; } else { return Di11DefaultValue; } }
      set {
        _hasBits0 |= 2048;
        di11_ = value;
      }
    }
    /// <summary>Gets whether the "Di11" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi11 {
      get { return (_hasBits0 & 2048) != 0; }
    }
    /// <summary>Clears the value of the "Di11" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi11() {
      _hasBits0 &= ~2048;
    }

    /// <summary>Field number for the "Di12" field.</summary>
    public const int Di12FieldNumber = 13;
    private readonly static int Di12DefaultValue = 0;

    private int di12_;
    /// <summary>
    ///库内光电，判断门内是否有车（0无车，1有车）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di12 {
      get { if ((_hasBits0 & 4096) != 0) { return di12_; } else { return Di12DefaultValue; } }
      set {
        _hasBits0 |= 4096;
        di12_ = value;
      }
    }
    /// <summary>Gets whether the "Di12" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi12 {
      get { return (_hasBits0 & 4096) != 0; }
    }
    /// <summary>Clears the value of the "Di12" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi12() {
      _hasBits0 &= ~4096;
    }

    /// <summary>Field number for the "Di13" field.</summary>
    public const int Di13FieldNumber = 14;
    private readonly static int Di13DefaultValue = 0;

    private int di13_;
    /// <summary>
    ///库外地磁 ，判断门外(0无车，1有车)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di13 {
      get { if ((_hasBits0 & 8192) != 0) { return di13_; } else { return Di13DefaultValue; } }
      set {
        _hasBits0 |= 8192;
        di13_ = value;
      }
    }
    /// <summary>Gets whether the "Di13" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi13 {
      get { return (_hasBits0 & 8192) != 0; }
    }
    /// <summary>Clears the value of the "Di13" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi13() {
      _hasBits0 &= ~8192;
    }

    /// <summary>Field number for the "Di14" field.</summary>
    public const int Di14FieldNumber = 15;
    private readonly static int Di14DefaultValue = 0;

    private int di14_;
    /// <summary>
    ///重启
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di14 {
      get { if ((_hasBits0 & 16384) != 0) { return di14_; } else { return Di14DefaultValue; } }
      set {
        _hasBits0 |= 16384;
        di14_ = value;
      }
    }
    /// <summary>Gets whether the "Di14" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi14 {
      get { return (_hasBits0 & 16384) != 0; }
    }
    /// <summary>Clears the value of the "Di14" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi14() {
      _hasBits0 &= ~16384;
    }

    /// <summary>Field number for the "Di15" field.</summary>
    public const int Di15FieldNumber = 16;
    private readonly static int Di15DefaultValue = 0;

    private int di15_;
    /// <summary>
    ///急停
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Di15 {
      get { if ((_hasBits0 & 32768) != 0) { return di15_; } else { return Di15DefaultValue; } }
      set {
        _hasBits0 |= 32768;
        di15_ = value;
      }
    }
    /// <summary>Gets whether the "Di15" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDi15 {
      get { return (_hasBits0 & 32768) != 0; }
    }
    /// <summary>Clears the value of the "Di15" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDi15() {
      _hasBits0 &= ~32768;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as InputDi);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(InputDi other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Di0 != other.Di0) return false;
      if (Di1 != other.Di1) return false;
      if (Di2 != other.Di2) return false;
      if (Di3 != other.Di3) return false;
      if (Di4 != other.Di4) return false;
      if (Di5 != other.Di5) return false;
      if (Di6 != other.Di6) return false;
      if (Di7 != other.Di7) return false;
      if (Di8 != other.Di8) return false;
      if (Di9 != other.Di9) return false;
      if (Di10 != other.Di10) return false;
      if (Di11 != other.Di11) return false;
      if (Di12 != other.Di12) return false;
      if (Di13 != other.Di13) return false;
      if (Di14 != other.Di14) return false;
      if (Di15 != other.Di15) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (HasDi0) hash ^= Di0.GetHashCode();
      if (HasDi1) hash ^= Di1.GetHashCode();
      if (HasDi2) hash ^= Di2.GetHashCode();
      if (HasDi3) hash ^= Di3.GetHashCode();
      if (HasDi4) hash ^= Di4.GetHashCode();
      if (HasDi5) hash ^= Di5.GetHashCode();
      if (HasDi6) hash ^= Di6.GetHashCode();
      if (HasDi7) hash ^= Di7.GetHashCode();
      if (HasDi8) hash ^= Di8.GetHashCode();
      if (HasDi9) hash ^= Di9.GetHashCode();
      if (HasDi10) hash ^= Di10.GetHashCode();
      if (HasDi11) hash ^= Di11.GetHashCode();
      if (HasDi12) hash ^= Di12.GetHashCode();
      if (HasDi13) hash ^= Di13.GetHashCode();
      if (HasDi14) hash ^= Di14.GetHashCode();
      if (HasDi15) hash ^= Di15.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HasDi0) {
        output.WriteRawTag(8);
        output.WriteInt32(Di0);
      }
      if (HasDi1) {
        output.WriteRawTag(16);
        output.WriteInt32(Di1);
      }
      if (HasDi2) {
        output.WriteRawTag(24);
        output.WriteInt32(Di2);
      }
      if (HasDi3) {
        output.WriteRawTag(32);
        output.WriteInt32(Di3);
      }
      if (HasDi4) {
        output.WriteRawTag(40);
        output.WriteInt32(Di4);
      }
      if (HasDi5) {
        output.WriteRawTag(48);
        output.WriteInt32(Di5);
      }
      if (HasDi6) {
        output.WriteRawTag(56);
        output.WriteInt32(Di6);
      }
      if (HasDi7) {
        output.WriteRawTag(64);
        output.WriteInt32(Di7);
      }
      if (HasDi8) {
        output.WriteRawTag(72);
        output.WriteInt32(Di8);
      }
      if (HasDi9) {
        output.WriteRawTag(80);
        output.WriteInt32(Di9);
      }
      if (HasDi10) {
        output.WriteRawTag(88);
        output.WriteInt32(Di10);
      }
      if (HasDi11) {
        output.WriteRawTag(96);
        output.WriteInt32(Di11);
      }
      if (HasDi12) {
        output.WriteRawTag(104);
        output.WriteInt32(Di12);
      }
      if (HasDi13) {
        output.WriteRawTag(112);
        output.WriteInt32(Di13);
      }
      if (HasDi14) {
        output.WriteRawTag(120);
        output.WriteInt32(Di14);
      }
      if (HasDi15) {
        output.WriteRawTag(128, 1);
        output.WriteInt32(Di15);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HasDi0) {
        output.WriteRawTag(8);
        output.WriteInt32(Di0);
      }
      if (HasDi1) {
        output.WriteRawTag(16);
        output.WriteInt32(Di1);
      }
      if (HasDi2) {
        output.WriteRawTag(24);
        output.WriteInt32(Di2);
      }
      if (HasDi3) {
        output.WriteRawTag(32);
        output.WriteInt32(Di3);
      }
      if (HasDi4) {
        output.WriteRawTag(40);
        output.WriteInt32(Di4);
      }
      if (HasDi5) {
        output.WriteRawTag(48);
        output.WriteInt32(Di5);
      }
      if (HasDi6) {
        output.WriteRawTag(56);
        output.WriteInt32(Di6);
      }
      if (HasDi7) {
        output.WriteRawTag(64);
        output.WriteInt32(Di7);
      }
      if (HasDi8) {
        output.WriteRawTag(72);
        output.WriteInt32(Di8);
      }
      if (HasDi9) {
        output.WriteRawTag(80);
        output.WriteInt32(Di9);
      }
      if (HasDi10) {
        output.WriteRawTag(88);
        output.WriteInt32(Di10);
      }
      if (HasDi11) {
        output.WriteRawTag(96);
        output.WriteInt32(Di11);
      }
      if (HasDi12) {
        output.WriteRawTag(104);
        output.WriteInt32(Di12);
      }
      if (HasDi13) {
        output.WriteRawTag(112);
        output.WriteInt32(Di13);
      }
      if (HasDi14) {
        output.WriteRawTag(120);
        output.WriteInt32(Di14);
      }
      if (HasDi15) {
        output.WriteRawTag(128, 1);
        output.WriteInt32(Di15);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (HasDi0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di0);
      }
      if (HasDi1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di1);
      }
      if (HasDi2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di2);
      }
      if (HasDi3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di3);
      }
      if (HasDi4) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di4);
      }
      if (HasDi5) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di5);
      }
      if (HasDi6) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di6);
      }
      if (HasDi7) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di7);
      }
      if (HasDi8) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di8);
      }
      if (HasDi9) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di9);
      }
      if (HasDi10) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di10);
      }
      if (HasDi11) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di11);
      }
      if (HasDi12) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di12);
      }
      if (HasDi13) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di13);
      }
      if (HasDi14) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Di14);
      }
      if (HasDi15) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(Di15);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(InputDi other) {
      if (other == null) {
        return;
      }
      if (other.HasDi0) {
        Di0 = other.Di0;
      }
      if (other.HasDi1) {
        Di1 = other.Di1;
      }
      if (other.HasDi2) {
        Di2 = other.Di2;
      }
      if (other.HasDi3) {
        Di3 = other.Di3;
      }
      if (other.HasDi4) {
        Di4 = other.Di4;
      }
      if (other.HasDi5) {
        Di5 = other.Di5;
      }
      if (other.HasDi6) {
        Di6 = other.Di6;
      }
      if (other.HasDi7) {
        Di7 = other.Di7;
      }
      if (other.HasDi8) {
        Di8 = other.Di8;
      }
      if (other.HasDi9) {
        Di9 = other.Di9;
      }
      if (other.HasDi10) {
        Di10 = other.Di10;
      }
      if (other.HasDi11) {
        Di11 = other.Di11;
      }
      if (other.HasDi12) {
        Di12 = other.Di12;
      }
      if (other.HasDi13) {
        Di13 = other.Di13;
      }
      if (other.HasDi14) {
        Di14 = other.Di14;
      }
      if (other.HasDi15) {
        Di15 = other.Di15;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Di0 = input.ReadInt32();
            break;
          }
          case 16: {
            Di1 = input.ReadInt32();
            break;
          }
          case 24: {
            Di2 = input.ReadInt32();
            break;
          }
          case 32: {
            Di3 = input.ReadInt32();
            break;
          }
          case 40: {
            Di4 = input.ReadInt32();
            break;
          }
          case 48: {
            Di5 = input.ReadInt32();
            break;
          }
          case 56: {
            Di6 = input.ReadInt32();
            break;
          }
          case 64: {
            Di7 = input.ReadInt32();
            break;
          }
          case 72: {
            Di8 = input.ReadInt32();
            break;
          }
          case 80: {
            Di9 = input.ReadInt32();
            break;
          }
          case 88: {
            Di10 = input.ReadInt32();
            break;
          }
          case 96: {
            Di11 = input.ReadInt32();
            break;
          }
          case 104: {
            Di12 = input.ReadInt32();
            break;
          }
          case 112: {
            Di13 = input.ReadInt32();
            break;
          }
          case 120: {
            Di14 = input.ReadInt32();
            break;
          }
          case 128: {
            Di15 = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Di0 = input.ReadInt32();
            break;
          }
          case 16: {
            Di1 = input.ReadInt32();
            break;
          }
          case 24: {
            Di2 = input.ReadInt32();
            break;
          }
          case 32: {
            Di3 = input.ReadInt32();
            break;
          }
          case 40: {
            Di4 = input.ReadInt32();
            break;
          }
          case 48: {
            Di5 = input.ReadInt32();
            break;
          }
          case 56: {
            Di6 = input.ReadInt32();
            break;
          }
          case 64: {
            Di7 = input.ReadInt32();
            break;
          }
          case 72: {
            Di8 = input.ReadInt32();
            break;
          }
          case 80: {
            Di9 = input.ReadInt32();
            break;
          }
          case 88: {
            Di10 = input.ReadInt32();
            break;
          }
          case 96: {
            Di11 = input.ReadInt32();
            break;
          }
          case 104: {
            Di12 = input.ReadInt32();
            break;
          }
          case 112: {
            Di13 = input.ReadInt32();
            break;
          }
          case 120: {
            Di14 = input.ReadInt32();
            break;
          }
          case 128: {
            Di15 = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///连接口
  /// </summary>
  public sealed partial class OutputDo : pb::IMessage<OutputDo>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OutputDo> _parser = new pb::MessageParser<OutputDo>(() => new OutputDo());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OutputDo> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.SinglechipMsgReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OutputDo() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OutputDo(OutputDo other) : this() {
      _hasBits0 = other._hasBits0;
      do0_ = other.do0_;
      do1_ = other.do1_;
      do2_ = other.do2_;
      do3_ = other.do3_;
      do4_ = other.do4_;
      do5_ = other.do5_;
      do6_ = other.do6_;
      do7_ = other.do7_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OutputDo Clone() {
      return new OutputDo(this);
    }

    /// <summary>Field number for the "Do0" field.</summary>
    public const int Do0FieldNumber = 1;
    private readonly static int Do0DefaultValue = 0;

    private int do0_;
    /// <summary>
    ///外门 开门（1）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Do0 {
      get { if ((_hasBits0 & 1) != 0) { return do0_; } else { return Do0DefaultValue; } }
      set {
        _hasBits0 |= 1;
        do0_ = value;
      }
    }
    /// <summary>Gets whether the "Do0" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDo0 {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "Do0" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDo0() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "Do1" field.</summary>
    public const int Do1FieldNumber = 2;
    private readonly static int Do1DefaultValue = 0;

    private int do1_;
    /// <summary>
    ///外门 关门（1）
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Do1 {
      get { if ((_hasBits0 & 2) != 0) { return do1_; } else { return Do1DefaultValue; } }
      set {
        _hasBits0 |= 2;
        do1_ = value;
      }
    }
    /// <summary>Gets whether the "Do1" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDo1 {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "Do1" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDo1() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "Do2" field.</summary>
    public const int Do2FieldNumber = 3;
    private readonly static int Do2DefaultValue = 0;

    private int do2_;
    /// <summary>
    ///备用
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Do2 {
      get { if ((_hasBits0 & 4) != 0) { return do2_; } else { return Do2DefaultValue; } }
      set {
        _hasBits0 |= 4;
        do2_ = value;
      }
    }
    /// <summary>Gets whether the "Do2" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDo2 {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "Do2" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDo2() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "Do3" field.</summary>
    public const int Do3FieldNumber = 4;
    private readonly static int Do3DefaultValue = 0;

    private int do3_;
    /// <summary>
    ///备用
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Do3 {
      get { if ((_hasBits0 & 8) != 0) { return do3_; } else { return Do3DefaultValue; } }
      set {
        _hasBits0 |= 8;
        do3_ = value;
      }
    }
    /// <summary>Gets whether the "Do3" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDo3 {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "Do3" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDo3() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "Do4" field.</summary>
    public const int Do4FieldNumber = 5;
    private readonly static int Do4DefaultValue = 0;

    private int do4_;
    /// <summary>
    ///备用
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Do4 {
      get { if ((_hasBits0 & 16) != 0) { return do4_; } else { return Do4DefaultValue; } }
      set {
        _hasBits0 |= 16;
        do4_ = value;
      }
    }
    /// <summary>Gets whether the "Do4" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDo4 {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "Do4" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDo4() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "Do5" field.</summary>
    public const int Do5FieldNumber = 6;
    private readonly static int Do5DefaultValue = 0;

    private int do5_;
    /// <summary>
    ///备用
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Do5 {
      get { if ((_hasBits0 & 32) != 0) { return do5_; } else { return Do5DefaultValue; } }
      set {
        _hasBits0 |= 32;
        do5_ = value;
      }
    }
    /// <summary>Gets whether the "Do5" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDo5 {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "Do5" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDo5() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "Do6" field.</summary>
    public const int Do6FieldNumber = 7;
    private readonly static int Do6DefaultValue = 0;

    private int do6_;
    /// <summary>
    ///备用
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Do6 {
      get { if ((_hasBits0 & 64) != 0) { return do6_; } else { return Do6DefaultValue; } }
      set {
        _hasBits0 |= 64;
        do6_ = value;
      }
    }
    /// <summary>Gets whether the "Do6" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDo6 {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "Do6" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDo6() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "Do7" field.</summary>
    public const int Do7FieldNumber = 8;
    private readonly static int Do7DefaultValue = 0;

    private int do7_;
    /// <summary>
    ///备用
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Do7 {
      get { if ((_hasBits0 & 128) != 0) { return do7_; } else { return Do7DefaultValue; } }
      set {
        _hasBits0 |= 128;
        do7_ = value;
      }
    }
    /// <summary>Gets whether the "Do7" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDo7 {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "Do7" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDo7() {
      _hasBits0 &= ~128;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OutputDo);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OutputDo other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Do0 != other.Do0) return false;
      if (Do1 != other.Do1) return false;
      if (Do2 != other.Do2) return false;
      if (Do3 != other.Do3) return false;
      if (Do4 != other.Do4) return false;
      if (Do5 != other.Do5) return false;
      if (Do6 != other.Do6) return false;
      if (Do7 != other.Do7) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (HasDo0) hash ^= Do0.GetHashCode();
      if (HasDo1) hash ^= Do1.GetHashCode();
      if (HasDo2) hash ^= Do2.GetHashCode();
      if (HasDo3) hash ^= Do3.GetHashCode();
      if (HasDo4) hash ^= Do4.GetHashCode();
      if (HasDo5) hash ^= Do5.GetHashCode();
      if (HasDo6) hash ^= Do6.GetHashCode();
      if (HasDo7) hash ^= Do7.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HasDo0) {
        output.WriteRawTag(8);
        output.WriteInt32(Do0);
      }
      if (HasDo1) {
        output.WriteRawTag(16);
        output.WriteInt32(Do1);
      }
      if (HasDo2) {
        output.WriteRawTag(24);
        output.WriteInt32(Do2);
      }
      if (HasDo3) {
        output.WriteRawTag(32);
        output.WriteInt32(Do3);
      }
      if (HasDo4) {
        output.WriteRawTag(40);
        output.WriteInt32(Do4);
      }
      if (HasDo5) {
        output.WriteRawTag(48);
        output.WriteInt32(Do5);
      }
      if (HasDo6) {
        output.WriteRawTag(56);
        output.WriteInt32(Do6);
      }
      if (HasDo7) {
        output.WriteRawTag(64);
        output.WriteInt32(Do7);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HasDo0) {
        output.WriteRawTag(8);
        output.WriteInt32(Do0);
      }
      if (HasDo1) {
        output.WriteRawTag(16);
        output.WriteInt32(Do1);
      }
      if (HasDo2) {
        output.WriteRawTag(24);
        output.WriteInt32(Do2);
      }
      if (HasDo3) {
        output.WriteRawTag(32);
        output.WriteInt32(Do3);
      }
      if (HasDo4) {
        output.WriteRawTag(40);
        output.WriteInt32(Do4);
      }
      if (HasDo5) {
        output.WriteRawTag(48);
        output.WriteInt32(Do5);
      }
      if (HasDo6) {
        output.WriteRawTag(56);
        output.WriteInt32(Do6);
      }
      if (HasDo7) {
        output.WriteRawTag(64);
        output.WriteInt32(Do7);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (HasDo0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Do0);
      }
      if (HasDo1) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Do1);
      }
      if (HasDo2) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Do2);
      }
      if (HasDo3) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Do3);
      }
      if (HasDo4) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Do4);
      }
      if (HasDo5) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Do5);
      }
      if (HasDo6) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Do6);
      }
      if (HasDo7) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Do7);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OutputDo other) {
      if (other == null) {
        return;
      }
      if (other.HasDo0) {
        Do0 = other.Do0;
      }
      if (other.HasDo1) {
        Do1 = other.Do1;
      }
      if (other.HasDo2) {
        Do2 = other.Do2;
      }
      if (other.HasDo3) {
        Do3 = other.Do3;
      }
      if (other.HasDo4) {
        Do4 = other.Do4;
      }
      if (other.HasDo5) {
        Do5 = other.Do5;
      }
      if (other.HasDo6) {
        Do6 = other.Do6;
      }
      if (other.HasDo7) {
        Do7 = other.Do7;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Do0 = input.ReadInt32();
            break;
          }
          case 16: {
            Do1 = input.ReadInt32();
            break;
          }
          case 24: {
            Do2 = input.ReadInt32();
            break;
          }
          case 32: {
            Do3 = input.ReadInt32();
            break;
          }
          case 40: {
            Do4 = input.ReadInt32();
            break;
          }
          case 48: {
            Do5 = input.ReadInt32();
            break;
          }
          case 56: {
            Do6 = input.ReadInt32();
            break;
          }
          case 64: {
            Do7 = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Do0 = input.ReadInt32();
            break;
          }
          case 16: {
            Do1 = input.ReadInt32();
            break;
          }
          case 24: {
            Do2 = input.ReadInt32();
            break;
          }
          case 32: {
            Do3 = input.ReadInt32();
            break;
          }
          case 40: {
            Do4 = input.ReadInt32();
            break;
          }
          case 48: {
            Do5 = input.ReadInt32();
            break;
          }
          case 56: {
            Do6 = input.ReadInt32();
            break;
          }
          case 64: {
            Do7 = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///终端给单片机
  /// </summary>
  public sealed partial class terminal_msg : pb::IMessage<terminal_msg>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<terminal_msg> _parser = new pb::MessageParser<terminal_msg>(() => new terminal_msg());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<terminal_msg> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.SinglechipMsgReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public terminal_msg() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public terminal_msg(terminal_msg other) : this() {
      _hasBits0 = other._hasBits0;
      terminalID_ = other.terminalID_;
      dispatchDirection_ = other.dispatchDirection_;
      processControl_ = other.processControl_;
      inPutDi_ = other.inPutDi_ != null ? other.inPutDi_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public terminal_msg Clone() {
      return new terminal_msg(this);
    }

    /// <summary>Field number for the "TerminalID" field.</summary>
    public const int TerminalIDFieldNumber = 1;
    private readonly static int TerminalIDDefaultValue = 0;

    private int terminalID_;
    /// <summary>
    /// 终端号（单片机号）       
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int TerminalID {
      get { if ((_hasBits0 & 1) != 0) { return terminalID_; } else { return TerminalIDDefaultValue; } }
      set {
        _hasBits0 |= 1;
        terminalID_ = value;
      }
    }
    /// <summary>Gets whether the "TerminalID" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasTerminalID {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "TerminalID" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTerminalID() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "DispatchDirection" field.</summary>
    public const int DispatchDirectionFieldNumber = 2;
    private readonly static int DispatchDirectionDefaultValue = 0;

    private int dispatchDirection_;
    /// <summary>
    /// 方向（1入口，2出口） 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int DispatchDirection {
      get { if ((_hasBits0 & 2) != 0) { return dispatchDirection_; } else { return DispatchDirectionDefaultValue; } }
      set {
        _hasBits0 |= 2;
        dispatchDirection_ = value;
      }
    }
    /// <summary>Gets whether the "DispatchDirection" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDispatchDirection {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "DispatchDirection" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDispatchDirection() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "ProcessControl" field.</summary>
    public const int ProcessControlFieldNumber = 3;
    private readonly static global::Message.Process_control ProcessControlDefaultValue = global::Message.Process_control.Unknown;

    private global::Message.Process_control processControl_;
    /// <summary>
    /// 门控
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Process_control ProcessControl {
      get { if ((_hasBits0 & 4) != 0) { return processControl_; } else { return ProcessControlDefaultValue; } }
      set {
        _hasBits0 |= 4;
        processControl_ = value;
      }
    }
    /// <summary>Gets whether the "ProcessControl" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasProcessControl {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "ProcessControl" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearProcessControl() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "InPutDi" field.</summary>
    public const int InPutDiFieldNumber = 4;
    private global::Message.InputDi inPutDi_;
    /// <summary>
    /// 输入口
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.InputDi InPutDi {
      get { return inPutDi_; }
      set {
        inPutDi_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as terminal_msg);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(terminal_msg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (TerminalID != other.TerminalID) return false;
      if (DispatchDirection != other.DispatchDirection) return false;
      if (ProcessControl != other.ProcessControl) return false;
      if (!object.Equals(InPutDi, other.InPutDi)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (HasTerminalID) hash ^= TerminalID.GetHashCode();
      if (HasDispatchDirection) hash ^= DispatchDirection.GetHashCode();
      if (HasProcessControl) hash ^= ProcessControl.GetHashCode();
      if (inPutDi_ != null) hash ^= InPutDi.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HasTerminalID) {
        output.WriteRawTag(8);
        output.WriteInt32(TerminalID);
      }
      if (HasDispatchDirection) {
        output.WriteRawTag(16);
        output.WriteInt32(DispatchDirection);
      }
      if (HasProcessControl) {
        output.WriteRawTag(24);
        output.WriteEnum((int) ProcessControl);
      }
      if (inPutDi_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(InPutDi);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HasTerminalID) {
        output.WriteRawTag(8);
        output.WriteInt32(TerminalID);
      }
      if (HasDispatchDirection) {
        output.WriteRawTag(16);
        output.WriteInt32(DispatchDirection);
      }
      if (HasProcessControl) {
        output.WriteRawTag(24);
        output.WriteEnum((int) ProcessControl);
      }
      if (inPutDi_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(InPutDi);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (HasTerminalID) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TerminalID);
      }
      if (HasDispatchDirection) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DispatchDirection);
      }
      if (HasProcessControl) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ProcessControl);
      }
      if (inPutDi_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InPutDi);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(terminal_msg other) {
      if (other == null) {
        return;
      }
      if (other.HasTerminalID) {
        TerminalID = other.TerminalID;
      }
      if (other.HasDispatchDirection) {
        DispatchDirection = other.DispatchDirection;
      }
      if (other.HasProcessControl) {
        ProcessControl = other.ProcessControl;
      }
      if (other.inPutDi_ != null) {
        if (inPutDi_ == null) {
          InPutDi = new global::Message.InputDi();
        }
        InPutDi.MergeFrom(other.InPutDi);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            TerminalID = input.ReadInt32();
            break;
          }
          case 16: {
            DispatchDirection = input.ReadInt32();
            break;
          }
          case 24: {
            ProcessControl = (global::Message.Process_control) input.ReadEnum();
            break;
          }
          case 34: {
            if (inPutDi_ == null) {
              InPutDi = new global::Message.InputDi();
            }
            input.ReadMessage(InPutDi);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            TerminalID = input.ReadInt32();
            break;
          }
          case 16: {
            DispatchDirection = input.ReadInt32();
            break;
          }
          case 24: {
            ProcessControl = (global::Message.Process_control) input.ReadEnum();
            break;
          }
          case 34: {
            if (inPutDi_ == null) {
              InPutDi = new global::Message.InputDi();
            }
            input.ReadMessage(InPutDi);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///单片机给终端
  /// </summary>
  public sealed partial class singlechip_data : pb::IMessage<singlechip_data>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<singlechip_data> _parser = new pb::MessageParser<singlechip_data>(() => new singlechip_data());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<singlechip_data> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.SinglechipMsgReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public singlechip_data() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public singlechip_data(singlechip_data other) : this() {
      _hasBits0 = other._hasBits0;
      terminalID_ = other.terminalID_;
      dispatchDirection_ = other.dispatchDirection_;
      processStatus_ = other.processStatus_;
      inPutDi_ = other.inPutDi_ != null ? other.inPutDi_.Clone() : null;
      resetFlag_ = other.resetFlag_;
      processControl_ = other.processControl_;
      insideExistenceFlag_ = other.insideExistenceFlag_;
      overBorderStatus_ = other.overBorderStatus_;
      carHeightStatusCurrent_ = other.carHeightStatusCurrent_;
      carHeightStatusPassing_ = other.carHeightStatusPassing_;
      stopFlag_ = other.stopFlag_;
      outsideDoorStatus_ = other.outsideDoorStatus_;
      outsideDoorControl_ = other.outsideDoorControl_;
      dispatchFinishFlag_ = other.dispatchFinishFlag_;
      outsideExistenceFlag_ = other.outsideExistenceFlag_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public singlechip_data Clone() {
      return new singlechip_data(this);
    }

    /// <summary>Field number for the "TerminalID" field.</summary>
    public const int TerminalIDFieldNumber = 1;
    private readonly static int TerminalIDDefaultValue = 0;

    private int terminalID_;
    /// <summary>
    /// 终端号（单片机号）       
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int TerminalID {
      get { if ((_hasBits0 & 1) != 0) { return terminalID_; } else { return TerminalIDDefaultValue; } }
      set {
        _hasBits0 |= 1;
        terminalID_ = value;
      }
    }
    /// <summary>Gets whether the "TerminalID" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasTerminalID {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "TerminalID" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTerminalID() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "DispatchDirection" field.</summary>
    public const int DispatchDirectionFieldNumber = 2;
    private readonly static int DispatchDirectionDefaultValue = 0;

    private int dispatchDirection_;
    /// <summary>
    /// 方向（1入口，2出口） 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int DispatchDirection {
      get { if ((_hasBits0 & 2) != 0) { return dispatchDirection_; } else { return DispatchDirectionDefaultValue; } }
      set {
        _hasBits0 |= 2;
        dispatchDirection_ = value;
      }
    }
    /// <summary>Gets whether the "DispatchDirection" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDispatchDirection {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "DispatchDirection" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDispatchDirection() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "ProcessStatus" field.</summary>
    public const int ProcessStatusFieldNumber = 3;
    private readonly static global::Message.Process_status ProcessStatusDefaultValue = global::Message.Process_status.Unknown;

    private global::Message.Process_status processStatus_;
    /// <summary>
    ///流程状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Process_status ProcessStatus {
      get { if ((_hasBits0 & 4) != 0) { return processStatus_; } else { return ProcessStatusDefaultValue; } }
      set {
        _hasBits0 |= 4;
        processStatus_ = value;
      }
    }
    /// <summary>Gets whether the "ProcessStatus" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasProcessStatus {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "ProcessStatus" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearProcessStatus() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "InPutDi" field.</summary>
    public const int InPutDiFieldNumber = 4;
    private global::Message.InputDi inPutDi_;
    /// <summary>
    /// 输入口
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.InputDi InPutDi {
      get { return inPutDi_; }
      set {
        inPutDi_ = value;
      }
    }

    /// <summary>Field number for the "ResetFlag" field.</summary>
    public const int ResetFlagFieldNumber = 5;
    private readonly static int ResetFlagDefaultValue = 0;

    private int resetFlag_;
    /// <summary>
    ///重置标志位 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ResetFlag {
      get { if ((_hasBits0 & 8) != 0) { return resetFlag_; } else { return ResetFlagDefaultValue; } }
      set {
        _hasBits0 |= 8;
        resetFlag_ = value;
      }
    }
    /// <summary>Gets whether the "ResetFlag" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasResetFlag {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "ResetFlag" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearResetFlag() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "ProcessControl" field.</summary>
    public const int ProcessControlFieldNumber = 6;
    private readonly static global::Message.Process_control ProcessControlDefaultValue = global::Message.Process_control.Unknown;

    private global::Message.Process_control processControl_;
    /// <summary>
    ///流程控制 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Process_control ProcessControl {
      get { if ((_hasBits0 & 16) != 0) { return processControl_; } else { return ProcessControlDefaultValue; } }
      set {
        _hasBits0 |= 16;
        processControl_ = value;
      }
    }
    /// <summary>Gets whether the "ProcessControl" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasProcessControl {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "ProcessControl" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearProcessControl() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "InsideExistenceFlag" field.</summary>
    public const int InsideExistenceFlagFieldNumber = 7;
    private readonly static int InsideExistenceFlagDefaultValue = 0;

    private int insideExistenceFlag_;
    /// <summary>
    ///内部存在标志
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int InsideExistenceFlag {
      get { if ((_hasBits0 & 32) != 0) { return insideExistenceFlag_; } else { return InsideExistenceFlagDefaultValue; } }
      set {
        _hasBits0 |= 32;
        insideExistenceFlag_ = value;
      }
    }
    /// <summary>Gets whether the "InsideExistenceFlag" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasInsideExistenceFlag {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "InsideExistenceFlag" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearInsideExistenceFlag() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "OverBorderStatus" field.</summary>
    public const int OverBorderStatusFieldNumber = 8;
    private readonly static global::Message.Over_border_status OverBorderStatusDefaultValue = global::Message.Over_border_status.Unknown;

    private global::Message.Over_border_status overBorderStatus_;
    /// <summary>
    ///边界状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Over_border_status OverBorderStatus {
      get { if ((_hasBits0 & 64) != 0) { return overBorderStatus_; } else { return OverBorderStatusDefaultValue; } }
      set {
        _hasBits0 |= 64;
        overBorderStatus_ = value;
      }
    }
    /// <summary>Gets whether the "OverBorderStatus" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasOverBorderStatus {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "OverBorderStatus" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearOverBorderStatus() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "CarHeightStatusCurrent" field.</summary>
    public const int CarHeightStatusCurrentFieldNumber = 9;
    private readonly static int CarHeightStatusCurrentDefaultValue = 0;

    private int carHeightStatusCurrent_;
    /// <summary>
    ///当前车高状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CarHeightStatusCurrent {
      get { if ((_hasBits0 & 128) != 0) { return carHeightStatusCurrent_; } else { return CarHeightStatusCurrentDefaultValue; } }
      set {
        _hasBits0 |= 128;
        carHeightStatusCurrent_ = value;
      }
    }
    /// <summary>Gets whether the "CarHeightStatusCurrent" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCarHeightStatusCurrent {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "CarHeightStatusCurrent" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCarHeightStatusCurrent() {
      _hasBits0 &= ~128;
    }

    /// <summary>Field number for the "CarHeightStatusPassing" field.</summary>
    public const int CarHeightStatusPassingFieldNumber = 10;
    private readonly static global::Message.Car_height_status CarHeightStatusPassingDefaultValue = global::Message.Car_height_status.Unknown;

    private global::Message.Car_height_status carHeightStatusPassing_;
    /// <summary>
    ///车高状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Car_height_status CarHeightStatusPassing {
      get { if ((_hasBits0 & 256) != 0) { return carHeightStatusPassing_; } else { return CarHeightStatusPassingDefaultValue; } }
      set {
        _hasBits0 |= 256;
        carHeightStatusPassing_ = value;
      }
    }
    /// <summary>Gets whether the "CarHeightStatusPassing" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCarHeightStatusPassing {
      get { return (_hasBits0 & 256) != 0; }
    }
    /// <summary>Clears the value of the "CarHeightStatusPassing" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCarHeightStatusPassing() {
      _hasBits0 &= ~256;
    }

    /// <summary>Field number for the "StopFlag" field.</summary>
    public const int StopFlagFieldNumber = 11;
    private readonly static int StopFlagDefaultValue = 0;

    private int stopFlag_;
    /// <summary>
    ///停车标志位
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int StopFlag {
      get { if ((_hasBits0 & 512) != 0) { return stopFlag_; } else { return StopFlagDefaultValue; } }
      set {
        _hasBits0 |= 512;
        stopFlag_ = value;
      }
    }
    /// <summary>Gets whether the "StopFlag" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasStopFlag {
      get { return (_hasBits0 & 512) != 0; }
    }
    /// <summary>Clears the value of the "StopFlag" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearStopFlag() {
      _hasBits0 &= ~512;
    }

    /// <summary>Field number for the "OutsideDoorStatus" field.</summary>
    public const int OutsideDoorStatusFieldNumber = 12;
    private readonly static global::Message.Outside_door_status OutsideDoorStatusDefaultValue = global::Message.Outside_door_status.Unknown;

    private global::Message.Outside_door_status outsideDoorStatus_;
    /// <summary>
    ///外门状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Outside_door_status OutsideDoorStatus {
      get { if ((_hasBits0 & 1024) != 0) { return outsideDoorStatus_; } else { return OutsideDoorStatusDefaultValue; } }
      set {
        _hasBits0 |= 1024;
        outsideDoorStatus_ = value;
      }
    }
    /// <summary>Gets whether the "OutsideDoorStatus" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasOutsideDoorStatus {
      get { return (_hasBits0 & 1024) != 0; }
    }
    /// <summary>Clears the value of the "OutsideDoorStatus" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearOutsideDoorStatus() {
      _hasBits0 &= ~1024;
    }

    /// <summary>Field number for the "OutsideDoorControl" field.</summary>
    public const int OutsideDoorControlFieldNumber = 13;
    private readonly static global::Message.Outside_door_control OutsideDoorControlDefaultValue = global::Message.Outside_door_control.Unknown;

    private global::Message.Outside_door_control outsideDoorControl_;
    /// <summary>
    ///外门控制
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Outside_door_control OutsideDoorControl {
      get { if ((_hasBits0 & 2048) != 0) { return outsideDoorControl_; } else { return OutsideDoorControlDefaultValue; } }
      set {
        _hasBits0 |= 2048;
        outsideDoorControl_ = value;
      }
    }
    /// <summary>Gets whether the "OutsideDoorControl" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasOutsideDoorControl {
      get { return (_hasBits0 & 2048) != 0; }
    }
    /// <summary>Clears the value of the "OutsideDoorControl" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearOutsideDoorControl() {
      _hasBits0 &= ~2048;
    }

    /// <summary>Field number for the "DispatchFinishFlag" field.</summary>
    public const int DispatchFinishFlagFieldNumber = 14;
    private readonly static int DispatchFinishFlagDefaultValue = 0;

    private int dispatchFinishFlag_;
    /// <summary>
    ///调度完成标志
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int DispatchFinishFlag {
      get { if ((_hasBits0 & 4096) != 0) { return dispatchFinishFlag_; } else { return DispatchFinishFlagDefaultValue; } }
      set {
        _hasBits0 |= 4096;
        dispatchFinishFlag_ = value;
      }
    }
    /// <summary>Gets whether the "DispatchFinishFlag" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDispatchFinishFlag {
      get { return (_hasBits0 & 4096) != 0; }
    }
    /// <summary>Clears the value of the "DispatchFinishFlag" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDispatchFinishFlag() {
      _hasBits0 &= ~4096;
    }

    /// <summary>Field number for the "OutsideExistenceFlag" field.</summary>
    public const int OutsideExistenceFlagFieldNumber = 15;
    private readonly static int OutsideExistenceFlagDefaultValue = 0;

    private int outsideExistenceFlag_;
    /// <summary>
    ///外部存在标志
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int OutsideExistenceFlag {
      get { if ((_hasBits0 & 8192) != 0) { return outsideExistenceFlag_; } else { return OutsideExistenceFlagDefaultValue; } }
      set {
        _hasBits0 |= 8192;
        outsideExistenceFlag_ = value;
      }
    }
    /// <summary>Gets whether the "OutsideExistenceFlag" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasOutsideExistenceFlag {
      get { return (_hasBits0 & 8192) != 0; }
    }
    /// <summary>Clears the value of the "OutsideExistenceFlag" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearOutsideExistenceFlag() {
      _hasBits0 &= ~8192;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as singlechip_data);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(singlechip_data other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (TerminalID != other.TerminalID) return false;
      if (DispatchDirection != other.DispatchDirection) return false;
      if (ProcessStatus != other.ProcessStatus) return false;
      if (!object.Equals(InPutDi, other.InPutDi)) return false;
      if (ResetFlag != other.ResetFlag) return false;
      if (ProcessControl != other.ProcessControl) return false;
      if (InsideExistenceFlag != other.InsideExistenceFlag) return false;
      if (OverBorderStatus != other.OverBorderStatus) return false;
      if (CarHeightStatusCurrent != other.CarHeightStatusCurrent) return false;
      if (CarHeightStatusPassing != other.CarHeightStatusPassing) return false;
      if (StopFlag != other.StopFlag) return false;
      if (OutsideDoorStatus != other.OutsideDoorStatus) return false;
      if (OutsideDoorControl != other.OutsideDoorControl) return false;
      if (DispatchFinishFlag != other.DispatchFinishFlag) return false;
      if (OutsideExistenceFlag != other.OutsideExistenceFlag) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (HasTerminalID) hash ^= TerminalID.GetHashCode();
      if (HasDispatchDirection) hash ^= DispatchDirection.GetHashCode();
      if (HasProcessStatus) hash ^= ProcessStatus.GetHashCode();
      if (inPutDi_ != null) hash ^= InPutDi.GetHashCode();
      if (HasResetFlag) hash ^= ResetFlag.GetHashCode();
      if (HasProcessControl) hash ^= ProcessControl.GetHashCode();
      if (HasInsideExistenceFlag) hash ^= InsideExistenceFlag.GetHashCode();
      if (HasOverBorderStatus) hash ^= OverBorderStatus.GetHashCode();
      if (HasCarHeightStatusCurrent) hash ^= CarHeightStatusCurrent.GetHashCode();
      if (HasCarHeightStatusPassing) hash ^= CarHeightStatusPassing.GetHashCode();
      if (HasStopFlag) hash ^= StopFlag.GetHashCode();
      if (HasOutsideDoorStatus) hash ^= OutsideDoorStatus.GetHashCode();
      if (HasOutsideDoorControl) hash ^= OutsideDoorControl.GetHashCode();
      if (HasDispatchFinishFlag) hash ^= DispatchFinishFlag.GetHashCode();
      if (HasOutsideExistenceFlag) hash ^= OutsideExistenceFlag.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HasTerminalID) {
        output.WriteRawTag(8);
        output.WriteInt32(TerminalID);
      }
      if (HasDispatchDirection) {
        output.WriteRawTag(16);
        output.WriteInt32(DispatchDirection);
      }
      if (HasProcessStatus) {
        output.WriteRawTag(24);
        output.WriteEnum((int) ProcessStatus);
      }
      if (inPutDi_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(InPutDi);
      }
      if (HasResetFlag) {
        output.WriteRawTag(40);
        output.WriteInt32(ResetFlag);
      }
      if (HasProcessControl) {
        output.WriteRawTag(48);
        output.WriteEnum((int) ProcessControl);
      }
      if (HasInsideExistenceFlag) {
        output.WriteRawTag(56);
        output.WriteInt32(InsideExistenceFlag);
      }
      if (HasOverBorderStatus) {
        output.WriteRawTag(64);
        output.WriteEnum((int) OverBorderStatus);
      }
      if (HasCarHeightStatusCurrent) {
        output.WriteRawTag(72);
        output.WriteInt32(CarHeightStatusCurrent);
      }
      if (HasCarHeightStatusPassing) {
        output.WriteRawTag(80);
        output.WriteEnum((int) CarHeightStatusPassing);
      }
      if (HasStopFlag) {
        output.WriteRawTag(88);
        output.WriteInt32(StopFlag);
      }
      if (HasOutsideDoorStatus) {
        output.WriteRawTag(96);
        output.WriteEnum((int) OutsideDoorStatus);
      }
      if (HasOutsideDoorControl) {
        output.WriteRawTag(104);
        output.WriteEnum((int) OutsideDoorControl);
      }
      if (HasDispatchFinishFlag) {
        output.WriteRawTag(112);
        output.WriteInt32(DispatchFinishFlag);
      }
      if (HasOutsideExistenceFlag) {
        output.WriteRawTag(120);
        output.WriteInt32(OutsideExistenceFlag);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HasTerminalID) {
        output.WriteRawTag(8);
        output.WriteInt32(TerminalID);
      }
      if (HasDispatchDirection) {
        output.WriteRawTag(16);
        output.WriteInt32(DispatchDirection);
      }
      if (HasProcessStatus) {
        output.WriteRawTag(24);
        output.WriteEnum((int) ProcessStatus);
      }
      if (inPutDi_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(InPutDi);
      }
      if (HasResetFlag) {
        output.WriteRawTag(40);
        output.WriteInt32(ResetFlag);
      }
      if (HasProcessControl) {
        output.WriteRawTag(48);
        output.WriteEnum((int) ProcessControl);
      }
      if (HasInsideExistenceFlag) {
        output.WriteRawTag(56);
        output.WriteInt32(InsideExistenceFlag);
      }
      if (HasOverBorderStatus) {
        output.WriteRawTag(64);
        output.WriteEnum((int) OverBorderStatus);
      }
      if (HasCarHeightStatusCurrent) {
        output.WriteRawTag(72);
        output.WriteInt32(CarHeightStatusCurrent);
      }
      if (HasCarHeightStatusPassing) {
        output.WriteRawTag(80);
        output.WriteEnum((int) CarHeightStatusPassing);
      }
      if (HasStopFlag) {
        output.WriteRawTag(88);
        output.WriteInt32(StopFlag);
      }
      if (HasOutsideDoorStatus) {
        output.WriteRawTag(96);
        output.WriteEnum((int) OutsideDoorStatus);
      }
      if (HasOutsideDoorControl) {
        output.WriteRawTag(104);
        output.WriteEnum((int) OutsideDoorControl);
      }
      if (HasDispatchFinishFlag) {
        output.WriteRawTag(112);
        output.WriteInt32(DispatchFinishFlag);
      }
      if (HasOutsideExistenceFlag) {
        output.WriteRawTag(120);
        output.WriteInt32(OutsideExistenceFlag);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (HasTerminalID) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TerminalID);
      }
      if (HasDispatchDirection) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DispatchDirection);
      }
      if (HasProcessStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ProcessStatus);
      }
      if (inPutDi_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InPutDi);
      }
      if (HasResetFlag) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ResetFlag);
      }
      if (HasProcessControl) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ProcessControl);
      }
      if (HasInsideExistenceFlag) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(InsideExistenceFlag);
      }
      if (HasOverBorderStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OverBorderStatus);
      }
      if (HasCarHeightStatusCurrent) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CarHeightStatusCurrent);
      }
      if (HasCarHeightStatusPassing) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) CarHeightStatusPassing);
      }
      if (HasStopFlag) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(StopFlag);
      }
      if (HasOutsideDoorStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OutsideDoorStatus);
      }
      if (HasOutsideDoorControl) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OutsideDoorControl);
      }
      if (HasDispatchFinishFlag) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(DispatchFinishFlag);
      }
      if (HasOutsideExistenceFlag) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(OutsideExistenceFlag);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(singlechip_data other) {
      if (other == null) {
        return;
      }
      if (other.HasTerminalID) {
        TerminalID = other.TerminalID;
      }
      if (other.HasDispatchDirection) {
        DispatchDirection = other.DispatchDirection;
      }
      if (other.HasProcessStatus) {
        ProcessStatus = other.ProcessStatus;
      }
      if (other.inPutDi_ != null) {
        if (inPutDi_ == null) {
          InPutDi = new global::Message.InputDi();
        }
        InPutDi.MergeFrom(other.InPutDi);
      }
      if (other.HasResetFlag) {
        ResetFlag = other.ResetFlag;
      }
      if (other.HasProcessControl) {
        ProcessControl = other.ProcessControl;
      }
      if (other.HasInsideExistenceFlag) {
        InsideExistenceFlag = other.InsideExistenceFlag;
      }
      if (other.HasOverBorderStatus) {
        OverBorderStatus = other.OverBorderStatus;
      }
      if (other.HasCarHeightStatusCurrent) {
        CarHeightStatusCurrent = other.CarHeightStatusCurrent;
      }
      if (other.HasCarHeightStatusPassing) {
        CarHeightStatusPassing = other.CarHeightStatusPassing;
      }
      if (other.HasStopFlag) {
        StopFlag = other.StopFlag;
      }
      if (other.HasOutsideDoorStatus) {
        OutsideDoorStatus = other.OutsideDoorStatus;
      }
      if (other.HasOutsideDoorControl) {
        OutsideDoorControl = other.OutsideDoorControl;
      }
      if (other.HasDispatchFinishFlag) {
        DispatchFinishFlag = other.DispatchFinishFlag;
      }
      if (other.HasOutsideExistenceFlag) {
        OutsideExistenceFlag = other.OutsideExistenceFlag;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            TerminalID = input.ReadInt32();
            break;
          }
          case 16: {
            DispatchDirection = input.ReadInt32();
            break;
          }
          case 24: {
            ProcessStatus = (global::Message.Process_status) input.ReadEnum();
            break;
          }
          case 34: {
            if (inPutDi_ == null) {
              InPutDi = new global::Message.InputDi();
            }
            input.ReadMessage(InPutDi);
            break;
          }
          case 40: {
            ResetFlag = input.ReadInt32();
            break;
          }
          case 48: {
            ProcessControl = (global::Message.Process_control) input.ReadEnum();
            break;
          }
          case 56: {
            InsideExistenceFlag = input.ReadInt32();
            break;
          }
          case 64: {
            OverBorderStatus = (global::Message.Over_border_status) input.ReadEnum();
            break;
          }
          case 72: {
            CarHeightStatusCurrent = input.ReadInt32();
            break;
          }
          case 80: {
            CarHeightStatusPassing = (global::Message.Car_height_status) input.ReadEnum();
            break;
          }
          case 88: {
            StopFlag = input.ReadInt32();
            break;
          }
          case 96: {
            OutsideDoorStatus = (global::Message.Outside_door_status) input.ReadEnum();
            break;
          }
          case 104: {
            OutsideDoorControl = (global::Message.Outside_door_control) input.ReadEnum();
            break;
          }
          case 112: {
            DispatchFinishFlag = input.ReadInt32();
            break;
          }
          case 120: {
            OutsideExistenceFlag = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            TerminalID = input.ReadInt32();
            break;
          }
          case 16: {
            DispatchDirection = input.ReadInt32();
            break;
          }
          case 24: {
            ProcessStatus = (global::Message.Process_status) input.ReadEnum();
            break;
          }
          case 34: {
            if (inPutDi_ == null) {
              InPutDi = new global::Message.InputDi();
            }
            input.ReadMessage(InPutDi);
            break;
          }
          case 40: {
            ResetFlag = input.ReadInt32();
            break;
          }
          case 48: {
            ProcessControl = (global::Message.Process_control) input.ReadEnum();
            break;
          }
          case 56: {
            InsideExistenceFlag = input.ReadInt32();
            break;
          }
          case 64: {
            OverBorderStatus = (global::Message.Over_border_status) input.ReadEnum();
            break;
          }
          case 72: {
            CarHeightStatusCurrent = input.ReadInt32();
            break;
          }
          case 80: {
            CarHeightStatusPassing = (global::Message.Car_height_status) input.ReadEnum();
            break;
          }
          case 88: {
            StopFlag = input.ReadInt32();
            break;
          }
          case 96: {
            OutsideDoorStatus = (global::Message.Outside_door_status) input.ReadEnum();
            break;
          }
          case 104: {
            OutsideDoorControl = (global::Message.Outside_door_control) input.ReadEnum();
            break;
          }
          case 112: {
            DispatchFinishFlag = input.ReadInt32();
            break;
          }
          case 120: {
            OutsideExistenceFlag = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///终端状态消息
  /// </summary>
  public sealed partial class terminal_status_msg : pb::IMessage<terminal_status_msg>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<terminal_status_msg> _parser = new pb::MessageParser<terminal_status_msg>(() => new terminal_status_msg());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<terminal_status_msg> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.SinglechipMsgReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public terminal_status_msg() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public terminal_status_msg(terminal_status_msg other) : this() {
      baseInfo_ = other.baseInfo_ != null ? other.baseInfo_.Clone() : null;
      idStruct_ = other.idStruct_ != null ? other.idStruct_.Clone() : null;
      singlechipData_ = other.singlechipData_ != null ? other.singlechipData_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public terminal_status_msg Clone() {
      return new terminal_status_msg(this);
    }

    /// <summary>Field number for the "base_info" field.</summary>
    public const int BaseInfoFieldNumber = 1;
    private global::Message.Base_info baseInfo_;
    /// <summary>
    ///消息类型 
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Base_info BaseInfo {
      get { return baseInfo_; }
      set {
        baseInfo_ = value;
      }
    }

    /// <summary>Field number for the "id_struct" field.</summary>
    public const int IdStructFieldNumber = 2;
    private global::Message.Id_struct idStruct_;
    /// <summary>
    ///终端号
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Id_struct IdStruct {
      get { return idStruct_; }
      set {
        idStruct_ = value;
      }
    }

    /// <summary>Field number for the "singlechipData" field.</summary>
    public const int SinglechipDataFieldNumber = 3;
    private global::Message.singlechip_data singlechipData_;
    /// <summary>
    ///单片机的数据
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.singlechip_data SinglechipData {
      get { return singlechipData_; }
      set {
        singlechipData_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as terminal_status_msg);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(terminal_status_msg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(BaseInfo, other.BaseInfo)) return false;
      if (!object.Equals(IdStruct, other.IdStruct)) return false;
      if (!object.Equals(SinglechipData, other.SinglechipData)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (baseInfo_ != null) hash ^= BaseInfo.GetHashCode();
      if (idStruct_ != null) hash ^= IdStruct.GetHashCode();
      if (singlechipData_ != null) hash ^= SinglechipData.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (idStruct_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(IdStruct);
      }
      if (singlechipData_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SinglechipData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (idStruct_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(IdStruct);
      }
      if (singlechipData_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(SinglechipData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (baseInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BaseInfo);
      }
      if (idStruct_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(IdStruct);
      }
      if (singlechipData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SinglechipData);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(terminal_status_msg other) {
      if (other == null) {
        return;
      }
      if (other.baseInfo_ != null) {
        if (baseInfo_ == null) {
          BaseInfo = new global::Message.Base_info();
        }
        BaseInfo.MergeFrom(other.BaseInfo);
      }
      if (other.idStruct_ != null) {
        if (idStruct_ == null) {
          IdStruct = new global::Message.Id_struct();
        }
        IdStruct.MergeFrom(other.IdStruct);
      }
      if (other.singlechipData_ != null) {
        if (singlechipData_ == null) {
          SinglechipData = new global::Message.singlechip_data();
        }
        SinglechipData.MergeFrom(other.SinglechipData);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (baseInfo_ == null) {
              BaseInfo = new global::Message.Base_info();
            }
            input.ReadMessage(BaseInfo);
            break;
          }
          case 18: {
            if (idStruct_ == null) {
              IdStruct = new global::Message.Id_struct();
            }
            input.ReadMessage(IdStruct);
            break;
          }
          case 26: {
            if (singlechipData_ == null) {
              SinglechipData = new global::Message.singlechip_data();
            }
            input.ReadMessage(SinglechipData);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (baseInfo_ == null) {
              BaseInfo = new global::Message.Base_info();
            }
            input.ReadMessage(BaseInfo);
            break;
          }
          case 18: {
            if (idStruct_ == null) {
              IdStruct = new global::Message.Id_struct();
            }
            input.ReadMessage(IdStruct);
            break;
          }
          case 26: {
            if (singlechipData_ == null) {
              SinglechipData = new global::Message.singlechip_data();
            }
            input.ReadMessage(SinglechipData);
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
