VB.NET Structures and Union Help.

mavromatis

Member
Joined
Feb 7, 2006
Messages
19
Programming Experience
1-3
I have a chunk of VC.NET code (below) that I need to convert to VB.NET syntax. Could someone help me get started? I'm new to structures and unions and I don't understand how to nest them in VB.NET. Ideally, I'd like to see an example using the code I have below, so I it can start me off or is there a better way to handle this type of structure in VB.NET?

VB.NET:
' ----- VC.NET CODE THAT I NEED TO CONVERT TO VB.NET ----
 
struct R_OMNI_LINK_MESSAGE {
  //unsigned char StartChar;
  unsigned char MessageLength;
  union {
    unsigned char Data[255];
    struct {
      unsigned char MessageType;
      union {
        struct /* olmNAME_DATA (8 bit) */ {
          unsigned char ItemType8;
          unsigned char ItemNumber8;
          unsigned char ItemName8[16];
        };
        struct /* olmNAME_DATA (16 bit) */ {
          unsigned char ItemType16;
          unsigned char ItemNumber16MSB;
          unsigned char ItemNumber16LSB;
          unsigned char ItemName16[16];
        };
        struct /* olmEVENT_LOG_DATA */ {
          unsigned char EventNumber;  // (1-N, With 1 Being Most Recent)
          unsigned char EventTimeDateValid;
          unsigned char EventMonth;  // (1-12)
          unsigned char EventDay;  // (1-31)
          unsigned char EventHour;  // (0-23)
          unsigned char EventMinute;  // (0-59)
          unsigned char EventType;
          unsigned char EventParameter1;
          unsigned char EventParameter2High;
          unsigned char EventParameter2Low;
        };
        struct /* olmCOMMAND_MESSAGE */ {
          unsigned char Command;
          unsigned char Parameter1;
          unsigned char Parameter2High;
          unsigned char Parameter2Low;
        };
        struct /* olmSET_TIME */ {
          unsigned char stYear;
          unsigned char stMonth;
          unsigned char stDay;
          unsigned char stDOW;
          unsigned char stHour;
          unsigned char stMinute;
          unsigned char stDST;
        };
        struct /* olmSYSTEM_INFORMATION */ {
          unsigned char ModelNumber;
          unsigned char MajorVersion;
          unsigned char MinorVersion;
          unsigned char Revision;
          unsigned char LocalPhoneNumber[25];
        };
        struct /* olmSYSTEM_STATUS */ {
          unsigned char TimeDateValidFlag;
          unsigned char Year;  // (0-99)
          unsigned char Month;  // (1-12)
          unsigned char Day;  // (1-31)
          unsigned char DayOfWeek;  // (1-7)
          unsigned char Hour;  // (0-23)
          unsigned char Minute;  // (0-59)
          unsigned char Second;  // (0-59)
          unsigned char DaylightSavingsTimeFlag;
          unsigned char CalculatedSunriseHour;  // (0-23)
          unsigned char CalculatedSunriseMinute;  // (0-59)
          unsigned char CalculatedSunsetHour;  // (0-23)
          unsigned char CalculatedSunsetMinute;  // (0-59)
          unsigned char BatteryReading;
          unsigned char AreaSecurityMode[8];  // index 0-7
          struct {
            unsigned char Status;
            unsigned char BatteryReading;
          } ExpansionEnclosure[8];  // index 0-7
        };
        struct /* olmREQUEST_ZONE_STATUS */ {
          unsigned char StartingZone;
          unsigned char EndingZone;
        };
        struct /* olmZONE_STATUS */ {
          unsigned char ZoneStatus;
          unsigned char AnalogLoopReading;
        } Zone[127];
        struct /* olmREQUEST_UNIT_STATUS (8 bit) */ {
          unsigned char StartingUnit;
          unsigned char EndingUnit;
        };
        struct /* olmREQUEST_UNIT_STATUS (16 bit) */ {
          unsigned char StartingUnitMSB;
          unsigned char StartingUnitLSB;
          unsigned char EndingUnitMSB;
          unsigned char EndingUnitLSB;
        };
        struct /* olmUNIT_STATUS */ {
          unsigned char CurrentCondition;
          unsigned char HighByteOfTime;
          unsigned char LowByteOfTime;
        } Unit[84];
        struct /* olmREQUEST_AUXILIARY_STATUS */ {
          unsigned char StartingTemperatureSensor;
          unsigned char EndingTemperatureSensor;
        };
        struct /* olmAUXILIARY_STATUS */ {
          unsigned char RelayStatus;
          unsigned char CurrentTemperature;
          unsigned char LowHeatTemperatureSetpoint;
          unsigned char HighCoolTemperatureSetpoint;
        } TempSensor[63];
        struct /* olmREQUEST_THERMOSTAT_STATUS */ {
          unsigned char StartingThermostat;
          unsigned char EndingThermostat;
        };
        struct /* olmTHERMOSTAT_STATUS */ {
          unsigned char StatusByte;
          unsigned char CurrentTemperature;
          unsigned char HeatSetpoint;
          unsigned char CoolSetpoint;
          unsigned char SystemMode;
          unsigned char FanMode;
          unsigned char HoldStatus;
        } Thermostat[36];
        struct /* olmLOGIN */ {
          unsigned char LoginCode1;
          unsigned char LoginCode2;
          unsigned char LoginCode3;
          unsigned char LoginCode4;
        };
        struct /* olmSYSTEM_EVENTS */ {
          unsigned char High;
          unsigned char Low;
        } SystemEvent[127];
        struct /* olmMESSAGE_STATUS */ {
          unsigned char Data;
        } MessageStatus[33];
        struct /* olmREQUEST_SECURITY_CODE_VALIDATION */ {
          unsigned char AreaNumber;  // (1-8)
          unsigned char Code1;  // First Digit Of Code
          unsigned char Code2;  // Second Digit Of Code
          unsigned char Code3;  // Third Digit Of Code
          unsigned char Code4;  // Fourth Digit Of Code
        };
        struct /* olmSECURITY_CODE_VALIDATION */ {
          unsigned char UserCodeNumber;  // (1-99, 251 for duress, 0 if 
invalid)
          unsigned char AuthorityLevel; 
//(0=Invalid,1=Master,2=Manager,3=User)
        };
      };  // union
    };  // struct
  }; // union
};

Thanks,
Danny
 
Last edited:
Back
Top